The goal of my project is to create a synthesizer in Faust by combining an acoustic model of a simple pipe organ and circuit models of some wavefolders, such as the Buchla 259 Wavefolder. The learning goals of my project are to learn acoustic modeling and implement non-linear models in Faust.
|3||Continue exploring physical modeling and pipe organ acoustics|
|4||Begin first implementation of acoustic model in Faust|
|5||Demonstrate prototype acoustic model and maybe some GUI||Progress Demo|
|6||Start looking at wavefolders and other non-linearities and begin implementation in Faust. Continue to improve organ model|
|7||Continue working on implementation and begin improving GUI|
|8||Continue improving project, if there is time add complexity to organ model|
|9||Final revisions and write-up|
|10||Presentation||Final Project Presentation|
The major anticipated difficulty with this project will be learning about acoustic modeling and creating a model of some organ pipes. Their implementation in Faust might also not be that straightforward.
Progress updates go here:
Mostly have been reading musical acoustic literature in regards to the mechanism inside a pipe organ and the signal processing techniques used to replicate them. Of particular note is the digital waveguide model used in STK library.
A semi-working digital waveguide model of a air-jet driven resonator (flutes, recorders, organs) in Faust can be downloaded below.
This model is qualitatively tolerable, but could be improved my simulating the pipe resonance based on the pipe geometry and better simulating the turbulence pressure excitation.
The next step is to use this singular pipe to generate a polyphonic JUCE synthesizer and continue researching methods for pipe acoustic simulations. A very promising paper is Andrew Allen and Nikunj Raghuvanshi, "Aerophones in Flatland: Interactive Wave Simulation of Wind Instruments"
Integrating Faust -> JUCE. I went about achieving polyphony in a different manner than the Faust tutorial and some of my classmates. I instead used JUCE's Synthesier class to manage polyphony instead of the Faust polyphony class. This seemed to work well. I also created a github:
I've implemented a three-rank organ voice model in JUCE using Faust as a DSP engine. There is a an issue with clicking when the voice is activated that I have not been able to track down. Additionally the Faust waveguide engine has some issue with doing higher frequency pipes, unsure why that is. They seem to be "breathier".