Dweil

1 electron per seconde = 16 atto ampere!

Omdat ik ruime ervaring heb op het gebied van digitale audio, en zijdelings in aanraking ben gekomen met de digitale geluidsstudio, wil ik nu alle ervaring in de praktijk brengen met het maken van een digitaal mengpaneel.

Uiteraard zijn alle ideeën en commentaar welkom. Opmerkingen als "dit lukt je nooit" en "koop hem toch in de winkel" slaan we gewoon in de wind.

Het geheel moet als een modulaire puzzel gebouwd kunnen worden, zodat zowel een simpele als uitgebreide versie gebouwd kunnen worden.

De voordelen van een digitaal mengpaneel ten opzichte van een analoog type zullen de kenners wel weten. Enkele voorbeelden:

- Minder ruis/klankkleuring
- Automatiseringsfunctie
- Computer interface

Nadelen zijn er natuurlijk ook. De belangrijkste zal wel de prijs zijn. Een analoog mengpaneel is een stuk goedkoper te maken als een digitale variant. Ook de eventuele in-line delay moet in acht worden genomen.

Hieronder een blokschematisch overzicht van een digitale mixer:

http://img70.imageshack.us/img70/7909/mixerwo9.th.jpg

Het kloppend hart van de mixer is een Mixer engine, welke ik wil uitvoeren in de vorm van een FPGA. De functies die erin moeten komen is:

Voor elk kanaal (zowel in als uit) een signed multiplier voor de volumeregeling. Even spieken op de website van RME verteld ons dat hun een 40 bit multiplier gebruiken, 24 bit voor audio en 16 bit voor het volume-coëfficient. Dit betekend theoretisch dat er 65536 stappen voor het volume zijn. In de praktijk is dit minder omdat het gehoor niet echt linear is, maar logaritmisch.

het echte mixen van de signalen gebeurt in een signed parallel adder. Alle signalen van de ingangen worden opgeteld tot het eindsignaal, en vervolgens naar alle uitgangskanalen gestuurd.

Hele bovenstaande verhaal geld voor mono, dus voor stereo moet dit dubbel worden uitgevoerd. Door verschillen in multipliers voor rechts en links kunnen we een pan functie inbouwen. Hiervoor is dus geen extra hardware nodig. Voor een 5.1 mixer moet alles 6 keer worden uitgevoerd.

De Mix-FPGA wordt aangestuurd met een controller. Deze rekent alle coëfficienten uit, en stuurt deze naar de FPGA. Ook de user-I/O (display, schuifjes en knopjes en andere bedienelementen) worden bestuurd vanaf de controller.

Als je iets ziet in een ontwerp van een dergelijke mxer, laat een berichtje echter!

roelvh

Master Industriële Wetenschappen: Elektronica-ICT

Dweil

1 electron per seconde = 16 atto ampere!

Jammer, dit elektuur ontwerp is een analoog mengpaneel (met toeters en bellen)

Dweil

1 electron per seconde = 16 atto ampere!

Even wat theorie over de werking van de Mixer engine:

Hieronder een schematische weergave voor 4 kanalen:

http://img405.imageshack.us/img405/8216/mixertheorieyr7.th.jpg

De ingangen gaan eerst naar een vermenigvuldiger, die met een factor "e" vermenigvuldigd. Dit getal e staat voor de versterkingsfactor (ofwel het volume voor dat kanaal). Merk op dat het formaat van de ingangsdata signed binary is, dus van -8388608 tot 8388607 voor een 24 bits signaal. De versterkingsfactor e is 16 bits unsigned, dus van 0 tot 65535.

Het 40 bits uitgangssignaal hiervan wordt door de adder opgeteld met de data van de andere kanalen. Van de uitgang van deze adder gebruiken we de 24 op-twee-na MSB's, zodat zowel het ingangsignaal als het uitgangssignaal 24 bit is.

dus:



Uitgangssignaal adder 39..0:
39                                          0
+--+------------------------+---------------+
|12| Uitgangssignaal 24 bit | negeer/afrond |
+--+------------------------+---------------+

De reden het negeren van de eerste 2 bits, is om de versterkingsfactor e ook, behalve alleen te verzwakken, ook te laten versterken. 2 bits staat gelijk aan 4x, oftewel 6dB. Het dynamisch bereik van de volumeregeling voor elk kanaal is dus +6dB ... -oneindig dB.

Mocht 1 van de eerste twee bits toch 1 worden, betekend dat de uitgangswaarde meer is als toegestaan (clipping).

dexter

It's a good day for science!

Oef, dat gaat echt een hele klus worden. En duur idd, want 24bit AD/DA converters + analoog in/uitgangsfilter zijn niet echt goedkoop.

Er zijn nog een hoop dingen die nog niet aan bod zijn gekomen.

1 daarvan is synchronisatie en buffering. Je zult denk ik minstens 1 zeer stabiele master-clock moeten hebben die de boel nauwkeurig clockt zodat alles netjes synchroon loopt. Dus alle ADCs en DACs moeten synchroon lopen, dus ook zelfde samplerate.

Dat laatste gaat dus vervelend worden bij de digitale ingangen, want de ingangsdata is zowiezo niet gesynchroniseerd met de clock in je mengpaneel. Je zult daar dus een-of-andere nare sample-rate conversion, buffering en hersynchronisatie moeten toepassen.

Daarnaast wil je per kanaal ook nog enkele filters of zelfs equalizer hebben. Daarvoor moet je dus weer een FIR/IIR filter gaan toepassen. Verder wil je ook het 'volume' van elk kanaal kunnen meten, zodat daar VU-meters mee aangestuurd kunnen worden. Verder zul je ook meerdere bussen moeten bouwen voor PFL, SOLO etc.

Zo zijn er nog wel een hoop geintjes waar je aan zult moeten denken.

Als ik het zo zie ontkom je er denk ik niet aan om meerdere FPGAs / DSPs toe te passen die allemaal via een centrale microcontroller bestuurd worden.

Dweil

1 electron per seconde = 16 atto ampere!

Uiteraard komen er meerdere FPGA's en DSP's in. Deze dingen worden ook gebruikt in professionele apparaten dus daar had ik al stiekem rekening mee gehouden. Een FIR zal waarschijnlijk gebruikt worden voor dynamics. Ik ben nog een beetje in dubio over het gebruik van een FPGA, of een DSP hiervoor.

KT88

Overleden

" Ratings are for transistors.....tubes have guidelines" - www.audioconsultancy.nl -

Geweldig topic, dit!

Ik kan helaas weinig bijdragen, maar zal het aandachtig blijven volgen.

flipflop

"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein

Waarom meerdere FPGAs en niet een grote? Oa de Virtex serie van Xilinx heeft hardware vermenigvuldigers en DSP blokken.
Tamelijk ambitieus project wel...

Dweil

1 electron per seconde = 16 atto ampere!

FPGA's worden haast exponentieel duurder en onhandelbaarder met de grootte. We zitten hier aan de grens met BGA packages. Op zich voor mij geen probleem (werk), maar het zelf bouwen is er dan wel snel vanaf. ook het feit dat BGA packages moeilijk te hergebruiken zijn (reballen enzo) blijven we een beetje beperkt tot de wat bescheidener FPGA's. We moeten op een andere manier de resources wat weten te drukken dus.

Dweil

1 electron per seconde = 16 atto ampere!

Nu we het principe weten van de mixer engine wordt al snel duidelijk dat de praktische uitvoering hiervan nogal uitgebreid is. Voor elk kanaal moeten we een multiplier inzetten, en dan nog eens alle waarden optellen. Dit alles gaat met de snelheid van de samplefrequentie (Fs), bijvoorbeel 44.100 Hz.

Naar FPGA begrippen is dit traag en een FPGA heeft spreekwoordelijke emmers met snelheid. We moeten deze snelheid gebruiken om onze uitvoering simpeler te maken. De Multiply-Accumulate functie (MAC voor bekenden) kan hierbij helpen.

Hieronder een schematische weergave voor een seriële mixer engine, dit keer voor 6 ingangen:

http://img514.imageshack.us/img514/6721/macwr5.th.jpg

Het MAC gedeelte van het schema doet in wezen precies hetzelfde als de vorige, namelijk vermenigvuldigen en optellen. Alleen het optellen is iets anders, hij pakt namelijk de waarde die hij al had, en telt hierbij de aangeboden waarde bij op. Vandaar dat je de uitgang gekoppeld ziet aan een van de ingangen.

Het voordeel hiervan is, is dat we de verschillende kanalen van onze mixer om beurten aan de multiplier kunnen aanbieden (samen met de coefficienten). De accumulator telt als deze verschillende waarden op, net als bij het orginele, uitgebreide schema.

De waarden om beurten aanbieden doen we met een Multiplexer, voorgesteld door het MUX blokje. De bijbehorende coëfficienten (versterkingsfactoren) komen uit een Dual Port RAM. Deze heeft een aparte lees- en schrijfpoort, zodat we nieuwe waarden kunnen schrijven zonder dat deze het lezen beïnvloed.

De MUX en de Dual Port RAM worden door middel van een teller (counter) aangestuurd, zodat waarde en coëfficient bij elkaar blijft. Op het moment dat alle waarden bij elkaar zijn opgeteld (de teller gaat in overflow) hebben we de waarde die we moeten hebben uit de MAC en slaan we deze op in een latch.

Om een en ander beter te visualiseren, heb ik hier ook een schema met wat golfvormen van de MAC instructie:

http://img238.imageshack.us/img238/229/mmacwave0vq3.th.jpg

De multiplier_out waarde is de waarde van dataa X datab, met 1 klokpuls vertraagd. Bij result zie je dat de waarde steeds vermeerderd wordt met de waarde van multiplier_out (met een klokpuls vertraging).

Wat hebben we gewonnen met deze hele hoop? Er hoeft maar 1 keer een multiply gebruikt te worden, hoeveel kanalen er ook gemixt worden. Ook de code van de accumulator veranderd niet met het aantal kanalen. In theorie kunnen we oneindig aantal kanalen mixen, zolang de FPGA het maar bijhoudt.

Hoi,

Ik heb dit idee ook al een tijdje liggen.

Om een modulair ontwerp te maken, voor mix engines en control surfaces.

Ik heb niegeval voor de control interface nog een aantal motor faders liggen, en ik heb nog een tablet pc liggen voor de GUI. Deze zou als control brein kunnen dienen.

een keertje er over brainstormen?

grtz,
Vincent

Dweil

1 electron per seconde = 16 atto ampere!

Kijk Vincent, dat lijkt me nu nog eens een goed idee! BTW, ik weet dat ik de afgelopen paar dagen niet in deze thread heb geschreven, maar dat betekend niet dat ik niet met dit project ben bezig geweest. Als equalizer en dynamics heb ik gekeken naar realisatie in een FPGA, maar ik denk dat een DSP toch efficiënter is. Omwille van de prijs overweeg ik nu een TI TMS320C5409 DSP processor.

Ik heb nog een C6000 TI bordje liggen.

Ik een FPGA kun je heel goed EQ en dynamics maken. De beste methode om audio dingen in een FGPA te implementeren is gebruik te maken van TDM -> Time Differential Multiplexing.
Dezelfde logica per sample voor 16 kanalen gebruiken. Dus logica sharen over tijd binnen een sample. Gebruik maken van tijd sloten bijv.

Dweil

1 electron per seconde = 16 atto ampere!

Voor wie nu een beetje de draad kwijt is, hierbij een flowdiagram van een convolutional filter, die als equalizer gebruikt kan worden:

http://img503.imageshack.us/img503/8264/convolutionalfiltervo2.th.jpg

Linksboven komt het bronsignaal binnen (digitaal) en we zien in de bovenste rij een aantal D flipflops staan. Deze zorgen ervoor dat het signaal steeds wordt doorgeschoven naar de volgende trap.

Daarover zien we steeds multipliers (vermenigvuldigers) staan. De signalen worden uiteraard weer vermenigvuldigd met een constante, die extern toegevoegd worden. In dit geval zijn het 8 constanten, in werkelijkheid zullen dit er 32-128 zijn. De verzameling constanten bepaald het gedrag van het filter (low-pass, high-pass, bandpass, bandreject etc etc) en heet de filter "kernel".

Als voorbeeld zijn hier twee filter kernels (linker plaatjes) met de bijbehorende frequentie karakteristiek (rechter plaatjes)

http://www.dspguide.com/graphics/F_14_7.gif

Dit plaatje is afkomstig uit de DSP guide, www.dspguide.com

Nadat deze vermenigvuldigd zijn met de kernel, kan alles naar de adders in de onderste rij, waar de hele hap weer wordt samengevoegd tot 1 signaal. Dit samengevoegd signaal is vertraagd natuurlijk door de D flipflops. Dit is de reden waarom de kernel niet erg lang kan zijn voor onze toepassing, want dan wordt het signaal zo erg vertraagd dat het hinderlijk is.

Nu het flowdiagram bekend is, kan deze verwerkt worden in een computerprogramma, deze voeren we aan een DSP, die dit voor ons uitvoerd.

@Vincent: Heb jij ook iets tot je beschikking om je DSK te programmeren, misschien een JTAG emulator of zo iets? Ik ben nu stiekem aan het kijken naar een XDS510 kloon, maar laat me vriendin het niet weten want ik krijg er weer ellende mee... dat ding is duur..

joopv

Golden Member

Over digitale bronnen: Wat doe je met bronnen met verschillende samplerates? Als je bijvoorbeeld DVD geluid (48kHz) met CD geluid (44.1kHz) wilt mixen?

Verder zijn de digitale bronnen nooit synchroon, de ene CD speler geeft b.v. 44103 samples/sec af en de andere 44096 samples/sec. En alleen heel professionele CD spelers zijn extern te clocken.

S/Pdif is natuurlijk oude koek maar firewire heeft ook in audio zijn intrede gedaan.

Dweil

1 electron per seconde = 16 atto ampere!

Ik wil eigenlijk in dit stadium niet te zeer in detail treden, om "the big picture" niet uit het oog te verliezen. Om je vraag te beantwoorden: Simpel, we resamplen alles wat niet synchroon aan de masterclock is. Op die manier hebben we geen jitter en dat soort dingen. Natuurlijk moet je dat soort asynchrone bronnen bij voorkeur vermijden. Voorbeelden van synchrone verbindingen zijn: A-dat, R-bus en T-Dif. Mocht je dus nu onverhoopt toch een CD-speler willen aansluiten, kun je er ook voor kiezen om deze even te modificeren met een klok ingang. Daarnaast hebben de meeste digitale mixers niet zo heel veel asynchrone digitale ingangen, maar meer analoge. De A/D converters kunnen we wel synchroniseren met het master clock signaal.

zo,

'k ben net terug van vakantie.

'k kan de dsp programmeren via USB via een on board emulator.
Over de sample rates e.d. In een digitale tafel is het gebruikelijk dat er gebruikt wordt gemaakt van 1 masterklok. alle digitale signalen zullen daar aan voldoen, of moeten geresampled worden. Alle analoge in/uitgangen zullen ook gesampled worden met dezelfde masterklok.

Als ik op mn eigen Yamaha 01V96 de klok veranderd, gebeurd dit ook voor alle digitale in en uitgangen. Deze tafel is misschien ook wel interessant om als uitgangspunt te nemen, samen met de Vi6 van Soundcraft.

grtz,
Vincent

Ik vroeg me af,
zit er nog leven in dit topic.
Of is nuttig het weer leven in te blazen.

RES

RES

Heb wel eens een mixerprint gemaakt met een SSM2163 chip.
Maar door slecht printontwerp ruiste ie (digitale microcontroller ruis in audio geinjecteerd) nogal, en hoorde je teveel "zipper effect" in deze chip. Modernere chips zoals de WM8816 hebben geen last van dat "zipper effect". (wiper clicks)

http://www.pology.zp.ua/har/Files/PDF/ssm2163.pdf

http://img503.imageshack.us/img503/3162/1999jo7.jpg

Die SSM2163 is een 8 kanaals digitaal mixer chipje elke kanaal 6-bits resolutie (64 stapjes).

Ziet er fraai uit.
Is denk ik niet een digitale mixer maar een analoge mixer die digitaal wordt aangestuurd.

Digitaal is voor mij op het toneel het signaal digitaal maken en bewerken en in de zaal daar de controle over te hebben.
Pas bij de eindversterkers mogelijk naar analoog gaan en mischien zelfs dat niet
En dan moet het ook nog betaalbaar zijn. :-)
Betaalbaarheid kan je bereiken door uit te gaan van een modulaire opbouw zoals eeder in dit topic werd besproken.

Mijn reden voor he mogelijk opnieuw starten van deze topic is:
1)In live situaties veel kabel problemen tegenkom.
2)Er altijd een budget probleem is voor effect apperatuur efecten welke digitaal eigelijk eenvoudig zijn.
3)De multikabel kwetsbaar blijft. Is een digitale snake een oplossing?
4) met alle respect voor de muziekanten, ze met kabels komen van hun instrument, asymetrisch van meer dan 6 meter.
5)De geluids techneuten toch verschillend reageren op digitaal bediende tafels.
6) In low budget er een gemis in compatebiliteit tussen de creatieveling op een PC of Mac en een live situatie

Het zou toch mooi zijn een soort opensource project te hebben waarin men met alle creatieviteit gebruik kan maken van een audio mixer platform.

Er zijn veel voor en nadelen te vinden voor digitaal.
En analoog moeten we zeker niet afschrijven.

Genoeg voer om te mixen het liefst digitaal.

beertje_01

My Tube is bigger then yours

wat ik van plan ben is het volgende
linux met jack en een goede soundkaart
dan gebruik je ardour waar je dus een volledig digitale (virtuele) mixer hebt. routing mogelijkheden zijn eindeloos je kan inserts invoegen per kanaal (uitgang en ingang voor nogi op soundcard) zodat je eventueel nog outboard effecten kunt gebruiken.
of channel outputs als je van een bepaald kanaal een uitgang wilt.
je kan ook subkanalen aanmaken
het is echt eindeloos.
daarbij komen dan ook nog eens plugins (eq/flanger/gate/comp etc...)
als je nu een goede soundkaart hebt van pakweg minimum 16 kanalen (of miss nog meer) heb je je in en uitgangen van je mixer
leuke is nu dat je midi kunt gebruiken voor de virtuele mixer te gebruiken (een beetje als midibox)
dus al je nu een mixtafel bediening maakt met faders (al dan niet gemotoriseerd) en dergelijke die een midi uitgang heeft welke ardour bestuurt ben je er
eventueel kan je dan de pc met een mini formaat moederbord en lcd scherm in bouwen en heb je een enorm mooie digitale mixer.
grote kost is de soundcard en faders en dergelijke
software is gratis en opensource

Anoniem

Misschien is het een idee om motor-faders te gebruiken. Zo heb je eventueel de mogelijkheid om het aantal kanalen uit te breiden en te verdelen over verschillende fader-banken, welke automagisch op en neer rammelen zodra je van bank wisselt :).


En volgens mij moet ik eerst lezen ipv posten, aangezien het al een paar keer genoemd is :P

[Bericht gewijzigd door Anoniem op dinsdag 15 juli 2008 19:38:14 (18%)]

Ik wist het, ik moet me niet blind staren op bill gates
Ik was me niet bewust van het bestaan van Jack en Ardour.
Alles zo doorlezend heb ik wel het gevoel en vraagtekens hoe dit gaat werken in live situaties.
Ardour claimt geen EXTRA latency toe te voegen. ik weet dat elke regel code die geprogrammeerd word, processtijd kost.
Ik kan me zo voorstellen dat dit alles in een studio situatie geen probleem is. Vaak is de bron al digitaal aanwezig ofwel maakt men gebruik van ruwe opname waarna je alle tijd hebt om een uiteindelijke mix te maken.

Bij een live situatie wil je snelle controlle hebben op rondzingende microfoons enzo.

Is er iemand die ervaring heeft met het gebruik van deze software in live situaties ? en welke hardware wordt er dan gebruikt?

Het idee van deze digitale mixer als basis staat me wel aan.en ik geloof dat de software goed te gebruiken is.
Ik maak me wel zorgen over de Latency.
De hardware die nodig voor een live situatie is volgens mij meer als alleen een soundkaard. De bronnen bij een live situatie zijn niet altijd even stabiel en of niet van voldoende hardware qwaliteit "carbage in = carbage out"

Ofwel we komen weer aan op het punt waar we van analoog naar digitaal gaan, en de uitvoering daarvan.

Een gebruikers interface met een look en feel als een analoge mixer wordt zeker gewardeerd in live situaties.
Voor besturing heb ik slechte ervaring met midi.
Ik heb ooit een midi concertina ontworpen die draadloos de data verzond, dan is midi vanwege zijn protocol eiegenschappen niet bruikbaar.

In iedergeval alvast bedankt voor de hint richting Jack en Ardour.

Fuzzbass

Mijn echte naam: Joris | Mijn elektronica website: Fuzzcraft.com

Probeer vooral ook Reaper eens (http://reaper.fm) Fully functional try-out is te downloaden

5 ms latency is haalbaar in live-situaties met de juiste hardware.

beertje_01

My Tube is bigger then yours

Een deftige soundkaart van RME ofzo maar das natuurlijk wel rond de 1000€ minimum maar dan heb je ook wat
volledig gebalanceerd etc
miss dat je ook nog microfoonversterkers wilt die in of uitschakelbaar zijn.
qua latency zou ik me geen zorgen maken zelfs als je een goede pc en soundkaart (het belangrijkste) hebt is tegen de 1ms mogelijk.
Wat ik hier ook wel eens gebruik is een distributieversterker
maar das miss wat overkill (1 in 20 uit en zo 24 kanalen)
maar is wel volledig gescheiden met trafo's (lundahl)
je kan altijd nog outboard apparatuur gebruiken als je dat wilt. reken dan wel dat voor iedere insert je een uitgang en ingang op je soundkaart nodig hebt
ook voor iedere aux send heb je ene uitgang nodig en voor een return een ingang.

maar meestal is dit geen probleem. Als je een soundkaart koopt ga voor firewire (USB is out of the question voor low latency) of rechtstreeks op pci
bij firewire heb je meestal de mogelijkheid om door te lussen. als je bijvoorbeeld een soundkaart hebt van 16in/16 out kan je er zo'n paar op 1 firewire poort zetten.
latency valt dacht ik mee maar moet ik eens nakijken.

Het is verlijdelijk om dan de soundkaart op het podium te zetten en met 1 firewire kabeltje naar daar te gaan maar dat gaat vrees ik niet lukken.
maximum lengte van firewire is beperkt.

Je zou wel een gecombineerde mic/di schakeling kunnen maken voor op je podium die je eventueel via een rs485 lijntje kunt besturen dan zit je op lijn niveau om de lange afstand te overbruggen.