Inleiding
Nou, het is dan zover. Een uitgebreid verslag van mijn zelfbouw MP3-decoder. Ik ga je alles vertellen over hoe je zelf zo'n ding kan bouwen, en wat voor nut het allemaal heeft. Verder komen de de software, de kosten en ook een test aan bod. Eerst wat theorie.
Software versus hardware decoderen
Waarom zou je in hemelsnaam een aparte MP3-decoder willen als ie toch niet draagbaar is, en als je PC het ook prima kan? WinAmp is een prachtig programma, draait bijna zonder dat de rest van je systeem er last van heeft, en het geluid kan je ook nog eens op je stereo aansluiten. Allemaal waar. Maar sommigen hebben hun pc niet in de buurt van hun stereo staan, en zouden ook wel eens wat muziek willen horen die ze gedownload hebben. Je kan het natuurlijk op cd branden, maar wat als je ook geen brander hebt?
Het voornaamste probleem wat ik eigenlijk heb met de bestaande software is dat ze allemaal een flinke hoeveelheid processor-capaciteit nodig hebben. Een Pentium 60 is wel het absolute minimum om een MP3 van 128kbits/sec zonder onderbrekingen af te spelen. En dat terwijl die processor zoveel meer kan, dan alleen een hoop floating point getallen in de rondte draaien. Bovendien zit er een hoop ander spul ook nog in die PC, waardoor je een flinke hoeveelheid stroom nodig hebt. Het minimum voor een PC voeding is 200 watt, dat ding wordt heet, de koeler maakt lawaai, enzovoort. En dat terwijl een simpele audio-cd speler in je stereo maar 10 watt gebruikt, niet heet wordt, en geen herrie maakt.
Meer theorie
Een PC volgens het von Neumann model is totaal ongeschikt om MP3's te draaien. En voor degenen die von Neumann niet kennen: hij heeft bedacht dat een computer een instructies en data ophaalt uit een geheugen, die uitvoert, en de uitvoer weer wegschrijft. Voor het decoderen van muziek zijn maar een aantal instructies nodig, en die worden oneindig veel keer herhaald. Dus zou het niet veel sneller zijn om die instructies vast te bakken, zodat de uitvoer direct beschikbaar is als de invoer aangeboden wordt? Ik weet het wel zeker
.
Gelukkig heeft de firma Micronass Intermetall dat ook ingezien, en zij bieden een DSP (digitale signaal processor) aan die perfect geschikt is voor het decoderen van Mpeg1/2 Audio Layer 2/3 datastromen. Uit deze DSP komt een digitale stroom in de vorm van het wave-formaat, dat compleet ongecodeerd is. Als je dit signaal door een D/A converter (digitaal naar analoog omzetter) haalt heb je een signaal dat je direct op je stereo kan aansluiten.
Om dit voor de tweakers naar PC-termen te vertalen: De DSP is in je PC uitgevoerd in de vorm van je processor in combinatie met je favoriete MP3-afspeel programma. Dat is niet helemaal waar, want je hebt ook nog een controller nodig die de MP3-stroom naar de DSP regelt. In de hardware-decoder wordt dat gedaan door een aparte controller, in de PC is de CPU daar ook verantwoordelijk voor. Op je geluidskaart zit een D/A converter ingebouwd, die heel goed vergelijkbaar is met degene op de hardwarematige decoder. Kortom, waar je een halve pc voor nodig hebt kan het ook met 3 relatief eenvoudige componenten.
Toch heb ik in dit project nog steeds een PC nodig. Maar het enige dat die doet is het uitlezen van een MP3-bestand, en dat in stukjes naar de printerpoort sturen. De MP3-decoder wordt daar namelijk op aangesloten omdat dat de enige veelgebruikte poort is die een snelheid van zo'n 128kbits/sec aankan. Nou zal je denken: Dan hoeft die PC ook niet veel te doen... waarom zou ik nog overklokken?
Inderdaad, je hebt aan de meest simpele PC voldoende. De minimum eis is een XT, alhoewel een 286 aangeraden wordt. Da's een heel verschil, een PC op 8 tot 16 MHz, ipv degene die nu op je bureau met 200 tot 500 MHz staat te pompen, nietwaar? De MP3-decoder zelf draait op 14,7 MHz, de controller op de helft van die snelheid.
Blokschema
Om de opbouw van de decoder wat duidelijker te maken zal ik het geheel in een blokschema zetten. Links heb je de PC, die maar met een paar componenten is uitgerust, namelijk:
- Een apparaat om van op te starten (bijvoorbeeld een diskette)
- Een IDE interface naar een cdrom-drive of een harddisk (waar de MP3's op staan)
- En een printerpoort om het signaal naar de MP3-decoder te voeren.
De decoder zelf bestaat ook uit maar een paar (hoofd)componenten:
- Een klokgenerator, om de DSP en de controller op gang te houden
- De microcontroller, die alle signaal-verkeer regelt, niet alleen van de gecodeerde muziek-stroom, maar ook besturingssignalen en data die naar een optionele LCD display gestuurd kan worden.
- De DSP, voor het eigenlijke decoderen
- En een D/A converter, die het analoog gemaakte signaal naar een paar tulp-stekkers stuurt.
Zie dit plaatje:
Het vergaren van de onderdelen
Allemaal leuk natuurlijk, maar hoe weet ik nou wat ik allemaal nodig heb? Dat staat gelukkig allemaal in het artikel uit de c't En het makkelijke is dat je de componenten die het zeldzaamst zijn (de printplaat, en een paar IC's) gewoon bij hun kan bestellen.
De inhoud van het C'T pakket
De zeldzaamste onderdelen zijn gelukkig ook de belangrijkste. En de duurste. En ook de kleinste. Ik was dan ook erg verbaasd dat ze Van Gend en Loos langsstuurden met niets meer dan een grote schok-absorberende envelop. In die envelop vond ik het volgende:
- 1 printplaat met opdruk, afmeting 6x12 cm
- 1 klokgenerator, 14.7456 MHz
- 1 microcontroller, merk en type: Atmel AT90S8515
- 1 D/A converter, SMD component, merk en type Crystal CS4331 (ja, dezelfde Crystal als van de ESS audiochip)
- 1 kleine controller, SMD component, merk en type Motorola 74HC191
- 1 Mpeg layer 2/3 decoder DSP, merk en type Micronas MAS3507D
- 1 Beschrijving met de laatste wijzigingen
Dat was alles! En dat ziet er ongeveer zo uit, ik heb er een pen naast gelegd om de grootte duidelijk te maken:
Bovenaan liggen van links naar rechts: de klokgenerator, de Atmel, de D/A converter (kleinste component), de Motorola controller, en de DSP chip. (En nee, foto's maken is niet mijn sterkste vak
)
Onderdelen die je zelf moet aanschaffen
De rest zal je er dus nog bij moeten kopen. Gelukkig zijn dit onderdelen die bij de meeste electronica onderdelen zaken wel te krijgen zijn. Om je een indruk te geven, dit is erbij gekomen: 4 diodes, 1 spanningsregelaar, 1 koelelementje, 17 condensatoren en elco's, 29 weerstanden, 1 spoel, 2 IC-voetjes, 2 tulp stekkers, 3 aansluitingen voor flat-cables, 3 penstekkers en een 25 pins aansluiting voor de printerkabel.
Gelukkig kon ik bijna alle onderdelen bij 1 zaak halen, ik heb die man gewoon het lijstje gegeven uit de c't, en hij is aan het verzamelen gegaan.
Moeilijk verkrijgbare onderdelen
Echter niet alles was even makkelijk te krijgen. Mijn zaak waar ik regelmatig kom kon me bijvoorbeeld niet helpen aan een bepaald type Zener-diode. Gelukkig stond er op het meegestuurde formulier met wijzigingen dat je die ook kon vervangen door 2 1N4148 diodes in serie, en dat is de meest standaard diode die ik ken.
Maar het langst heb ik wel gezocht naar 3 weerstands-arrays. Voordat ik aan dit project begon wist ik niet eens wat het waren. Het zijn een aantal weerstanden met 1 gezamelijk punt, met als bedoeling dezelfde weerstand aan een aantal pinnen tegelijk te hangen. Ik heb daar 5 zaken voor moeten aflopen voordat ik die gevonden had. Ik had arrays nodig van 5, 8 en 9 weerstanden, en de 5-versie heb ik niet eens gevonden. Gelukkig kan je ook een 8-array gebruiken en daar de laatste 3 pootjes niet aansluiten.
De kosten
Goed, nu we alle onderdelen hebben, laten we gaan bouwen. O ja, die onderdelen moet je nog betalen ook
. Wat ben je kwijt voor deze grap?
Ja, we blijven toch Nederlanders, dus we houden de hand liever op de knip. Eigenlijk is het totaal op meer uitgekomen dan ik gedacht had. En dan heb ik nu pas deel 1 van het project af, ik gebruik nog altijd mijn bestaande PC voor de data-aanvoer.
Ik heb momenteel het volgende uitgegeven:
Het c't pakketje, inclusief bezorgen: | f 269,65 |
Alle andere losse onderdelen: | 45,45 |
Parallelle verbindingskabel: | 10,95 |
Netvoedings adapter, 300 mA, 3 tot 12 volt: | 14,95 |
| ----------- |
| f 341,-- |
Dat is best veel, zeker als je het vergelijkt met de prijs die je bijvoorbeeld voor een Diamond Rio neerlegt. Dat is maar 100 gulden meer, en dan heb je er direct 32 MB flash geheugen en een koptelefoon bij. Bedenk dan maar dat de Rio in massa's geproduceert wordt, en dat dit een leuk apparaatje is voor als je zelf flink wilt knutselen.
Verder kan je nog geld besparen als je al een adapter en een seriele/paralelle kabel hebt waar alle 25 pinnen 1 op 1 zijn verbonden. Mocht je nog niet in het bezit zijn van een goede soldeerbout zal je daar weer extra voor in je portemonnee moeten duiken.
Het in elkaar zetten
100% zelfbouw
We zijn nu zover dat we kunnen gaan bouwen, alle onderdelen hebben we verzameld en betaald. De hele vracht onderdelen die op mijn bureau lag moest allemaal op dat kleine printplaatje komen. Meteen beginnen met solderen? Niet helemaal. Je zal toch eerst wat ander gereedschap ook nodig hebben.
Handige hulpjes en ander gereedschap
Bijvoorbeeld, voor iedereen die niet zo goed is dat ie alle kleurcodes van de weerstanden uit zijn hoofd weet, of die ergens wel dat tabelletje heeft, maar het zo'n zoekwerk vind, is een multimeter heel handig. Daar kan je dan tevens de spanning mee meten die uit je adapter komt, om ervoor te zorgen dat je je pas gemaakte decoder niet meteen frituurt.
Verder heb ik gebruik gemaakt van een standaardje waar ik mijn printplaatje in vast kon klemmen. Ik weet niet of die dingen veel gebruikt worden, maar ik zie ze niet zo vaak. Toevallig had mijn neefje er 1, dus daar heb ik dankbaar gebruik van gemaakt (bedankt Wybo
). Met die standaard zorg je ervoor dat je allebei je handen vrij hebt om een soldeerbout en een draadje tin vast te houden. De componentjes blijven er dankzij de lange draden goed in hangen als je de print op zijn kop hebt hangen, en dan is het solderen een fluitje van een cent. Hier hebbie een plaatje van het ding, met een stukkie printplaat onder constructie:
Om alle uitstekende draden af te knippen als je weerstanden of condensators net gesoldeerd hebt, heb je een klein kniptangetje nodig, maar met een goede schaar kan het ook. Daar kan je ze vaak nog iets korter mee afknippen ook, en da's wel zo netjes.
Solderen, solderen en nog eens solderen
Verder heb je natuurlijk een soldeerbout en soldeertin nodig. Voor soldeerwerk op printplaten is tin met een harskern handig. Omdat er op de printplaat ook een paar SMD componenten moeten komen is het nodig dat je een soldeerbout met een hele dunne punt hebt, en zeker niet teveel vermogen. Ik heb er zelf een gebruikt van 15 Watt, maar ik heb ook modellen gezien met een nog iets kleinere punt en 12 Watt vermogen.
Als je nog geen ervaring hebt met het solderen op printplaten en ik heb je na het lezen van dit artikel zo gek gemaakt dat je het zelf ook wil proberen dan moet ik je toch teleurstellen: Het solderen van dit ding was niet echt moeilijk, maar een beetje ervaring is zeker aan te bevelen. Je begint in ieder geval met de kleinste onderdelen, en zorgt er tevens voor dat je ruimte overhoudt voor de grotere onderdelen. Dat was best nog lastig, aangezien alles op de print erg compact is bemeten.
Ik had zelf geen ervaring met het solderen van de platte SMD componenten, maar ik heb het volgende bedacht: Als eerste: Lijm het componentje met een druppie gewone huis-tuin-en-keuken lijm (zeker geen powerglue, het is geen koelvin
) op de goede plek op de print. Vervolgens doe je wat tin op je soldeerbout en je houdt het bij een pootje. Doordat je het niet op de klassieke manier doet (draadje tin en bout bij de pin houden) loop je geen risico dat je 3 pootjes aan elkaar soldeert.
En al met al is het best aardig en netjes gelukt, al zeg ik het zelf. Hier wat plaatjes van het pakket onder constructie, let vooral op hoe klein alles is (het SMD component rechts is ongeveer 2x zo groot als in het echt):
De software
Het mag algemeen bekend zijn dat hardware niets doet zonder software. Zelf de meest simpele cd speler heeft wat ge-embedde software ingebakken om het apparaat te sturen. Zo ook mijn MP3 decoder.
Wat heb je nodig
Als eerste heb je een programmaatje nodig dat de MP3-stroom van de Atmel chip naar de DSP kan doorsluizen. Daar heb je geluk mee: dat stukje programma (volgens de c't zit dat in 8 kB flash ROM) zit al op de chip als je hem koopt. Ik heb verder geen idee hoe ik dat zou moeten flashen, laat staan aanpassen, al schijnt er wel een gratis assembler voor de chip te zijn.
Verder heb je nog een programmaatje nodig dat op je PC draait, om de bestanden te selecteren, het afspelen te starten en te stoppen, nummers te skippen, en natuurlijk om de MP3-stroom van je schijf door de parallelle poort te sturen. Ook daar heb je weer geluk mee: Het programma is inclusief broncode te downloaden van de site van de c't. En dat is nog niet alles: Op de site van de mensen die dit ding bedacht hebben (of dacht je soms dat de c't dat zelf gedaan had?
) kan je nog een hele batterij andere programmaatjes vinden, de meeste met source erbij. De sources zijn meestal in C of Turbo Pascal gemaakt, door een aantal fanatiekelingen die al veel gekkere dingen met deze decoder uitgehaald hebben.
Er zitten echter een aantal nadelen aan deze programma's. Als eerste: ze zijn in het Duits geschreven. Dat hoeft op zich geen belemmering te zijn, maar ik vind het niet altijd even leuk. Ten tweede, en dat heeft te maken met het feit dat de decoders daar al verder ontwikkeld zijn: De meeste programma's gaan ervan uit dat er een LCD display aan de decoder hangt met een aantal bedieningsknoppen. Met die knoppen kan je dan kiezen uit welke schijf of directory de bestanden komen enzovoort, maar het is toch lastig als je (nog) geen knoppen en schermpje aan je decoder hebt hangen... Gelukkig bieden een aantal programma's (waaronder het programma van c't zelf) de mogelijkheid om een 'emulatiemode' te gebruiken. In deze mode kan je wel gewoon je toetsenbord van je PC gebruiken om de decoder te bedienen.
Zelf aanpassen van de software
Als je zelf handig bent in het programmeren in C of Pascal onder DOS heb je de mogelijkheid om je programma aan te passen zoals je dat zelf wilt. Ik heb dat zelf ook geprobeerd met het programma van de c't, maar daar wordt je niet vrolijk van. De meeste code is wel goed gedocumenteerd, maar het is behoorlijk ingewikkeld om te volgen. Daar kwam bij dat ik zelf beschik over Borland C++ 3.1 en dat het programma is geschreven voor C 4.0, dus ik moet eerst een hoop code gaan verbouwen voordat het oorspronkelijke programma gecompileerd kan worden, omdat bepaalde constructies gewoon niet door mijn compiler ondersteund worden.
Ik had het namelijk wel leuk gevonden om de interface grondig te verbouwen, want de emulatiemode gaat er vanuit dat je een LCD display van 4 regels van 16 tekens hebt, en da's niet veel. Maar na heel wat heen en weer graven heb ik mijn pogingen voorlopig gestaakt. Misschien dat ik het later nog eens probeer.
En? Doet ie het?
Dat is natuurlijk de grote vraag. We hebben een volledig afgemaakte printplaat, een verbinding naar de poeter en naar de versterker, een adaptertje dat de benodigde prik kan leveren en wat software. Kijken of het werkt...
Men steke de stekkers erin en...
Niets... althans, geen geluid. Wel een zenuwachtig en zwak knipperend LED-je, dat aangeeft dat het niet helmaal goed gaat. Deze zou namelijk continu moeten branden. Het was overigens wel ff wat zoekwerk voordat ik uitgevonden had welke toetsen nou eigenlijk gebruikt werden in de emulatiemode. Uiteindelijk bleken de toetsen als volgt ingedeeld te zijn (stond overigens ook in de c't beschreven
)...:
L = enter
J = cancel
I = pijltje omhoog
M = pijltje omlaag
O = directory verder
U = directory terug
Dan toch maar een befaamde overklokkers techniek...
Volgens de beschrijving in de c't zou de decoder moeten werken met een voedingsspanning tussen 7 en 12 volt, maar als je een spanning van 10 volt of hoger gebruikt moest je wel een koelelement op de voltage-regulator aanbrengen. Het stroomverbruik zou 140 mA zijn. Mijn netspannings-adapter zou bij de ingestelde spanning 300 mA kunnen leveren, vandaar dat ik een lagere spanning ingesteld heb. Bij 6 volt uit de adapter meette ik op de decoder 7,3 volt. Dat zou toch genoeg moeten zijn dacht ik...
Maar goed, omdat ie geen enkel geluid produceerde, en omdat ik er zeker van was dat geen enkel printspoor beschadigd was, geen enkele elco verkeerd om gepoold was, enz, heb ik toch maar geprobeerd om de spanning wat te verhogen (sounds familiar, right? >). Affijn, ik heb mijn adapter op 7,5 volt gezet, en het nog eens geprobeerd. Op de decoder stond nu 9,0 volt volgens mijn multimeter.
En zie, eh ik bedoel hoor: Geluid!! Muziek zelfs. Het nummer dat ie moest afspelen ook nog. Voor een kleine 10 seconden was ik heel erg blij
. Daarna skipte ie door naar het volgende nummer, en zo ging dat de hele tijd door, elke keer na 1 tot 10 seconden
. Nog steeds niet geweldig, ook al wist ik nu dat er niets mis was met de decoder zelf, maar dat ie gewoon een beetje meer prik nodig had. De LED brandde continu, behalve tijdens het skippen, wat helemaal logisch was omdat ie rechtstreeks op de DSP aangesloten zit. Mijn gedachten gingen vervolgens naar het programmaatje "ctplayer"...
Of zal het toch aan het "O.S." liggen?
Tja, ik ben nooit gecharmeerd geweest van dat programma. Op zich is het helemaal niet erg dat het een beroerde interface heeft voor de PC, het is tenslotte bedoelt om met een LCD display en een paar losse druktoetsen te werken, en niet met een toetsenbord en monitor.
Maar maak dan wel een programma dat het goed doet. Ik vermoed dat het skippen samenhangt met de tijdteller die erin was gebakken. Heel leuk dat je de totale tijd van het nummer ziet en ook de verstreken tijd netjes ziet oplopen, maar daardoor moet de parallelle poort in de emulatiemode telkens omschakelen van data sturen naar data ontvangen. Als er vervolgens een interrupt komt van de Atmel chip dat ie nieuwe data nodig heeft, en er komt geen bevestiging werd dat kennelijk opgevat als End-Of-File, en werd de volgende aangeroepen. Althans dat vermoed ik, ik weet niet precies hoe die aansturing werkt. Vandaar dat ik dus pogingen ondernomen heb om het programma zelf aan te passen, wat me, zoals gezegd, nog niet gelukt is.
Ik ben toen maar weer naar de site van de experts gezwommen en heb de hele software sectie leeggeroofd. En jawel, het Pump (Parallel Universal MP3 Player) programma van Nico Alte deed bijna precies hetzelfde als het c't programma, en heeft zelfs nog een aantal extra features, maar geen tijdteller. En toen ik dit programma in de emulatiemode startte... schitterend!! Alles werkte zoals het zou moeten, en het geluid klonk nog erg goed ook. Maar daarover later meer, eerst even de features behandelen.
(on)Mogelijkheden
Leuk dat ie nu werkt, maar wat kan dit stukje zelfgebouwde knutselwerk allemaal? Voor zover ik de eerste keer kon beoordelen werd alles goed afgespeeld. Maar wat zijn de specificaties? Dat ga ik je in de volgende 2 pagina's uitleggen.
Features
Als we het over features hebben dan bedoel ik vooral de features van de Micronas MAS DSP. Die zijn als volgt:
Bitrates: 8 tot 384 kbit/s
Variabele bitrate wordt ondersteund
Afspelen van mono, stereo en joint stereo MP3's
Samplefrequenties: 8 tot 48 kHz, maar door de samenwerking met de controller zijn alleen 44,1 en 48 kHz mogelijk
Volume regeling aan boord
Bass regeling aan boord
Dat was mijn grootste zorg tijdens het bouwen van dit ding: Werkt ie met alle bit- en samplerates? Maar toen ik deze specificaties opgeduikeld had hoefde ik me geen zorgen meer te maken. Dus als je bang bent dat je een MP3 in een vreemd formaat hebt hoef je je niet ongerust te maken: de ondersteuning van allerlei soorten MP3's is perfect. Ik heb dit tijdens het testen alleen maar kunnen bevestigen, elke MP3 die ik had werd zonder problemen afgespeeld. Variabele bitrates in MP3's heb ik niet getest, omdat ik die niet heb.
Gebruiksgemak
Over het gemak van het bedienen kan je discussieren. Zeker als je (zoals ik) nog steeds een afgedankte poeter gebruikt om hem te bedienen, in plaats van een zelfgemaakt bedieningspaneel met LCD. In het laatste geval heb je namelijk toch meer het idee dat je een gewone cd-speler bedient, die niet van allerlei toeters en bellen voorzien is. Op je PC ben je de grafische interface van WinAmp o.i.d. gewend, en dan is een programma dat in DOS of een DOS box draait toch een hele stap terug, zeker als die gebruik maakt van vage toetsinstellingen (die overigens wel te wijzigen zijn).
Mensen die goed kunnen programmeren kunnen misschien hun eigen interface in elkaar draaien, maar of dat echt zin heeft is te betwijfelen. Je bouwt het programma tenslotte niet om een geil programmaatje op je computer te bedienen, maar om een oude PC nog ergens dienst voor te laten doen. Het verbouwen van het programma tot een windoos versie is dan ook helemaal onzin: Op de computer waar je hem op wil laten draaien loopt toch geen windows.
Het programma van Nico Alte dat ik nu gebruik is van alle gemakken voorzien, maar is qua bediening niet helemaal toegespitst op de PC, maar ook niet via een los paneel. Er zijn in dat programma namelijk ook een volume- en bass regeling aanwezig, maar die kan je pas bereiken na het indrukken van de enter-toets tijdens het afspelen. Het geheel werkt nog niet perfect, de volumeregeling werkt zelfs nog helemaal niet, maar het is in ieder geval ingebouwd. In het menu dat je dan krijgt heb je ook de mogelijkheid om de Repeat en Scroll functie in te stellen. Dit hele 'menu' is niet aanwezig in het c't programma. Er zitten zowieso een aantal lagen in voordat je kan beginnen met afspelen. Eers moet je een schijf selecteren. Op mijn notebook, waar die nu het meest aan hangt is dat mijn harddisk of mijn cd-speler. Heb je dat gedaan dan zoekt het programma alle directories op waar MP3 bestanden in staan, en die presenteert ie in een lijst. Daar moet je er ook een van selecteren, en daarna begint ie pas met afspelen. Het is jammergenoeg geen kwestie van op "Play" drukken en de rest gaat vanzelf, maar het is wel vrij flexibel. Er is ook een mogelijkheid om met een database bestand te werken, waar je de korte DOS-bestandsnamen kan koppelen aan de complete artiest- en titelnaam. Het enige dat ik nog mis is een Random functie...
Geluidskwaliteit en foutcorrectie
Het eerste dat me opviel tijdens het afspelen van het eerste nummer was de opmerkelijk goede geluidskwaliteit. De weergave is helder, het stereobeeld heeft een goede spreiding, maar er zit ook een bass in die lekker stevig is. Misschien zelfs iets te, want toen ik een cd opzette met hetzelfde nummer klonk de bass wel wat zachter. Affijn, daar hebben we de bass-regelaar in het programma voor
. Over het algemeen klinkt de muziek net iets beter als met WinAmp en Sonique, waarvan ik de laatste toch als de beste software decoder beschouw. Vooral de hoge tonen klonken vaak wat minder vervormd, een van de effecten die het gevolg zijn van de MP3-compressie, en in sommige nummers erg duidelijk te horen is.
De foutcorrectie is niet een van de sterkste kanten van de decoder. Dat wil zeggen: het ligt eraan hoe je ernaar kijkt. Tikken die al in het wave-bestand aanwezig zijn voordat het naar MP3 omgezet wordt zal je altijd blijven horen, maar beschadigingen in een MP3-bestand zelf zijn vaak wel te ondervangen. Alleen doen software decoders dat anders dan de hardware decoder. Sonique en WinAmp halen soms hele kleine beschadigde fragmenten uit het nummer, waardoor het iets korter wordt. De hardware kan dat niet, die moet een continue stroom hebben. Van die stroom wordt geprobeerd het beste te maken. Je zal bij de hardware dus nooit het idee krijgen dat er iets overgeslagen wordt, en dat je op die manier het 'ritme kwijtraakt'. Wat je daar in de plaats hoort kan verschillen. Soms is het een tik, soms een stilte (hapering), soms speelt de laatste toon door die bezig was. Vooral in dat laatste geval merk je niet eens dat er een fout in het nummer zat, en dus denk je dat de foutcorrectie gewoon goed is. Over het algemeen vind ik de hardware decoder beter fouten corrigeren door de afwezigheid van stukjes die geskipped worden.
Lange bestandsnamen en ID3 tags
Omdat het programma dat gebruikt wordt onder DOS draait heb je geen beschikking over lange bestandsnamen. Er zijn 2 manieren om dit op te lossen: Via ID3 tags en via een extra bestandje of databeesje met titels.
Het programma dat ik nu gebruik biedt alleen de laatste optie. Die database is niet meer dan een simel tekstbestand. Het aanmaken van de database gebeurt als volgt: Zet in het bestand de DOS naam van het bestand, daarachter den naam van de artiest, de titel en het album. In de namen moeten spaties wel vervangen worden door underscores ( _ ) maar dat zie je op de display wel als spaties. Die titels kan je daarna op de display (of in de emulatiemode, zoals ik het doe) laten scrollen. Helaas heb ik dit nog niet werkend gekregen, maar ik ben er nog mee bezig.
De test
Om toch nog een paar leuke grafiekjes te maken heb ik de volgende test bedacht: Ik heb een aantal sinusvormige tonen van oplopende frequenties gemaakt in een wavebestandje. Dat bestand heb ik vervolgens omgezet naar MP3, en ik heb er ook een audio-cd van gemaakt.
Frequentiebereik
Vervolgens heb ik beide media afgespeeld, en via de ingangsmeters van mijn cassettedeck de sterkte gemeten. Op die manier heb ik dus het frequentiebereik vergeleken. Misschien niet helemaal wetenschappelijk verantwoord, maar je moet toch wat als je geen oscilloscoop hebt
. Ik verwachtte dat mijn cd-speler in mijn stereo een recht bereik zou hebben, en dat de MP3-decoder versterkte lage tonen had, en iets verzwakte hoge tonen. Dit zijn de resultaten:
De resultaten waren inderdaad voorspelbaar. De cd-speler toont een recht bereik, en mijn oren zijn ook nog goed genoeg om te horen dat bass en de middentonen te sterk waren bij de standaardwaarde van de toonregeling. Opvallend is wel dat het bereik instort boven de 10 kHz, maar dat is meer een beperking van het mp3 formaat dan van de decoder denk ik. Een soortgelijke meting staat overigens ook in c't nr 9, maar dan van software decoders. Die laten ongeveer hetzelfde beeld zien.
De vraag is nu of de verschillen in de frequentiecurves worden veroorzaakt door de encoders of de decoders. De curves van de soft- en hardware decoder verschillen heel weinig dus het zou net zou goed aan de MP3-codeeralgoritme kunnen liggen.
Ruis
Voor de ruis heb ik geen methode gevonden om dat zelf op een houtje touwtje manier te meten, dus daarvoor ben ik maar op mijn oren afgegaan. Ik heb weer een wave-bestandje gevuld, deze keer met stilte, (heerlijk, stilte tijdens een test
) en weer zowel op cd als naar MP3 gezet. En dan luisteren met het volume op 10...
De MP3-decoder bleek slechts iets meer ruis te bevatten als de CD! De ruis was minder als van mijn cassettedeck, dus dat zou een signaal-ruis verhouding van meer dan 78 dB betekenen!
Een mogelijke verklaring kan zijn (naast het feit dat er gewoon een erg goede D/A converter en analoog filter op de decoder zitten) dat de decoder het best was afgeschermd tegen stoorsignalen, namelijk met lucht. Lucht is zo ongeveer de slechtste stroomgeleider die er is, en de decoder stond ongeveer een meter van mijn stereo af, waar alle magetische velden van mijn stereo weinig invloed meer kunnen uitoefenen.
PC eisen
Volgens de c't en de bedenkers zou een XT (voor degenen die alleen een Pentium II en hoger kennen: een P2 en een Pentium Pro worden ook wel aangeduid als 80686. Een XT is in diezelfde omschrijving een 8086, ofwel een processor van 6 generaties eerder
) voldoende moeten zijn om de MP3-decoder aan te sturen. De makers geven verder als aangeraden configuratie een 80286 (AT) op. Zelf ben ik helaas niet meer in het bezit van zo'n oud barrel, de traagste die ik kon vinden was een 386 op 33 MHz, of op 16 MHz wanneer je de turbo-knop uitzet.
Testen op deze PC leverden toch een paar probleempjes op. Ten eerste is het aan te bevelen om SmartDrv te gebruiken voor wat caching, anders wordt er vrijwel non-stop van de harddisk gelezen. Verder leverde de 386 op 16 MHz soms net te weinig data door de printerpoort, waardoor de laatste 2 seconden (de interne buffer in de decoder) herhaald werden. Datzelfde gebeurde op 33 MHz met een MP3 van 256 kbit/s. Al met al geloof ik nooit dat het op een XT goed kan gaan, tenzij je de software gigantisch verbouwt en optimaliseert.
Overige specificaties die voor de PC van toepassing zijn:
- Besturingssysteem: DOS 3.3 of hoger (dat is de eerste versie die fatsoenlijk met partities kan omgaan) Opstarten kan van diskette of van harde schijf.
- Geheugen: 640 kB is genoeg. Je hoeft alleen maar DOS te laden en het programma maakt geen gebruik van geheugen boven de 640 kB grens.
- Printerpoort (je weet wel waarvoor
)
- Harddisk of Cd rom speler (1x speed zou genoeg moeten zijn) voor de MP3's
Uitbreidingen
In deel 1 van dit project heb ik alleen de kale decoder gemaakt. Er zijn nog talloze uitbreidingen mogelijk. Je zou bijvoorbeeld de pc uit kunnen rusten met een netwerkkaart om zo bestanden van een fileserver te lezen. Ik zat zelf aan het volgende te denken:
Je eigen MP3-deck
Een component maken die je in je stereotoren kan zetten. Daar wil ik dan een zo kaal en zo klein mogelijke computer voor gebruiken. Dat ding hoeft echt alleen maar van het minimale te zijn voorzien: parallelle poort, floppyinterface en IDE interface. Misschien een afgedankte 386 of 486 notebook, of een heel klein (industrieel?) CPU bordje. Als je weet waar ik aan zoiets kan komen moet je maar ff een meeltje sturen. De decoder heeft aansluitingen voor een LCD display en eventueel kan je er ook nog een afstandsbediening bij gebruiken. De parallelle aansluiting kan ook via een flatcable gebeuren, de aansluiting is daarvoor al aanwezig op de print.
Het grootste probleem wat ik denk dat ik daarmee krijg is de stroomvoorziening en de warmte afvoer. Dat laatste is wel op te lossen met een klein ventilatortje, maar de stroomvoorziening kan echt problematisch worden. Volgens de c't verbruikt een energie-arme 386 met moederbord en zonder extra randapparaten zoals harddisks nog altijd zo'n 40 watt, ofwel 4 keer zoveel als een simpele audio cd-speler. Tel daar nog de floppydrive en de cdrom bij op en je zit flink in de hitte. Plus dat de voeding die je nodig hebt ook aardig wat ruimte in beslag neemt.
Gebruik in de auto
Dit is ook een aardige mogelijkheid, en je bent meteen van het belangrijkste probleem van het deck af, omdat de spanning uit de accu al 12 volt is en je dus aan een vrij simpele voeding genoeg hebt (je heb alleen nog een 5 volt lijn nodig). Nadeel dat je in de auto hebt is dat het apparaat toch vrij veel ruimte inneemt. Deze mogelijkheid ga ik dan ook niet uitproberen, maar met redelijk wat verstand van analoge electronica zou het toch best gerealiseerd moeten kunnen worden.
Conclusie
Wat hebben ik nu bereikt? Ik ben 341 gulden armer, maar ik heb wel een heel leuk klein apparaatje erbij dat uitstekende prestaties levert op het gebied van MP3's decoderen. Wat ik vooral erg goed vind is dat alle bit- en samplerates zonder problemen worden geslikt. Ik heb zelfs een MP3 die is opgenomen op 48 kHz, die op de decoder duidelijk beter klinkt dan op mijn geluidskaart. Mijn AWE32 ondersteunt dan ook niet meer dan 44.1 kHz, dus de samplerate moet softwarematig worden omgezet. En ook al staat die omzetting in Windows op de hoogste kwaliteit, nog steeds wordt er een hoop extra ruis bij gemaakt. Met de decoder klinkt het gewoon erg strak, zoals het hoort.
Voor het realiseren van echt MP3 deck zal er echter nog heel wat moeten gebeuren. Er zal in ieder geval weer het nodige geld in gaan verdwijnen, en het is de vraag of het je dat allemaal waard is. Verder moet je, als je zelf dit ding zou willen bouwen, redelijk goed moeten kunnen solderen. En je moet het vooral leuk vinden, want MP3's zijn onderhand zo populair geworden dat er allerlei commerciele alternatieven komen.
Alternatieven
In het draagbare segment van de markt zijn er al een aardige tijd diverse spelers verkrijgbaar, en dit assortiment wordt het komende jaar nog verder uitgebreid. Nadeel van die dingen is dat er maar zo'n 32 MB geheugen op zit, goed voor een half uur muziek in HiFi-kwaliteit. Op een cd met MP3's kan je zo'n 12 tot 13 uur kwijt! Nou zal de hoeveelheid geheugen in de toekomst (door afnemende prijzen) wel toenemen, maar erg snel zal dit niet gaan. En de geluidskwaliteit valt vaak tegen volgens de tests. Voordeel is dat de apparaatjes erg klein zijn en absoluut niet over kunnen slaan door het gebrek aan bewegende delen. Dat zorgt er tevens voor dat het stroomverbruik van deze apparaten erg laag is waardoor je lang met je batterijen kan doen.
Er komen binnenkort ook draagbare apparaatjes uit waar je wel een cd in kan leggen. Voor in de auto en voor thuisgebruik zijn er naast oplossingen met cd-speler ook al apparaten verkrijgbaar met (verwisselbare) harde schijf. Zie onder andere hier en de M3PO van Terratec. Sony heeft zelfs ook al plannen in de wereld die MP3 heet, weliswaar maken ze er weer een eigen formaat van, maar toch. Dus we zullen nog wat beleven...