In the process of learning to use synthio, it was a challenge to understand the myriad of possible connections between modules. As a result, project design notes and sketches became a rat's nest of entangled symbols and wiring. Although simple single-voice designs without filters or LFOs were easy to deploy and document, it became clear that there was more to discover inside the extensive versatility of synthio.
Perhaps a set of symbols with consistent notation (and color-coded arrows, of course) would be useful to further learn about synthio and to develop project conceptual diagrams.
Here's the beginning of some symbols for synthio objects with class properties and methods together with data types. Essential tools such as audiomixer and audiobusio are also included.
- Add fundamental synthio classes and methods such as:
- synthio.from_file( )
- synthio.midi_to_hz( )
- synthio.voct_to_hz( )
- Further test each object to confirm functionality and expand descriptions.
- Provide examples of how an object's composite symbol can be used with others to describe a project design and discuss interconnection particulars. Use cedargrove.Chime as the first example.
This block is used to define a synthio.Synthesizer object, the fundamental sound generator of synthio. The Synthesizer is connected to audio output devices through audiomixer, audiobusio, audiopwmio, or audioio.
This block is used to define a synthio.Note object that will eventually be played by the synthesizer block. Primary property values are
amplitude. If omitted from the Note definition,
envelope are prescribed by synthio.Synthesizer properties.
Conversion of MIDI note or volt-per-octave (voct) values to frequency (Hz) is accomplished with the
synthio.midi_to_hz( ) or
synthio.voct_to_hz( ) helpers.
This is a low-frequency oscillator block.
This block is used to define a synthio.Envelope object to shape the sound of a played note. It is associated with synthio.Note or synthio.Synthesizer.
This block is used to define a synthio.Biquad filter object for use by synthio.Note. Biquad objects are usually constructed via one of the related methods on a synthio.Synthesizer object rather than directly from coefficients.
This class is used to define an audiomixer.Mixer object, an audio buffer and mixer. The Mixer accepts a variety of audio stream inputs and is connected to audio output devices through audiobusio, audiopwmio, or audioio. Use of Mixer is recommended for providing additional stream buffering to improve audio playback reliability and quality.
This class is used to define an audiomixer.MixerVoice object to act as an input for audiomixer.Mixer.
Output an I2S audio signal. Creates an I2SOut object associated with microcontroller pins. This class converts an incoming audio sample stream to the I2S audio output protocol.
Output a PWM audio signal. Creates a PWMAudioOut object associated with microcontroller pins. This class converts an incoming audio sample stream to the PWM output pins.
Output an analog audio signal. Creates a AudioOut object associated with microcontroller analog DACs. This class converts an incoming audio sample stream to the analog DAC output pins.
Attribution: Patch Symbols from PATCH & TWEAK by Kim Bjørn and Chris Meyer, published by Bjooks, are licensed under Creative Commons CC BY-ND 4.0. Some Patch Symbols were modified to create the synthio symbols BlockInput, MixerVoice, Note, Synthesizer, sample, and voice.