Analóg szintetizátor modellezése különböző oszcillátor algoritmusokkal

OData támogatás
Konzulens:
Dr. Bank Balázs Lajos
Méréstechnika és Információs Rendszerek Tanszék

Az analóg szintetizátorok 60-as, 70-es évekbeli elterjedése óta töretlen népszerűségnek örvendenek. Azonban a gyártók ma már nem gyártják ezeket a modelleket, ezáltal igény van klasszikus hangzások emulálására. A hangszerek számítógépes szoftverként való megvalósításai alacsony áron érhetőek el. Az egyik legelterjedtebb ilyen szoftveres formátum a Virtual Studio Technology, azaz VST.

Az szakdolgozatom során egy ilyen analóg szintetizátort készítettem VST környezetben. A hangszer a szubtraktív szintézis, azaz széles spektrumú jel szűrésének elvén alapul. Megismerkedtem a szintetizátor belső egységeivel (a jelgeneráló oszcillátorral, a szűrővel, az előerősítővel és a moduláló oszcillátorral) és ezek digitális implementációival.

Megvizsgáltam a jelgenerálás triviális megoldásának lehetőségét, melynél megjelenik az átlapolódás jelensége. A problémát redukáló algoritmusok közül a Differentiated Parabolic Waveform és Polynomial Transition Regions módszereket vizsgáltam, melyek hullámformák polinomfüggvényeinek deriválásán alapulnak. Alkalmazásukkal az átlapolódás mértéke csökkent.

Mindkét algoritmust kiterjesztettem változtatható kitöltési tényezőjű háromszög előállítására, a pulzusszélesség modulálásának érdekében. A módszer alapján meghatároztam a jelgenerálás egyes lépéseit. A DPW a kitöltési tényező hirtelen változására érzékeny módszernek bizonyult, míg a PTR korlátozások nélkül használható. A további összehasonlítás során a PTR számításigénye kisebbnek bizonyult, így a szintetizátorban ezt az algoritmust implementáltam a szoftverben.

A szűrőt a Minimoog szintetizátorban található típus digitális modellje alapján valósítottam meg. Az implementáció kedvező tulajdonsága, hogy a megvalósított szűrő törésponti frekvenciájának modulálása során a tranziensek nem jelentősek. Az erősítőt egy ADSR típusú burkológörbe-generátorral vezéreltem.

A MATLAB-szimulációk után a szintetizátort átültettem VST környezetbe a Steinberg VST SDK csomagja segítségével C++ nyelven.

Letölthető fájlok

A témához tartozó fájlokat csak bejelentkezett felhasználók tölthetik le.