programmeren: oscillators

Rvooh

Gepokt en gemazeld
Lid sinds
9 december 2002
Berichten
7.585
Locatie
la côte belge
Ben al een tijdje op zoek naar deftige literatuur/tutorials/broncode om zelf oscillatoren te schrijven (bij voorkeur C of C++).

Vooral voor de blokgolf weet ik niet echt wat de beste methode is.
Aangezien hier wel wat programmeurs zitten probeer ik raak.

alvast bedankt :okdan:
 
Ben al een tijdje op zoek naar deftige literatuur/tutorials/broncode om zelf oscillatoren te schrijven (bij voorkeur C of C++).

Vooral voor de blokgolf weet ik niet echt wat de beste methode is.
Aangezien hier wel wat programmeurs zitten probeer ik raak.

alvast bedankt :okdan:

mja er zijn diverse mogelijkheden, maar je zou een sinusgolf kunnen shapen door er een <.5 = 0 en >.5 =1 modificatie op uit te voeren bijvoorbeeld. Door dat referentiepunt (.5) te verhogen of te verlagen kun je mooi de pulsebreedte modificeren :) Hoef je dus alleen maar je sinusgolfcode doorheen te jassen :)
 
ik heb hier echt 0 ervaring mee. Ik begrijp wel wat je bedoelt maar de implementatie ervan is wat anders...
nu heb ik idd verschillende mogelijkheden al gezien.

ik heb al dsp broncode staan bestuderen met bvb blokgolven (vermoedelijk) en sinusgolven die LFO's moduleren.. maar echt geluid genereren is er bij mij nog niet van gekomen. Er is heel weinig literatuur over te vinden.
 
mja als je echt op C nivo aan de gang gaat is het knap lastig,

waarom ga je niet eerst eens wat stoeien met een audio development tool?

www.Synthmaker.co.uk biedt bijvoorbeeld een hele mooie development omgeving met een aantal basis "primitives" waarmee je je eigen VST en EXE applicaties kunt bouwen EN ze hebben de mogelijkheid om er je eigen algoritmes aan toe te voegen (code blokken). Als je daarmee vertrouwt bent kun je vervolgens op een wat meer hardcore manier gaan verder coden als je dat perse wilt.
 
omdat ik niet wil stoeien, ik heb zo al tijd tekort. Ik ben dan ook niet van plan om een heuse synth te bouwen: ik heb gewoon die basisgolfvormen nodig voor een project.

In de eerste instantie komt het in een Audio Unit, maar later zou ik graag vst/rtas ports maken. Er is niets op de markt die de mogelijkheden heeft die ik nodig heb. (sst kga niet alles verklappen).
Ik ben momenteel met Objective-C bezig, vandaar dat ik belang hecht aan C, C++ sourcecode.


ik had ook al deze pdf staan: Developing Supercollider Unit Generators Under GNU/ Linux part II: square wave
maar ik had wat moeite om het helemaal te vatten omdat ik niets ken van de Supercollider omgeving.
 
synthmakerosc1.jpg

synthmakersquarewavemul.jpg


In synthmaker doen ze dus van twee SAWs de sync aanpassen en daarna multiplien..
 
SQUARE: is dat niet gewoon genoeg sinusjes met elkaar vermenigvuldigen?
 
ondertussen is het me mooi gelukt (het DSP gedeelte althans), genereert perfect wat ik wil qua waveforms.

zitten er hier toevallig mensen met c++ & Audio Unit (OSX) ervaring die even tijd hebben om mijn projectje te bezien? Momenteel is het nogal een "gehackte" versie van de sinwave.cpp & sinwave.h code (met wat losse eindjes in comments dat ik niet aan de praat krijg).
Wie dit ziet zitten, stuur me een privébericht. alvast bedankt.
 
Ben al een tijdje op zoek naar deftige literatuur/tutorials/broncode om zelf oscillatoren te schrijven (bij voorkeur C of C++).

Vooral voor de blokgolf weet ik niet echt wat de beste methode is.
Aangezien hier wel wat programmeurs zitten probeer ik raak.

alvast bedankt :okdan:

voor een blokgolf zet je getimed gewoon een al dan niet virtuele poort aan en uit.
door de aan /uit tijd te varieren krijg je pwm.
dit is de meest basic methode om een blok te krijgen.
zelf doe ik altijd wavetables uitlezen , werkt het makkelijkst en is het meest variabel.

maar er zijn ook natuurlijk allerlei geinige algorithmes te bedenken( wel zelf doen svp:D:biertje:)
sucses.
groeten,
jeroen
 
thx jeroen,

echter ben ik er al geraakt, een kleine aanpassing van de standaard audio unit template in XCode:

ipv:
float out = pow5(sin(phase)) * amp * globalVol;
is het zoiets geworden:
float sq_out = (sq_phase > pi);

als je pow5 wegdoet krijg je overigens een mooie sinus.

Werkt perfect hier, applicatie bijna af, nog even de user interface verzorgen...
 
Als je dat pow5 ook nog aanpasbaar weet te maken heb je iets wat lijkt op een non-resonante lowpassfilter :). De Novation Nova, AN1x, Audjoo Helix e.d. hebben ook zo iets - voor de daadwerkelijke filter nog harmonischen verwijderen, maar volgens mij werken die met een soort FFT-trucje.
 
Mocht je nog op zoek zijn naar een bijbel voor DSP's, oscillatoren, synths etc. dan kan ik deze bijbel wel aanbevelen. Niet goedkoop (60 EUR), wel allesomvattend (1200 pagina's):

The Computer Music Tutorial

Alweer uit 1996, maar de meeste theorie is al jaren hetzelfde.
 
Back
Top