Side 1 av 2 12 SisteSiste
Resultater 1 til 20 av 25
Abonnér på denne tråden
  1. #1
    Hifi Freak marsboer's Avatar
    Ble medlem
    Apr 2010
    Sted
    Akershus
    Innlegg
    3,673
    Tagget i
    0 Innlegg

    Automatisk FLAC til MP3 mirror sync

    Jeg fant ingen gode løsninger for å lage et automatisk oppdatert MP3 mirror av FLAC-biblioteket mitt som også inkluderer mappestruktur og alle metafiler med cover art og tilsvarende, så jeg lagde et script som gjør jobben på en smart og helautomatisk måte slik at dette kan gå raskt og effektivt selv på massive FLAC bibliotek uten interaksjon med brukeren. Scriptet fungerer kun for Linux og er tiltenkt å kjøre direkte på serveren med FLAC-biblioteket. Uansett tenkte jeg at dette kunne være av generell interesse selv om målgruppen sikkert er smal. Informasjon om scriptet finnes her: https://wiki.proikt.com/wiki/index.p...P3_mirror_sync
    Bryston BDA-2 | Bryston BP-17³ | Bryston 4B SST² | PMC Twenty5.24

  2. #2
    Hifi Freak Class's Avatar
    Ble medlem
    Mar 2009
    Sted
    Vestfold
    Innlegg
    2,763
    Tagget i
    0 Innlegg
    Jeg gjorde noe lignende med samme programvare for en tid tilbake da jeg hadde mobil med Android og det var masete med musikken i Apple Lossless.
    Håper noen vil finne det nyttig, takk.
    RME UCX - Novation Bass Station II - NI Maschine 2 - Arturia Beatstep Pro
    Akai LPK - Novation Impulse - Yamaha HS7 - Novation Circuit
    Korg Volca Sample - Logic Pro X - Ableton Live - Mac OS

  3. #3
    Hifi Freak H.R's Avatar
    Ble medlem
    Dec 2008
    Sted
    Jessheim | Ullensaker
    Innlegg
    6,336
    Tagget i
    0 Innlegg
    Nice. Dette er forøvrig innbygget som default i vortexbox. Der er også automatisk flac til ALAC default. Kun å merke checkboxen for hver enkelt.
    ALE OEM Member 001 | Medlem av hornalliansen | Anlegget
    "Arguing with idiots is like playing chess with a pigeon. No matter how good you are,
    the bird is going to shit on the board and strut around like it's won anyway."

  4. #4
    Hifi Freak marsboer's Avatar
    Ble medlem
    Apr 2010
    Sted
    Akershus
    Innlegg
    3,673
    Tagget i
    0 Innlegg
    Da har jeg lagt til en del nødvendig funksjonalitet:

    - Lagt til støtte for de aller fleste tags jeg benytter meg av
    - Lagt til støtte for vorbis sine multi tags, f.eks flere artist/genre/albumartist tags, med id3v2s (ikke like bra) standardiserte metode med ' / ' separator, noe som tolkes korrekt i de fleste ordentlige avspillerprogrammer.
    - Automatisk downmixing av surround opptak til 2 channel vha SoX
    - Automatisk resampling av alt over 44.1kHz til 44.1kHz vha SoX' high quality resamplingsalgoritme (standard 2 ch 44.1kHz filer blir selvsagt ikke resamplet)

    Bortsett fra et par manglende tags av mindre viktig betydning til formålet med mp3-filene (WORK og COMPILATION) og det at jeg ikke har lagt til automatisk kalkulering av replaygain (som jeg ikke benytter meg av uansett) så er dette nå nær perfeksjon for mitt bruk. Jeg skal imidlertid se på disse tingene en dag.
    Bryston BDA-2 | Bryston BP-17³ | Bryston 4B SST² | PMC Twenty5.24

  5. #5
    Moderator bambadoo's Avatar
    Ble medlem
    Oct 2002
    Sted
    Lørenskog
    Innlegg
    17,828
    Tagget i
    2 Innlegg
    Nydelig Marsboer. Kommer til å prøve denne. Har selv "batchet" med foobar for å gjøre dette tidligere men ikke fått det heeeeelt til. Bare 99%

  6. #6
    Hifi Freak marsboer's Avatar
    Ble medlem
    Apr 2010
    Sted
    Akershus
    Innlegg
    3,673
    Tagget i
    0 Innlegg
    Da har jeg ryddet opp skikkelig i tag-mekanismen og jeg har gått over til eyed3 i stedet for id3v2 som verktøy for tagging på grunn av mangler ved sistnevnte. Nå støttes alle tags og jeg har implementert støtte for absolutt alle jeg benytter i mitt bibliotek, både i enkel og multi tag versjoner. Ved hjelp av litt bash-magi med associative arrays (holdt på å skrive om scriptet til python fordi bash tradisjonelt kun støttet endimensjonale arrays, noe som suger til akkurat denne typen jobber) har jeg lagt til to arrays i toppen av scriptet, henholdsvis "tags" og "user_defined_tags", eller "TXXX"-tags på id3-språket. Her kan dere selv legge til vorbis->id3 mappinger og scriptet vil automatisk benytte seg av dem om dere mangler noe fra default oppsettet.

    Æ, Ø og Å er også fullt støttet. Jeg endte opp med id3v2.3 og latin1 som tegnsett fordi dette var den eneste kombinasjoen som fungerte 100% i så godt som alle media playere, inklusive windows media player.
    Bryston BDA-2 | Bryston BP-17³ | Bryston 4B SST² | PMC Twenty5.24

  7. #7
    Hifi-entusiast
    Ble medlem
    Jul 2009
    Sted
    Vest-Agder/Søgne
    Innlegg
    352
    Tagget i
    0 Innlegg
    hadde det kjørt greit på windows hadde det jo vert fint
    - Evelen

  8. #8
    Hifi Freak marsboer's Avatar
    Ble medlem
    Apr 2010
    Sted
    Akershus
    Innlegg
    3,673
    Tagget i
    0 Innlegg
    Sitat Sitat fra Evelen Se Innlegg
    hadde det kjørt greit på windows hadde det jo vert fint
    Hvis jeg lager en python-versjon av scriptet så er det i det minste teoretisk mulig. eyed3 har en python ekvivalent og man klarer vel å få inn både flac, lame, rsync og sox på Windows. Jeg ser imidlertid for meg at dette blir et skikkelig grisete opplegg og siden jeg ikke har bruk for en Windows-versjon selv så kommer jeg ikke til å bruke tid på det. Jeg er imidlertid glad i python, så det er mulig det blir en python variant, men optimalisert for Linux en dag. Egentlig bare for å få penere kode
    Bryston BDA-2 | Bryston BP-17³ | Bryston 4B SST² | PMC Twenty5.24

  9. #9
    Hifi Freak marsboer's Avatar
    Ble medlem
    Apr 2010
    Sted
    Akershus
    Innlegg
    3,673
    Tagget i
    0 Innlegg
    v1.0.1 er lagt ut. Dette er versjonen å kjøre for de som har lyst til å sette scriptet på prøve. Det fungerer i hvertfall fint her hjemme og er "feature complete" for mitt bruk. https://wiki.proikt.com/wiki/index.p...P3_mirror_sync
    Siste redigert av marsboer; 22.01.2013 kl. 19:43.
    Bryston BDA-2 | Bryston BP-17³ | Bryston 4B SST² | PMC Twenty5.24

  10. #10
    Hifi Freak marsboer's Avatar
    Ble medlem
    Apr 2010
    Sted
    Akershus
    Innlegg
    3,673
    Tagget i
    0 Innlegg
    Da er målet nådd 100% og replay gain tagging er også implementert, inkludert både track og album gain (album gain forutsetter at alle filer som tilhører samme album eller disk ligger i samme mappe). Jeg har imidlertid gjort replay gain enkel å slå av for de som ikke benytter funksjonaliteten, siden det legger til en god del tid på første sync.
    Versjon 1.1.0 er gjeldende versjon og den mangler nå ingen funksjonalitet i forhold til mitt opprinnelige mål.

    mp3gain er lagt til som en avhengighet for replay gain tagging forresten.
    Bryston BDA-2 | Bryston BP-17³ | Bryston 4B SST² | PMC Twenty5.24

  11. #11
    nb
    Guest
    Stilig - skal benytte meg av dette ved anledning. Hadde tenkt å skrive noe selv, men da mine scriptingkunnskaper ligger "litt" under ditt nivå hadde jeg nok aldri fått til noe med så mye funksjonalitet. Takk for vel utført arbeide! (har ikke testet men tar det for gitt at dette funker som tiltenkt....)

  12. #12
    Hifi Freak
    Ble medlem
    Dec 2003
    Innlegg
    4,431
    Tagget i
    1 Innlegg
    Helt konge! Hadde det vært mulig å gjort det om til å gjenkjenne både flac og alac (via ffmpeg/libav)? Det hadde jo vært veldig fint for oss mac-infiserte.

  13. #13
    Hifi Freak marsboer's Avatar
    Ble medlem
    Apr 2010
    Sted
    Akershus
    Innlegg
    3,673
    Tagget i
    0 Innlegg
    Etterhvert som scriptet har pløyd gjennom samlingen min så jeg at spesielt taggingen feilet i noen få tilfeller. Det viste seg at det var en rekke problemer med filnavn som inneholdt bash-spesialtegn som $, flere dasher etterhverandre '' eller ''''', mange spaces etter hverandre og filnavn med [] som senere ble brukt i regexer i scriptet (hvor disse har spesiell betydning). Jeg har nå gjort svært grundige tester med de mest brutale filnavn jeg kunne finne på og scriptet har nå fått en rekke fikser for å håndtere disse uten feil (som jeg finner i hvertfall). Selv om svært få filer har disse problemnavnene, så ville scriptet i versjon 1.1.0 likevel ende opp med en fil uten ordentlig tag som likevel får korrekt timestamp slik at den ikke blir syncet i neste runde. I tillegg til å fikse problemene jeg fant har jeg har nå endret scriptet slik at filen aldri vil få riktig timestamp dersom taggingen feiler, slik at eventuelle skjulte problemer i det minste vil forårsake at filene blir konstant syncet på nytt ved neste anledning i håp om at problemet blir ordnet.

    I tillegg har jeg fjernet et potensielt timing problem hvor man med v1.1.0 kunne risikere at man ved lange syncejobber kunne klare å endre på en flac mellom henholdsvis enkodingsdelen og replaygaindelen uten at dette ble tatt høyde for slik at filen ikke ble syncet på nytt neste runde. Nå er ikke dette noe tema lenger.

    v1.1.1 ligger nå ute. Ingen ny funksjonalitet, men en rekke småproblemer som kunne gå utover integriteten til mp3-mirroret er ordnet. Jeg anbefaler derfor på det sterkeste å benytte denne versjonen, og faktisk også regenerere eventuelt påbegynte mp3-mirror operasjoner (dvs slette mp3-mappen og begynnet på nytt) for å være helt sikker på at du ikke har noen manglende eller feilaktige tags.
    Bryston BDA-2 | Bryston BP-17³ | Bryston 4B SST² | PMC Twenty5.24

  14. #14
    Hifi Freak marsboer's Avatar
    Ble medlem
    Apr 2010
    Sted
    Akershus
    Innlegg
    3,673
    Tagget i
    0 Innlegg
    Sitat Sitat fra Man Se Innlegg
    Helt konge! Hadde det vært mulig å gjort det om til å gjenkjenne både flac og alac (via ffmpeg/libav)? Det hadde jo vært veldig fint for oss mac-infiserte.
    Nå som jeg i utgangspunktet er "ferdig" med scriptet, med mindre jeg ser noen flere bugs som må fikses, så kan jeg godt sjekke ut hvor ille det blir å inkludere støtte for alac. Selve reenkodingen og sync-delen er jeg ikke bekymret for i det hele tatt, men tags skal jo også håndteres 100% korrekt fra det formatet alac benytter. Jeg må sjekke ut hvor brukbare linux-verktøyene for dette er.
    Bryston BDA-2 | Bryston BP-17³ | Bryston 4B SST² | PMC Twenty5.24

  15. #15
    Hifi Freak marsboer's Avatar
    Ble medlem
    Apr 2010
    Sted
    Akershus
    Innlegg
    3,673
    Tagget i
    0 Innlegg
    Og da viser bash seg nok en gang fra sin verste side. Det viser seg at en del ting som er akseptert i tags langt i fra er like aksepterbart når man vil ha 100% gjengivelse av tagen når den fôres via kommandolinjen. Jeg holder på å fikse de av dem jeg har kommet over nå (tags med backticks og double quotes lager morro kombinert med bash-kommandolinje). Det fine er om du har kjørt 1.1.1 på jobben til nå, siden filene det gjelder uansett resynces neste gang fordi taggingen ikke gikk helt i orden. Du trenger derfor ikke starte på nytt slik som fra 1.1.0 til 1.1.1. Jeg kommer snart med en ny versjon. awk kommandoen som sørger for å tilpasse tagene slik at de blir spiselige for bash og eyeD3 begynner å bli stygg nå

    Jeg kjenner lysten til å ommøblere scriptet til en python variant blir større og større. Bash og escaping er et helvete når ting blir litt komplisert med så random input som tags og kreative filnavn hvor bash spesielle karakterer er tillatte bokstaver.
    Siste redigert av marsboer; 25.01.2013 kl. 23:32.
    Bryston BDA-2 | Bryston BP-17³ | Bryston 4B SST² | PMC Twenty5.24

  16. #16
    Hifi Freak marsboer's Avatar
    Ble medlem
    Apr 2010
    Sted
    Akershus
    Innlegg
    3,673
    Tagget i
    0 Innlegg
    Da er v 1.1.2 ute. Fikser tagging-issues dersom tags inneholder helt spesifikke bash-spesialtegn.

    Når scriptet klarer konstruerte filbaneutfordringer som dette så regner jeg med at det meste skal være luket ut, men det kan ligge noen godsaker på lur i tags enda:
    Kode:
    "Z:\Temp\Dev\music [mp3] $$$ æ''''      '$''\Björk$ ``` ''''         ``\2004 - Medúlla [24bit 96kHz]\07 - Moments Musicaux. Op. 16 - no. 4 Presto ''' `````      $$$$$$$ []]{]} - Copy.mp3"

    Det eneste problemet jeg ser nå er denne, som kun gjelder dersom latin1 er valgt som tegnencoding: https://wiki.proikt.com/wiki/index.p...roubleshooting
    Dette er imidlertid ikke en bug, men et valg man må ta i forhold til kompabilitet.
    Bryston BDA-2 | Bryston BP-17³ | Bryston 4B SST² | PMC Twenty5.24

  17. #17
    Hifi Freak marsboer's Avatar
    Ble medlem
    Apr 2010
    Sted
    Akershus
    Innlegg
    3,673
    Tagget i
    0 Innlegg
    Det viste seg at det var den noe gamle versjonen av eyeD3 i Debian repositoryene som lagde kvalm med unicode hos meg. Med siste version av eyeD3 fungerer alt strøkent. Versjonen er imidlertid ikke kompatibel med gamle eyeD3 versjoner syntaxmessig noe som medfører at siste versjon 1.1.3 av mp3-mirror ikke kan brukes med den gamle eyed3. Standard encoding er nå endret til UTF16 og alt fungerer svært bra også i windows media player. Med andre ord spiser scriptet nå alt av karakterer og tegn jeg klarer å kaste på det og det spytter ut kompatible tags.

    Det skulle være den siste brikken (latin1 -> utf16, og fjerne bugen i eyeD3 med unicode karakterer i user-defined-tags)

    https://wiki.proikt.com/wiki/index.p...oad_the_script
    Siste redigert av marsboer; 28.01.2013 kl. 00:13.
    Bryston BDA-2 | Bryston BP-17³ | Bryston 4B SST² | PMC Twenty5.24

  18. #18
    Hifi Freak marsboer's Avatar
    Ble medlem
    Apr 2010
    Sted
    Akershus
    Innlegg
    3,673
    Tagget i
    0 Innlegg
    Det dukker stadig opp noen bugs på grunn av uventet oppførsel i programmer scriptet er avhengig av. Det viser seg at mp3gain benytter RVA2-tagen for å detektere om filen har replaygain kalkulert eller ikke. Siden RVA2 kun er id3v2.4 kompatibel, og jeg vil ha 2.3 på grunn av kompatibilitet med blant annet Windows Media Player og det meste annet, må denne taggen fjernes etter at mp3gain har gjort jobben sin. Dette medførte da at mp3gain kalkulerte replaygain for alle filer ved hver gjennomkjøring, noe som ble tidkrevende. For sikkerhets skyld overskriver ikke mp3gain de eksisterende tagene om RVA2 mangler heller, bare legger til nye og identiske for hver gjennomkjøring, noe som gjør at det hoper seg opp med tags. Uansett så har jeg nå laget en egen deteksjonsalgoritme for dette, uavhengig av idiotlogikken i mp3gain, slik at man får pålitelig oppførsel på replaygain med id3v2.3. Jeg la da også til en logikk som medfører at replaygain rekalkuleres for alle filene i albumet (mappen) selv om kun en fil er endret/mangler tags, for å være sikker på at replaygain_album_* har korrekte verdier.

    I tillegg har jeg nå gjort scriptet case insensitivt på flac-suffixet for å være litt mer brukervennlig for de som ikke har stålkontroll på filnavn i biblioteket. Selve filnavnmatchingen er case sensitiv, slik at endringer på case i filnavnet på FLAC-filen blir syncet over til mp3-mirroret, men selve .flac filendelsen kan nå skrives på hvilken som helst måte og likevel bli syncet.

    Legg til litt forenkling av kode så har vi v1.1.5 av mp3-mirror.sh: http://www.marsboer.net/shared/mp3-m.../mp3-mirror.sh
    Bryston BDA-2 | Bryston BP-17³ | Bryston 4B SST² | PMC Twenty5.24

  19. #19
    Hifi Freak marsboer's Avatar
    Ble medlem
    Apr 2010
    Sted
    Akershus
    Innlegg
    3,673
    Tagget i
    0 Innlegg
    Da har jeg laget en ny optimalisering av scriptet, nemlig parallellisering for å utnytte multi-CPUer bedre.

    Siden scriptet baserer seg på å pipe output fra SoX direkte inn i Lame så er det slik at scriptet allerede var parallellisert noe i form av at lame encodingen og flac-dekodingen/sox-prosesseringen skjedde i ulike prosesser og dermed ble parallellisert. Men nå har jeg skrevet om scriptet slik at hele reenkodingsprosessen, både deteksjon av endrede filer, reenkoding og tagging, skjer i parallell med et egendefinert antall samtidige prosesser. Siden dekoding/enkoding allerede er parallellisert bør man ikke velge alle CPUer, men N-1 fungerer fantastisk her med min quad core, dvs 3 samtidige prosesser.

    I tillegg har jeg parallellisert replaygain delen, slik at også dette kan fungere på samme måte. Dette gjøres imidlertid på per directory basis for å kunne benytte replaygain_album_* logikken i mp3gain direkte. Det vil si at man f.eks replaygainer 3 directories i parallell.

    Som en konsekvens av all parallelliseringen er nå output fra alle underprosesser fjernet, og kun en enkel (fargelagt) statusmelding printes til skjerm for hver fil som prosesseres. Alt annet blir tilfeldig kaos.

    Alt i alt er scriptet nå lynraskt, både på sjekk av eksisterende filer som ikke trenger å endres (siden dette også skjer i parallell), og på alle de tunge prosessene.
    Jeg skal imidlertid teste det noe mer før jeg frigir den nye varianten, men jeg ser ingen problemer sålangt.
    Bryston BDA-2 | Bryston BP-17³ | Bryston 4B SST² | PMC Twenty5.24

  20. #20
    Hifi Freak marsboer's Avatar
    Ble medlem
    Apr 2010
    Sted
    Akershus
    Innlegg
    3,673
    Tagget i
    0 Innlegg
    v2.0.0 med multi core optimaliseringer og en fix for en liten bug som ble introdusert når jeg gjorde scriptet case insensitivt for flac-suffix: https://wiki.proikt.com/wiki/index.p...from_v2.0.0.29
    Bryston BDA-2 | Bryston BP-17³ | Bryston 4B SST² | PMC Twenty5.24

Side 1 av 2 12 SisteSiste

Skrive Tillatelser

  • Du kan ikke starte nye tråder
  • Du kan ikke svare på innlegg
  • Du kan ikke laste opp vedlegg
  • Du kan ikke redigere dine innlegg
  •  


 

Om Hifisentralen

    Hifisentralen er Norges største webside innen high-end hi-fi og musikk, og vi har vært på nett siden år 2001. Velkommen til en god hi-fi diskusjon eller kjøp og salg av utstyr.
   

Følg oss på sosiale medier:

Facebook Twitter RSS Feed