Here is my Week 7 update. In this video I mostly ...
# two-minute-week
c
Here is my Week 7 update. In this video I mostly show the output of the synthesizer with 3 different sound setups. Adding the effects units make things fun to play with! I didn't mention the technical aspects much in the video, but I've been working/thinking about: • How to manage the data structure to represent the timeline of note events. I have a prototype that involves a linked list of timeline events, allocated from a memory pool which is thread safe. It seems to work OK, but it is ongoing research. • Bugs! I had a significant bug with the 'widen' button on the master output. That just adds a small delay to the right stereo channel. Every time I turned it on I would get audio corruption. I eventually realized that this was caused by the spectrum analyzer(!) which was reading the graph 'too early' and breaking the 'history' buffer of the delay module. As I also mention in the video, I have an audio glitch which could be one of several things, but is most likely caused by the new effect modules. Hopefully this week I'll find time to get to the bottom of the audio problem and try to add a LFO to add more interesting sound effects. Now I have a large palette of units, I also want to try writing some 'ugens' to make synthesizer graphs. The current graph layout matches a synthesizer I have for my iPad, as I've mentioned before - Audio Kit Synth One. This is great because I can try to reproduce sound effects from that synth; but I want to move on from that and create my own layouts - since at the heart of this design is the idea that live coders can build synthesizers to match what they want to create and tweak them 'live'
šŸ˜Ž 1
šŸ‘ 2
In the video I manage to conflate the Stereo Pan and Phase effect. The Stereo Pan is doing some oscillation between R/L stereo, but the phaser is a different effect. As I've said before, the audio stuff is new to me, and I'm using the simple 'SoundPipe' 'c' modules. Phaser is described here: https://en.wikipedia.org/wiki/Phaser_(effect). The phaser code I call is here: https://github.com/SeesePlusPlus/soundpipe/blob/master/modules/phaser.c
i
Ah — your comment answered one of my questions, that being, "Are you implementing the effects yourself or using libraries?" I'll modify the question — are all the effects coming from libraries, or have you implemented some of them yourself? I'm curious to see how you do the GUI for the LFO.
c
I'm doing a combination of things; some of it is my own, such as the ADSR slopes (not technically an 'effect'). The infrastructure of Nodes and the data management is mine, but a lot of it winds up calling a simple 'c' function from soundpipe to do the processing inside the compute part of the Node. SoundPipe is great - it has very small c functions that just do one thing, and they are ported from CSound mostly. Screenshot of my work in progress addition of LFO
You can see there there are a pair of LFO oscillators in a node (beside the piano). Some units, such as the Oscillators beside it have buttons to enable modulations by the LFO; which is connected via a pin to the node. The buttons toggle which of the 2 LFOs are used.
I added a bit of layout management inside the nodes to help with adding the extra stuff, such as the divider, labels, etc.