Sorteren in iTunes. Het lijkt eenvoudig. Gewoon klikken op een kolomkop, en je sorteert je complete muziekbibliotheek op die kolom. Werkt uitstekend. Dat wil zeggen… Het lijkt uitstekend te werken.
Het probleem.
Als de naam van een nummer/artiest/album begint met “A”, “An” of “The”, dan sorteert iTunes op het eerste woord daarná. En dat vind ik irritant.
Twee voorbeelden…
Als ik sorteer op bandnaam, dan verwacht ik dat “A tribe called Quest” bij de A gesorteerd staat. Niet bij de T.
Als ik sorteer op titel, dan verwacht ik dat “The sound of winter” van Bush bij de T staat. Niet bij de S.
Gelukkig is hier een eenvoudige oplossing voor. Je kunt de automatisch gekozen sorteernaam namelijk aanpassen.

Het simpelweg leegmaken van de sorteervelden werkt helaas niet. iTunes zet dan stiekem de zelfgekozen sorteernaam terug.
Dus in bovenstaand geval; voeg een “A” toe bij “Artiestsortering” en “Albumartiestsortering”, en je bent klaar.
Lijkt een goede oplossing. Maar wat te doen als je duizenden en duizenden nummers in iTunes hebt staan? Maak je dan een interactieve playlist voor alles dat begint met “A”, en ga je die tracks dan allemaal handmatig aanpassen? En daarna hetzelfde voor “The” en “An”? Lijkt mij niet. Ik in ieder geval niet.
De oplossing (deel 1).
Er blijkt een iTunes-configuratiebestand te bestaan waarin letterlijk omschreven staat welke woorden niet moeten worden meegenomen bij het sorteren, als deze woorden aan het begin van een nummer/artiest/album staan. Dat bestand heet SortPrefixes.plist en is hier te vinden:
OSX:
/Applications/iTunes.app/Contents/Resources/Dutch.lproj/SortPrefixes.plist
Windows 7:
C:\Program Files (x86)\iTunes\iTunes.Resources\nl.lproj\SortPrefixes.plist
Dit is de inhoud van dat bestand:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>SortPrefixes</key> <array> <string>the</string> <string>a</string> <string>an</string> <string>de</string> <string>het</string> <string>een</string> </array> </dict> </plist>
Open het bestand met een text-editor, en haal alles tussen
<array>
en
</array>
weg, en sla het bestand op. Alle muziek die je vanaf dat moment importeert in iTunes zal gewoon op de volledige naam worden gesorteerd.
Ik weet overigens niet of een update van de iTunes-software deze aanpassing terugdraait en je bovenstaande handeling dan dus opnieuw moet uitvoeren. Zodra ik dat wel weet zal ik het hier melden.
[Update (16-12)] Zojuist iTunes (OSX) geüpdate naar versie 10.5.2, en het bestand SortPrefixes.plist is niet aangepast door de update :) [/Update]
Ter info… Ik kon het bestand SortPrefixes.plist in Windows gewoon wijzigen in notepad, maar in OSX moest in als root inloggen in de terminal om het bestand vervolgens via vi aan te kunnen passen.
Maar wat nou als je heel veel muziek in iTunes hebt staan, en je niet de behoefte kunt ontwikkelen om iTunes leeg te gooien en alles opnieuw te importeren? Bovenstaande oplossing werkt immers alleen voor muziek, geimporteerd ná de aanpassing aan het bestand SortPrefixes.plist.
De oplossing (deel 2).
NB. Deze oplossing is OSX-only. Mocht iemand weten hoe hetzelfde te bereiken in Windows 7, dan hoor ik dat graag.
Zoals in de afbeelding hierboven te zien is, is er in iTunes in het sorteervenster (o.a.) een veld “Artiest” en een veld “Artiestsortering” te vinden.
Wat praktisch zou zijn, is als de tekst in het veld “Artiest” (de correcte naam) ook in het veld “Artiestsortering” (de ingekorte naam) komt te staan. Onderstaand AppleScript kan dat bijkans volautomagisch voor je regelen.
Open de AppleScript-editor en plak onderstaande code in een leeg venster van de AppleScript-editor.
property allOptions : {"Song Name", "Artist", "Album", "Album Artist", "Composer", "Genre", "Comments", "Show", "Grouping", "Sort Name", "Sort Album", "Sort Artist", "Sort Album Artist"}
property my_title : "Put This In That"
global thisTag, thatTag, theNewTags, theOriginalTags, yn
tell application "iTunes"
if selection is not {} then -- if tracks are selected...
set sel to selection
set numTracks to (length of sel)
set s to "s"
if numTracks is 1 then set s to ""
display dialog "The data from one tag REPLACES the data in another tag in all the selected tracks, with option to delete data in first tag." & return & return & (numTracks & " track" & s & " selected.") buttons {"Cancel", "Continue"} default button 2 with title my_title giving up after 30
if gave up of result is true then return
my choose_this_tag()
my choose_that_tag()
set yn to (button returned of (display dialog "Delete data in " & thisTag & " afterwards?" buttons {"Yes", "No"} default button 2 with title my_title giving up after 45) is "Yes")
set oldfi to fixed indexing
set fixed indexing to true
repeat with t from 1 to numTracks
tell contents of item t of sel
set theOriginalTags to {get name, get artist, get album, get album artist, get composer, get genre, get comment, get show, get grouping, get sort name, get sort album, get sort artist, get sort album artist}
set theNewTags to theOriginalTags
my do_put()
set {name, artist, album, album artist, composer, genre, comment, show, grouping, sort name, sort album, sort artist, sort album artist} to theNewTags
end tell
end repeat
set fixed indexing to oldfi
else
display dialog "No tracks have been selected." buttons {"Cancel"} default button 1 with icon 0 giving up after 30
end if -- no selection
end tell
to choose_this_tag()
tell application "iTunes"
set n to (choose from list allOptions with prompt ("Select a tag to get data from:") with title my_title)
if n is false then error number -128
set thisTag to (n as text)
end tell
end choose_this_tag
to choose_that_tag()
set o to {}
repeat with t in allOptions
if (t as text) is not thisTag then copy t to end of o
end repeat
tell application "iTunes"
set n to choose from list o with prompt ("Use data from the " & thisTag & " tag to REPLACE data in...") with title my_title
if n is false then error number -128
set thatTag to n as text
end tell
end choose_that_tag
to do_put()
try
repeat with i from 1 to (length of allOptions)
if thisTag is (item i of allOptions) then
set thisTag_sto to (item i of theOriginalTags)
exit repeat
end if
end repeat
repeat with i from 1 to (length of allOptions)
if thatTag is (item i of allOptions) then
set (item i of theNewTags) to thisTag_sto
exit repeat
end if
end repeat
if yn then
repeat with i from 1 to (length of allOptions)
if thisTag is (item i of allOptions) then
set (item i of theNewTags) to ""
exit repeat
end if
end repeat
end if
end try
end do_put
(Dit script is een aangepaste versie van een script van Doug Adams dat hier te vinden is.)
Open iTunes, en selecteer een aantal tracks waarvan je de gegevens (in dit geval “Artiestsortering”) wilt aanpassen.
Ga naar de AppleScript-editor en klik op de knop “Voer uit”.
Je krijgt nu de vraag “Wat is de BRON”. Kies voor “Artist”.

En daarna “Wat is het DOEL”. Kies “Sort Artist”.

Vervolgens krijg je de “Yes/No”-vraag of je na deze tag-kopie-actie de bron-tag (“Artist”) wilt wissen. Het antwoord hierop is uiteraard “No”.
Het script zal nu van de in iTunes geselecteerde nummers de gegevens uit het veld “Artist” kopiëren naar het veld “Sort Artist”. Als de computer daar klaar mee is kan je dezelfde actie nogmaals uitvoeren, maar nu voor bijvoorbeeld “Song Name” en “Sort Name”, enzovoort.
Op deze manier kan je de sorteergegevens van je complete muziekbibliotheek bijwerken, zonder dat je alles opnieuw hoeft te importeren.
Handig :)
Qua credits; “Oplossing deel 1 en 2″ heb ik via discussions.apple.com.