There was something that seriously annoyed me about yesterday's instrument graph. The use of the Multiply() and the Sum() is bothersome; I'm used to expressing this functionality in a more concise manner using the * and + operators. Download today's code here. This doesn't work for me: return Multiply(Sum(a1, a2), RiseFall(dur, 0.5)) Thankfully, ... read more.
Python can be molded to look like an audio synthesis language with the help of decorators. In my last post, I showed an instrument graph built within a Python iterator class. However, Iterator classes are too clunky looking, and require more work than should be necessary for creating a simple ... read more.
I built an iterator class from the graph in yesterday's example. Read and download the full script here. Let's take a look at the class, then discuss the implications: class MyInstr: '''My Instrument''' def __init__(self, dur, amp=1.0, freq=440, tune=12): ... read more.
I wanted to generate a control-rate signal with my Python-Slipmat prototype. To my surprise, doing so was fairly straight forward; Python iterator classes have a control-rate mechanism built right in. Read and download the full script at snipt. I designed a simple envelope that generates a rise-fall shape. By default, the rise ... read more.
Yesterday's python script rendered 1 frame of a rudimentary additive synthesizer. Today's script renders 1 second. You can download the complete example at textsnip or at snipt. To render multiple frames of audio, I added two classes: Mixer and Run. class Mixer: '''A simple mixer.''' ... read more.
I wrote a sine oscillator as a Python iterator class. Not the fastest digital oscillator in the world. Though for now, doing prototype work in pure Python will do just fine, even if it means slow render times. In the long run, Slipmat will require a powerhouse of an engine ... read more.