Schrijf je eigen soft-synth!

WaveGuide7

Gedeactiveerd account
Lid sinds
12 november 2009
Berichten
1.152
Het synthforum heeft, heel terecht, een apart subforum zelfbouw. Daarmee wordt natuurlijk bedoeld: de bouw van electronische schakelingen waarmee je toongeneratoren, filters etc. maakt, gewapend met een soldeerbout, een scoop en weet ik wat al niet - ikzelf heb twee linkse handen en wordt al zenuwachtig als ik een niew lampje in het achterlichtje van m'n fiets moet zien te friemelen.
Maar een beetje typen kan ik wel en met behulp van wat (zelfs gratis te downloaden) ontwikkelsoftware kun je in een paar minuten tijd een luidspreker miraculeus in trilling brengen simpelweg door een paar regeltjes tekst in te kloppen! Dus je zou denken dat daar op het synthforum belangstelling voor moet bestaan: lekker goedkoop, je hoeft niet elke dag naar de electronica-winkel, krijgt geen vieze handen en wordt niet voortdurend geëlectrocuteerd.

In deze draad kun je terecht met vragen en opmerkingen over het schrijven van je eigen soft-synth. Hoe maak ik een toongenerator? En een filter? Hoe mix ik twee geluiden? etc.

Het is misschien goed om direct af te spreken dat we in deze draad geen "moeilijke woorden" gaan gebruiken voor zover die niet direct ook ter plekke worden uitgelegd. Dus ik heb hierboven zelf al gezondigd tegen die regel, want als je vraagt hoe je een toongenerator of een filter maakt, ga je er stilzwijgend van uit dat iedereen weet wat dat voor dingen zijn.
Zo kan deze draad met name heel geschikt worden voor absolute beginners. Voor meer gevorderenden zijn er voldoende andere discussies zoal die over Physical Modelling of DSP.
 
Ik ben wel benieuwd naar welke ontwikkelsoftware wordt bedoeld, op een of andere manier heb ik altijd meer interesse in regels in kloppen dan lijntjes trekken tussen blokjes, maar welke software helpt mij dan het best vooruit?
 
idd ik ben ook wel benieuwd met welk programma je dit doet :

Maar een beetje typen kan ik wel en met behulp van wat (zelfs gratis te downloaden) ontwikkelsoftware kun je in een paar minuten tijd een luidspreker miraculeus in trilling brengen simpelweg door een paar regeltjes tekst in te kloppen!
 
check 'processing' eens, dat is een programma gemaakt voor kunstenaars enzo om snel te kunnen programmeren. je kan er oa je boxen mee aansturen (bytearray richting boxen sturen).
ik weet wel niet of het stabiel genoeg is om een deftige synth in te schrijven.
 
In de categorie opmerkingen hier dan wat jamdemo's en screenshots van mijn homemade softsynth, Miep: http://zmooc.net/miep/. Als ik tijd en zin heb, komt ie in de loop van 2010 een keer publiekelijk beschikbaar.

In mijn geval is de gratis ontwikkelsoftware de met Linux meegeleverde gcc (g++) compiler en een teksteditortje, aar dat is denk ik niet waar WaveGuide7 op doelt:D Als je een beetje kunt programmeren, is een softsynth bouwen ook geen rocketscience:geslaagd: Alleen voor filters heb je ofwel gedegen kennis van DSP nodig, maar er zijn tooltjes genoeg om ook dat lekker makkelijk te maken. In Miep heb ik nu denk ik zo'n 1000 uur gestoken. Megagroot probleem bij het schrijven van softsynths is dat je nogal snel afgeleid raakt en ermee gaat spelen in plaats van door te coden8o) Ik stel me zo voor dat je daar een stuk minder last van hebt met zelfbouw hardware synths.
 

Attachments

  • too_many_knobs18.png
    too_many_knobs18.png
    123,9 KB · Bekeken: 57
In deze draad kun je terecht met vragen en opmerkingen over het schrijven van je eigen soft-synth. Hoe maak ik een toongenerator? En een filter? Hoe mix ik twee geluiden? etc.

Nou, ik ben wel eens benieuwd hoe je bijvoorbeeld een simpele polyfone synth met 3 waveforms een resonant lowpass filter en een adsr , met key-scaling van het filter en een LFO als VST programmeert , liefst met een paar regels tekst. (Volgens mij is dat echt enorm veel werk???) Kun je eens in grote lijnen aangeven hoe je zo'n project aanpakt, en wat dan het uiteindelijke resultaat is?

Deze topic is als ik het goed begrijp dus voor de echte codekloppers?
 
Ik denk niet dat wij een waardevolle bijdrage aan deze discussie kunnen leveren, omdat WaveWizard niet in ons leven is en wij dus peop praten als het gaat om de theorie achter geluid en muziek.
 
Ik kan wel redelijk in Basic programmeren, maar is dit genoeg om echt een softsynth te schrijven.
Ik bedoel, als iedereen dit 1 2 3 kan dan waren er vast wel veel meer Soft-synths. Moet je minimaal in C++ kunnen schrijven wil je een beetje in de richting komen, of hoe zit dat?
 
Ik kan wel redelijk in Basic programmeren, maar is dit genoeg om echt een softsynth te schrijven.
Ik bedoel, als iedereen dit 1 2 3 kan dan waren er vast wel veel meer Soft-synths. Moet je minimaal in C++ kunnen schrijven wil je een beetje in de richting komen, of hoe zit dat?

De programmeertaal maakt niet zo veel uit. Wat wel uitmaakt is de snelheid waarmee je programma uitgevoerd kan worden. Daarvoor is het van belang dat je je programma kunt "compileren" naar een "echt" programma en dat die compiler dat zo efficient mogelijk doet. Als je een goede Basic compiler hebt dan kun je prima een softsynth in Basic schrijven. Wel is het zo dat het in talen als C en C++ wat makkelijker is om efficiente programma's te schrijven die alle features van je computer benutten.

Behalve dat is het natuurlijk belangrijk dat je taal voldoende constructies biedt om met audio en midi enzo om te gaan. Ik denk dat vrijwel alle talen daar wel iets voor bieden. En dan is nog van belang of je programmeertaal ondersteuning biedt voor "real-time" dingetjes om een zo laag mogelijke latency te verkrijgen.

Overigens zou ik je niet aanraden om in Basic uberhaupt een groot programma te schrijven; er zijn legio programmeertalen waarmee het veel makkelijker is om een onderhoudbaar en stabiel programma te schrijven.

Dus ik denk dat iedereen die kan programmeren ook wel een softsynth kan schrijven. Er zijn er volgens mij dan ook ontzettend veel; er zijn echt ontelbaar veel VSTs en dan zijn er waarschijnlijk nog duizenden hobby-projectjes. Die zie je alleen nooit, want een soft synth schrijven is dan misschien niet zo heel moeilijk, maar er een gebruikersvriendelijk stabiel programma van maken waar anderen ook wat mee kunnen en dat onderhouden is in de praktijk gewoon ontzettend veel werk. En je programma zo efficient maken dat je tientallen voices tegelijk kunt aansturen, vergt ook onwaarschijnlijk veel tijd en doorzettingsvermogen. Maar als je kunt programmeren, dan kun je dat ook:-)
 
wow!!

wow!!

Is een toon-generator, uitgedrukt in code, niet toevallig een (instabiele) paradox ? (http://nl.wikipedia.org/wiki/Paradox_(logica) onderaan de pagina)

Hoewel ik je vraag totaal niet begrijp:?:?:?:?:?:?:?:?:?
durf ik met absolute zekerheid te beweren dat een toongenerator geen paradox is!, (laat staan een instabiele, wat je daaronder in vredesnaam ook moge verstaan).

Maar ik ben wel echt heel benieuwd hoe je op die vraag komt! Kun je er wat meer over kwijt? Ik kan je gedachtengang niet volgen!

Verder is de code voor een primtieve toongenerator vreselijk simpel. Maar eentje waar echt muziek in zit, dat is heel iets anders!
Deze draad is juist bedoeld om je een idee te geven van wat wel en wat niet moeilijk te maken is.
 
Nou, ik ben wel eens benieuwd hoe je bijvoorbeeld een simpele polyfone synth met 3 waveforms een resonant lowpass filter en een adsr , met key-scaling van het filter en een LFO als VST programmeert , liefst met een paar regels tekst. (Volgens mij is dat echt enorm veel werk???) Kun je eens in grote lijnen aangeven hoe je zo'n project aanpakt, en wat dan het uiteindelijke resultaat is?

Deze topic is als ik het goed begrijp dus voor de echte codekloppers?


Ja, het is ofwel een soldeerbout vasthouden, ofwel codekloppen. Vanzelf gaat het niet:)

Verder is het voorbeeld wat je noemt, met alle eisen van golfvormen en filtering heel goed mogelijk en zelfs relatief eenvoudig. Ik zal verderop een paar voorbeelden van mijn eigen soft-synth WaveWizard (C++, 50.000 regels).

WaveWizard is geschreven voor het onderwijs, om leerlingen te laten ontdekken wat een synthesizer is, maar ook hoe je een soft-synth schrijft. Je kunt ook programmeren in WaveWizard, want het heeft ook een "code-klop"-venster (Commando-venster) en gedraagt zich als een eenvoudige taal, met zeer krachtige audio-functies (bijv. FFT, DFT, amp. afhankelijk Butterworth-filter met instelbaar aantal polen). Verder bevat de software een scoop en een spectrum analyzer, een sonogramfunctie.
Maar het belangrijkste van WaveWizard is dat je er zelf code in kunt schrijven en formules kunt invoeren en doorrekenen en ook direct kunt afbeelden en hoorbaar maken. Dat is voor het onderwijs echt absoluut noodzakelijk en als leerschool voor het maken van je eigen soft-synth een heel mooie opstap, want een aantal lastige problemen, die zmooc hierboven al signaleerde, zoals het koppelen van een software-ontwikkelprogramma aan MIDI en Audio, zijn al voor je geregeld, zodat je direct aan de slag kunt.
 
(...)

Als je een beetje kunt programmeren, is een softsynth bouwen ook geen rocketscience:geslaagd: Alleen voor filters heb je ofwel gedegen kennis van DSP nodig, maar er zijn tooltjes genoeg om ook dat lekker makkelijk te maken. In Miep heb ik nu denk ik zo'n 1000 uur gestoken. Megagroot probleem bij het schrijven van softsynths is dat je nogal snel afgeleid raakt en ermee gaat spelen in plaats van door te coden8o) Ik stel me zo voor dat je daar een stuk minder last van hebt met zelfbouw hardware synths.

Megagroot probleem? Juist dat spelen is ook noodzakelijk en geeft veel nieuwe ideeen!

Ben wel benieuwd naar de tooltjes die je noemt.
Trouwens voor het schrijven van eenvoudige, maar toch zeer krachtige filters die ook redelijk goed verklaarbaar zijn, heb je nauwelijks enige DSP-kennis nodig, dat bewijst de al genoemde Sound Design cursus voor scholieren.
Ook het allerbelangrijkste en meest veelzijdige filter in spraak en muziek, het 2de-orde resofilter, is goed te bespreken (al gebeurt dat niet in de Sound Design cursus).
 
Om snel een VSTplugin te maken, met of zonder hulp van C++, gebruik:
- http://www.synthedit.com/
- http://synthmaker.co.uk/

Zeer geschikt voor beginnende ( en gevorderde ) gebruikers, een hoop informatie over te vinden en aardig wat mensen die hulp bieden.
Er zijn nog wat meer van dit soort programmaatjes, maar deze 2 zijn het populairst (samen met max-msp).

De VSTsdk is voor veel mensen nogal pittig, een goede basis in C++ én DSP is echt nodig.
En dan heb je alleen nog maar de plugin, geen GUI, dat moet dan apart nog weer gemaakt worden.
 
Back
Top