# Lookup Tables to convert INITIALKEY according to Camelot wheel

**URL:** https://community.mp3tag.de/t/lookup-tables-to-convert-initialkey-according-to-camelot-wheel/64461
**Category:** Support
**Created:** [April 20, 2024, 5:43pm UTC](https://community.mp3tag.de/t/lookup-tables-to-convert-initialkey-according-to-camelot-wheel/64461 "2024-04-20T17:43:39Z")
**Posts on this page:** 18
**Page:** 1

<div class="post-metadata">

### Author: ![ianwat](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/i/7993a0/32.png) [@ianwat](https://community.mp3tag.de/u/ianwat)
#### Post date: [April 20, 2024, 5:43pm UTC](https://community.mp3tag.de/t/lookup-tables-to-convert-initialkey-according-to-camelot-wheel/64461/1 "2024-04-20T17:43:39Z")

</div>

So I regularly use DJ software that analyses Keys.

Some display as Bm/C#m etc some as Camelot. 1A 2A 12A etc.

It would be very useful to have a look up feature that says.

If I see 1 replace with a, 2 with b etc. As we could build some really powerful tagging with that.

---

<div class="post-metadata">

### Author: ![LyricsLover](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/l/c6cbf5/32.png) [@LyricsLover](https://community.mp3tag.de/u/LyricsLover)
#### Post date: [April 20, 2024, 5:57pm UTC](https://community.mp3tag.de/t/lookup-tables-to-convert-initialkey-according-to-camelot-wheel/64461/2 "2024-04-20T17:57:42Z")

</div>

You can try to use the command  
`$replace`  
with parameter pairs.

Please have a look at the documentation:

 ![image](https://community.mp3tag.de/uploads/default/original/3X/9/2/9255e4a47ee4017b5851220cae0f0de594f52d25.png)

---

<div class="post-metadata">

### Author: ![anon32189785](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/a/45deac/32.png) [@anon32189785](https://community.mp3tag.de/u/anon32189785)
#### Post date: [April 21, 2024, 5:27am UTC](https://community.mp3tag.de/t/lookup-tables-to-convert-initialkey-according-to-camelot-wheel/64461/3 "2024-04-21T05:27:52Z")

</div>

You can find a perfect example for the replacement function here:

![replace-a-with-b-001](https://community.mp3tag.de/uploads/default/original/3X/8/d/8dd07b2d25331dfc7a77333d01c1aa5f4c645bd9.jpeg)

Left-click on it or use [ALT]+[6] and get:

![replace-a-with-b-002](https://community.mp3tag.de/uploads/default/original/3X/9/6/96e74bd3b7af9de5f8f551af8e0e25e2c432845c.jpeg)

The CD-R action checks filenames. Select the row (you needn't click the checkbox) and choose EDIT to get

![replace-a-with-b-003](https://community.mp3tag.de/uploads/default/original/3X/f/c/fcd4727c510d8a2d9089d5c29406c95257377a82.jpeg)

This Action replace the German umlauts with an alternative more international spelling. Create your own replacement table in a similar way 🙂 (copy the action and start fiddling with it?)

---

<div class="post-metadata">

### Author: ![LyricsLover](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/l/c6cbf5/32.png) [@LyricsLover](https://community.mp3tag.de/u/LyricsLover)
#### Post date: [April 21, 2024, 7:44am UTC](https://community.mp3tag.de/t/lookup-tables-to-convert-initialkey-according-to-camelot-wheel/64461/4 "2024-04-21T07:44:29Z")

</div>

Nice (official/default) example.

Your 12 visible single Replace-Actions could be applied with 1 "Format Value"-Action for the Field \_FILENAME:  
`$replace(%_FILENAME%,ä,ae,ö,oe,ü,ue,Ä,Ae,Ö,Oe,Ü,Ue,é,e,è,e,ê,e,',',_,'(',_)`  
Up to 30 parameter pairs are possible in one `$replace` command.

I assume, the other french characters like à or â, î, ô, û or ë, ï, ü are listed in the not visible part of your screenshot?

---

<div class="post-metadata">

### Author: ![anon32189785](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/a/45deac/32.png) [@anon32189785](https://community.mp3tag.de/u/anon32189785)
#### Post date: [April 21, 2024, 12:23pm UTC](https://community.mp3tag.de/t/lookup-tables-to-convert-initialkey-according-to-camelot-wheel/64461/5 "2024-04-21T12:23:46Z")

</div>

Just wanted to give an example as to what and how can be done. I've rearranged a whole music (classical) library from English "b-minor" to German "h-moll" asf. It's a powerful tool and wants to be tested on files truly backed up.

The example is from the original official release. I did not create it. But I learned from it 😉

---

<div class="post-metadata">

### Author: ![ohrenkino](https://community.mp3tag.de/user_avatar/community.mp3tag.de/ohrenkino/32/4843_2.png) [@ohrenkino](https://community.mp3tag.de/u/ohrenkino)
#### Post date: [April 21, 2024, 3:40pm UTC](https://community.mp3tag.de/t/lookup-tables-to-convert-initialkey-according-to-camelot-wheel/64461/6 "2024-04-21T15:40:40Z")

</div>

> [@ianwat](#):
>
> Camelot. 1A 2A 12A etc.

> [@LyricsLover](#):
>
> You can try to use the command  
> `$replace`

Please note that the $replace() function runs the pairs sequentially and executes the first hit.  
So a $replace(%field%,1,a,2,b,12,l) would lead to  
abA for 12A  
You would have to start with the longest number to get it right:  
e.g.  
$replace(%field%,12,l,1,a,2,b)

---

<div class="post-metadata">

### Author: ![ohrenkino](https://community.mp3tag.de/user_avatar/community.mp3tag.de/ohrenkino/32/4843_2.png) [@ohrenkino](https://community.mp3tag.de/u/ohrenkino)
#### Post date: [April 24, 2024, 7:10am UTC](https://community.mp3tag.de/t/lookup-tables-to-convert-initialkey-according-to-camelot-wheel/64461/7 "2024-04-24T07:10:56Z")

</div>

To set an `a` instead of 1, you could also use:  
`$replace(1A,$num(1A,1),$char($add($num(1A,1),96)))`  
which takes only the number from e.g. 1A and transforms it into a.  
Instead of 1A enter the fieldname into the expression.

---

<div class="post-metadata">

### Author: ![LyricsLover](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/l/c6cbf5/32.png) [@LyricsLover](https://community.mp3tag.de/u/LyricsLover)
#### Post date: [April 24, 2024, 7:43am UTC](https://community.mp3tag.de/t/lookup-tables-to-convert-initialkey-according-to-camelot-wheel/64461/8 "2024-04-24T07:43:30Z")

</div>

@ianwat  
Could you please tell us what exactly do you want to replace, maybe with some real current/new examples?

Do you speak about this Camelot wheel?

 ![Camelot Wheel](https://community.mp3tag.de/uploads/default/original/3X/4/6/46e5281085a35e3a0c8c095bea890860b6fdf268.jpeg)

Do you want to replace `6B` with `B-Flat Major`?  
Or do you want to replace `7B` with `F♯ major`?  
Or something else?

---

<div class="post-metadata">

### Author: ![ianwat](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/i/7993a0/32.png) [@ianwat](https://community.mp3tag.de/u/ianwat)
#### Post date: [April 26, 2024, 1:25pm UTC](https://community.mp3tag.de/t/lookup-tables-to-convert-initialkey-according-to-camelot-wheel/64461/9 "2024-04-26T13:25:36Z")

</div>

Apologies for the delayed reply work has been very busy this week.

Yes, that's exactly it.

If a DJ has a problem, we ideally want some key information in the file to help us mix.

Example is this.

Dooleys - Wanted (DJB) - 11A - 123 BPM - 1979

Artist - Title (Remix) Key bpm year.

So if the dj machine has a problem, we can see from the filename, that this is 123 bpm and key 11a, so I then find a track that is similar bpm - 119-127 and either same key 11a, or 11b or 10a or 12a

The problem is, some dj software changes this.

6A to Gm for example. Which means if I every need to batch rename the files, they are renamed

Dooleys - Wanted (DJB) - F#m - 123 BPM - 1979 which then causes a duplicate file.

So what I want to be able to do is always change them over.

That way I don't have to use a harmonic tag, which is what I'm doing. but just convert if I see a problem.

---

<div class="post-metadata">

### Author: ![LyricsLover](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/l/c6cbf5/32.png) [@LyricsLover](https://community.mp3tag.de/u/LyricsLover)
#### Post date: [April 26, 2024, 1:50pm UTC](https://community.mp3tag.de/t/lookup-tables-to-convert-initialkey-according-to-camelot-wheel/64461/10 "2024-04-26T13:50:46Z")

</div>

If you want to be able to change back from the filename  
`Dooleys - Wanted (DJB) - F#m - 123 BPM - 1979`  
to the new filename  
`Dooleys - Wanted (DJB) - 11A - 123 BPM - 1979`

then you can use the mentioned  
`$replace(%_FILENAME%,F#m,11A)`

and expand it to all the possible keys and parameter pairs like this  
`$replace(%_FILENAME%,F#m,11A,Gm,6A)`  
and so on...

---

<div class="post-metadata">

### Author: ![ianwat](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/i/7993a0/32.png) [@ianwat](https://community.mp3tag.de/u/ianwat)
#### Post date: [April 26, 2024, 2:16pm UTC](https://community.mp3tag.de/t/lookup-tables-to-convert-initialkey-according-to-camelot-wheel/64461/11 "2024-04-26T14:16:09Z")

</div>

It's mainly the inital\_key\_field I want to change - so it's consitent, but I can build a replace table, up, just wondered if there was an easier/more elegant way of doing it.

Cheers for all the help.

---

<div class="post-metadata">

### Author: ![LyricsLover](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/l/c6cbf5/32.png) [@LyricsLover](https://community.mp3tag.de/u/LyricsLover)
#### Post date: [April 26, 2024, 2:18pm UTC](https://community.mp3tag.de/t/lookup-tables-to-convert-initialkey-according-to-camelot-wheel/64461/12 "2024-04-26T14:18:04Z")

</div>

Then just change the FIELDNAME to whatever you like to change:  
`$replace(%INITIALKEY%,F#m,11A,Gm,6A)`

---

<div class="post-metadata">

### Author: ![ianwat](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/i/7993a0/32.png) [@ianwat](https://community.mp3tag.de/u/ianwat)
#### Post date: [May 2, 2024, 12:49pm UTC](https://community.mp3tag.de/t/lookup-tables-to-convert-initialkey-according-to-camelot-wheel/64461/13 "2024-05-02T12:49:27Z")

</div>

Once I've produced this action, what's the best way of sharing it, so anyone else with the same issue can use it?

---

<div class="post-metadata">

### Author: ![LyricsLover](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/l/c6cbf5/32.png) [@LyricsLover](https://community.mp3tag.de/u/LyricsLover)
#### Post date: [May 2, 2024, 1:10pm UTC](https://community.mp3tag.de/t/lookup-tables-to-convert-initialkey-according-to-camelot-wheel/64461/14 "2024-05-02T13:10:05Z")

</div>

I suggest to create a screenshot from your Action (to see the type of Action) and the format string.  
[Example](https://community.mp3tag.de/t/case-convertion-match-a-unless-followed-by-a-major-or-minor/64555/9)

Please copy & paste the format string or regular expression separately\*, so that future user don't have to type it from your screenshot.

\* Enclose the format string or regular expression in backticks `format string backticks` to ensure that all special characters remain untouched from the forum software. You can also mark the `format string` and then press CTRL +e. That creates the backticks automatically around the marked text.

---

<div class="post-metadata">

### Author: ![ianwat](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/i/7993a0/32.png) [@ianwat](https://community.mp3tag.de/u/ianwat)
#### Post date: [May 2, 2024, 3:50pm UTC](https://community.mp3tag.de/t/lookup-tables-to-convert-initialkey-according-to-camelot-wheel/64461/15 "2024-05-02T15:50:09Z")

</div>

Ah so there is no way of sharing the whole action as it's quite a lot of repeated replaces

---

<div class="post-metadata">

### Author: ![ohrenkino](https://community.mp3tag.de/user_avatar/community.mp3tag.de/ohrenkino/32/4843_2.png) [@ohrenkino](https://community.mp3tag.de/u/ohrenkino)
#### Post date: [May 2, 2024, 3:54pm UTC](https://community.mp3tag.de/t/lookup-tables-to-convert-initialkey-according-to-camelot-wheel/64461/16 "2024-05-02T15:54:58Z")

</div>

Did you know that you can use the scripting function $replace() which allows up to 32 pairs of search and replace parameters?  
Use that in an action that allows a format string, e.g. "Format value".

---

<div class="post-metadata">

### Author: ![ohrenkino](https://community.mp3tag.de/user_avatar/community.mp3tag.de/ohrenkino/32/4843_2.png) [@ohrenkino](https://community.mp3tag.de/u/ohrenkino)
#### Post date: [May 2, 2024, 3:58pm UTC](https://community.mp3tag.de/t/lookup-tables-to-convert-initialkey-according-to-camelot-wheel/64461/17 "2024-05-02T15:58:13Z")

</div>

You could open the configuration folder and get the action file from the folder data\actions and upload it to a thread.

---

<div class="post-metadata">

### Author: ![system](https://community.mp3tag.de/uploads/default/original/2X/c/ce7035d426cb755a7916793326d23b465222a407.png) [@system](https://community.mp3tag.de/u/system)
#### Post date: [June 1, 2024, 3:58pm UTC](https://community.mp3tag.de/t/lookup-tables-to-convert-initialkey-according-to-camelot-wheel/64461/18 "2024-06-01T15:58:27Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
