Synthesizer Gui's

Galo

Ey, n eigen titel, Sjiek!
Lid sinds
13 februari 2006
Berichten
514
Locatie
Gekkenhuis
Beste mensen,

Ik vroeg me vanmiddag ineens af, hoe worden de Gui's op een "moderne" synth gemaakt, welke Ide's en api's zijn hiervoor nodig of is dit gewoon een java vm, c, asembly of een al bestaande basis os die standaard te verkrijgen is ?
 
In de praktijk zal er wel een (huiseigen?) RTOS (real time operating system) op draaien.
Sommige synths draaien trouwens gewoon op een linux-variant (Korg Oasys, Hartmann Neuron).
Voor de aansturing van LCD displays heb je allerlei libraries beschikbaar.
 
:erm: Damn, wat voel ik me opeens A-technisch...
 
Denk een mix van c en assembly waarmee ze code voor een cpu in een flash zetten en die ook de code voor DSP's verder laad. En dat draait dan allemaal met een minimum aan overhead.
En dingen zoals LCD's aansturen is ook relatief heel makkelijk omdat die vaak ook al hun eigen onboard cpu hebben.
 
Daar zijn (soms) libraries voor, meestal in C, soms ook in assembly (hangt af van de fabrikant). Als het om grote schermen gaat zoals kleurenschermen dan is het meestal in C. Men gebruikt bij die zaken overigens geen object geörienteerde taal zoals Java of C++ omdat die te veel overhead produceren. Of het is te moeilijk om een compiler te maken die een minimum aan overhead produceert bij die complexere talen. Als men een FPGA of een CPLD gebruikt dan zijn hier meestal wel VHDL libraries voor, doch ook niet altijd en ook niet voor elk schermpje dat te koop is natuurlijk.

Als het om een klein LCD'tje gaat dan kun je dat gemakkelijk zonder voorgeschreven driver aansturen overigens. Gaat het om een complexere LCD dan is het wat meer werk maar niet noodzakelijk moeilijker - als je weet waar je mee bezig bent tenminste - in de datasheet van het schermpje in kwestie vind je dan een waarheidstabel of iets anders waar je uit kunt destilleren hoe je het schermpje moet aansturen. Vaak gaat het dan ook om een schermpje die al wat logica op z'n eigen bord heeft, kun je dan bijvoorbeeld aansturen via een seriële interface zoals I²C of SPI of een variant hierop.

Zoals fuse het al zegt gebruikt men inderdaad vaak een mengeling van assembly en C; assembly voor de zaken die tijdkritisch zijn en bijgevolg zo weinig mogelijk overhead mogen hebben, en C omdat het voor sommige zaken vlugger code tikken is maar vooral omdat de meeste mensen in C programmeren aangenamer vinden.
 
Mijn moderne synths hebben niet echt een GUI (Graphic User Interface), mijn oude synths ook niet..
Ik ben al blij als er een 2 regelig lcd inzit, maar vaak ook nog niet eens en missen doe ik het ook niet echt :D

Daar hebben we knoppen en schuifies voor :)


Is het geen PLC besturing soms?
 
PLC valt behoorlijk buiten de scoop hoor. Da's nl. heel wat anders.
 
heeft iemand ook enige links voor me met betrekking tot de asm/c libraries ?
 
Waarom zou je dat willen?

Ga je je firmware van je VA synth 'circuit benden' ?

Dat zou wel stoer zijn. :)
 
Origineel geplaatst door Steven V
Daar zijn (soms) libraries voor, meestal in C, soms ook in assembly (hangt af van de fabrikant). Als het om grote schermen gaat zoals kleurenschermen dan is het meestal in C. Men gebruikt bij die zaken overigens geen object geörienteerde taal zoals Java of C++ omdat die te veel overhead produceren. Of het is te moeilijk om een compiler te maken die een minimum aan overhead produceert bij die complexere talen. Als men een FPGA of een CPLD gebruikt dan zijn hier meestal wel VHDL libraries voor, doch ook niet altijd en ook niet voor elk schermpje dat te koop is natuurlijk.

pancake%20bunny.jpg


;)
 
Origineel geplaatst door fuse
Waarom zou je dat willen?

Ga je je firmware van je VA synth 'circuit benden' ?

Dat zou wel stoer zijn. :)
Het lijkt me behalve stoer ook verdomd lastig als je het allemaal moet reverse-engineeren (of om uberhaupt al uit te vinden wat er allemaal in de sysex staat en waar het voor dient).
 
Origineel geplaatst door Ic3gl0vE
pancake%20bunny.jpg


;)

waarom reageer je dan?
 
Origineel geplaatst door Ic3gl0vE
pancake%20bunny.jpg

Ik dank je van harte; een vers geperst konijntje gaat er ten huize Steven V altijd in :W

Firmware gaan "circuit benden" (wat het niet zou zijn aangezien firmware geen circuit is) ofte dus - juister - gaan veranderen lijkt me op z'n minst een dwaze onderneming want:

1) Je hebt de sourcecode van het OS van de synth in kwestie niet. De fabrikant zal die je overigens niet geven.
2) Mocht je toch de sourcecode hebben, dan moet je nog je gewijzigde OS in de MCU gaan krijgen.

Je begint beter zelf iets vanaf de grond. En als je er niets van kent, niet aan beginnen. Tenzij je heel gedreven bent en veel (en dan bedoel ik veel) boeken wilt gaan studeren. Als je totaal geen ervaring hebt met elektronica (bijvoorbeeld als je niet weet wat een capacitor is - ik zeg maar wat), raad ik het nog sterker af. Je kunt natuurlijk proberen maar ik betwijfel heel sterk (en dat is helemaal niet negatief bedoeld) of je ver laat staan ergens zult komen.
 
Voor mijn eindwerk van mijn ingenieursstudie moest ik bij Barco een deel van de ontwikkeling doen van een projector. Heel de software was in C geschreven, en een speciale compiler 'vertaalde' dat in assembler code en die code kwam dan in de microprocessor terrecht. Er waren ook enkele displays op die projector, en daarvoor was er een C libery (nu ja, niet dat dat moeilijk is om dat zelf in assembly te doen).
 
De meeste synths zijn opgebouwd uit 3 stukken:
1) De GUI. Deze laag doet input van de knoppen (zowel draai, als drukknoppen) en output (ledjes aan/uit sturen) en LCD schermpjes updaten. Een keyboard is dus ook onderdeel van de GUI. Bij veel synths heb je een instelling LOCAL ON/OFF. Dit wil gewoon zeggen dat de GUI al dan niet de note-on/off commando's alleen naar de controller moet sturen of ook doorlussen naar de MIDI-OUT.
2) De Controller. Deze laag krijgt input van de GUI en meestal ook van de MIDI interface. De Controller zal zowel de GUI aansturen (bv. een NOTE ON commando triggert een ledje op het toestel). De controller zal ook de DSP aansturen (meestal een low-level bus). De data die hierop komt is bv. start de oscilator met een bepaalde frequentie gebruik makend van deze filter envelope, ... of zet de cutoff frequentie op waarde X.
3) De DSP is het eigenlijke hart van de synthesizer. Deze produceert het geluid. Hij krijgt de commando's van de controller.
De GUI en Controller laag zijn meestal in een high level language geschreven (C, C++, Java, ...). De DSP is meestal in machinetaal geschreven.
 
Mensen ik hoor wel allemaal een hoop hocus pocus over GUI's maar GUI is een Graphic User Interface en geen operating systeem of een besturing van je knoppen lijkt mij...

En een 2 digit lcd noem ik geen grafische gebruikersinterface maar gewoon een LCD'tje...Is dat niet gewoon machinetaal? Want dat is toch zo basic ofniet? Of anders wordt die display toch gewoon aangestuurd door het OS van de synth....

Als we dan toch diep op de materie willen gaan, laten we dan wel juist benoemen. Of mis ik hier iets en ben ik gewoon een aap?

Vsynth die heeft dan weer wel een GUI ;) en een Clavia G2 ook...
 
Back
Top