Introduction
Zyphr is an audio sketchpad for desiging sound and prototyping music.
It is primarily made for the design, creation, and generation of loops as a starting point for music production. This documentation serves rather as notes and source of reference for the development of the program than a user guide. Meanwhile here are early web prototypes of modules like synth and synthetic noise shaker to play around with.
Interface
Zyphr’s interface combines minimalist aesthetics with intentional functionality. Its monochromatic high contrast design draws inspiration from both old-school analog synthesizers like the Moog and sci-fi interfaces. The interface is set in a custom typeface designed with Zyphr in mind. Let’s look at the interface below and summarise the interaction and responsibilities of core components.
Docks
The upper dock consists of MIDI device selector to manage the connection of MIDI devices. CPU and memory tracking helps with monitoring performance of Zyphr. The lower dock provides comprehensive controls for adjusting tempo, triggering play, pause, stop, record, metronome, and managing files like audio exports.
Modules
Zyphr consists of a set of module devices such as tracks, synth, drums, and sampler designed to manipulate, program, and shape sound. Modules typically have knob controls, allowing us to adjust various settings. Some knobs accept connectors to channel signals, e.g, applying modulation by channelling LFO to a sine waveform; or applying reverb effect to only a snare drum and nothing else.
Tracks
Utility module for layering and mixing down audio.
Tracks allows us to select, mute, and equalize tracks. The controls allows us to adjust gain, as well as low, mid, and high frequencies for each track or a mix-down of all audio tracks. We can also export tracks as a mix-down loop or as individual stems in WAV format with lower dock file menu. Tracks also supports exporting MIDI files from instrument modules like synths and drums with velocity data.
The Mixer
Let’s think of Tracks as a mixer too, which should allow us to adjust individual track levels. Using alt and clicking on a track (indicated with dashed lines selection) allows us to adjust mixer controls individually only for that track while keeping main mixer settings. So if the drums instument module is louder than synth and sampler modules then we should be able to adjust the sounds and move on.
Selected track shows a loaded instrument module, typically displayed on the right. Muted tracks are excluded from playback and exports, for improved performance, unless we choose to export only the selected track, in which case it will be included in the output. The Tracks utility module also supports a variety of plugins such as compressors, effects, and panners like b-meter, allowing us to fine-tune our sound for the final mix-down.
Synth
Instrument module for synthesizing and designing sound.
It all begins with basic waveforms, which can be dynamically shaped using a Low Frequency Oscillator (LFO) to add movement and texture. We can layer waveforms on top of one another using four types of algorithms to allow modulation and create complex and evolving sounds like pads, pianos, drones, generative scapes, and percussion.
We can shape the sound further with envelope controls, which allow us to adjust ADSR parameters of each waveform. Every instrument module has a complete ADSR envelope via keyboard hotkeys (see envelope visualisation on Sampler). This lets us sculpt and evolve sound over time, making it sharp, soft, or anything in between.
Zyphr is solely loop based. Loop length can be adjusted by interacting with the stretch bar, from a minimum of four bars to a maximum of thirty-two bars. The default position of the scroll bar is at the fourth octave (the middle octave in an 88 keys piano). When using the scroll bar, an indicator shows us which octatve we are located.
The Selector allows us to toggle between keyboard and MIDI editor views. The synth comes with plugins such as arpeggiator, b-meter, notes, reducer, and a handful of sound presets. Zyphr’s core interface uses more white space around it to favour less graphics rendering and to benefit performance of the program.
Drums
Instrument module for designing and programming drums.
In its essence, the Drums module provides a handful of synthesized drums and controls to surgically adjust its parameters, both individually and globally. For now Zyphr is currently synth based. Zyphr should allow us to load synthetic shaker sounds made from our shaker module from a smartphone, quantising the sound to the tempo of the current project we are working on.
The first thing we see when we load our drums instrument module is a simple step sequencer, inspired by the drum machines of the past. Velocity display can be toggled on-and-off with keyboard hotkeys. The selector component allows us to switch between Sequencer and MIDI Editor views. Useful for pitching drum elements to be melodic, for example, an 808 kick drum, tom-tom, and any sound we design.
Sampler
Instrument module for manupulating audio samples.
Sampler consists of controls for adjusting audio pitch, manual and smart slicing of audio which can involve using project tempo as a base for where to surgically slice an audio sample. With its advanced sound-shaping capabilities such as detailed envelopes for amplitude, pitch, and filtering, as well as LFOs for modulation, Sampler gives us full control over our sound.
From looping, time-stretching, and transposition to reverse-playback and velocity-sensitive responses, Sampler provides a toolkit for shaping samples. Sampler enables easy drag-and-drop audio import and automation with Automator view, making it a go-to device for building custom instruments or crafting unique audio textures. We can even sample the synth instrument module sound with Sampler.
Docks
Collection of floating components that provide quick access to essential functions.
Docks float on top of other interface components, ensuring they're always visible and accessible without obstructing the workspace.
Upper Dock
Designed as a control panel for less frequently used settings such as connecting MIDI devices and performance monitoring for real-time feedback of the system’s performance. This helps us stay informed about how the program is affecting our system resources. It also helps me to monitor and optimise performnace as I develop Zyphr.
Lower Dock
Positioned at the bottom for easy reach, the lower dock serves as an area for core, frequently used functions such as audio playback and file management like importing and exporting audio files.
Canvas
The interface underneath the docks is more or less a free canvas. Especially when plugins are added to the core interface in the canvas. We'll learn more about pluggable modules in the plugins section.
Plugins
Plugins are the extra sauce for utility and instrument modules.
Zyphr is meant to be basic out-of-the-box especially for sound synthesis. Plugins are where Zyphr can acquire more taste. For example, the minimal synth module can be extended by adding arpeggiator plugin which consists of a handful of algorithms to generate interesting repetitive sounds. Upcoming plugins include b-meter, equaliser, compressor, arpeggiator, arranger, driver, reducer, notes, and sound presets—for instrument modules.
List of Plugins
- Arpeggiator: Generate a repetitive sequential or random pattern.
- Arranger: Arrange loops in a linear way to structure a song.
- B-Meter: Adjust stereo width and pan sound to maintain balance.
- Equaliser: Tune low, mid, and high frequencies of the sound.
- Notes: Pin and write notes anywhere on the core interface.
- Reducer: Reduce bit depth of an audio signal.
- Driver: Add drive or distortion to your sound.
Commands
Command-line interface for minimal graphic rendering and increased system performance.
What does making music look like without interacting with a mouse? Zyphr allows us to switch between the Graphics and Commands interface modes. The Commands mode provides a streamlined, text-based interaction with Zyphr, making it an ideal choice for scenarios that may require attentive listening and optimal performance.
We use the keyboard shortcut ctrl-alt-z to switch between Graphics and Commands modes. Every functionality in Graphics mode will be fully accessible through Commands.
Project Commands
Commands | Description |
---|---|
-h, --help | Display help information. |
i, init | Initialize a new project. |
i <project-name>, init <project-name> | Initialize a new project with a name. |
s | Save current project. |
q | Quit the program. |
Module Commands
Command | Description |
---|---|
m1 synth drums sampler | Select module. The grey text shows us the instrument of that module beforehand. We use up and down arrow keys to move between modules then tab key for selection. |
m1 synth sine1 sine2 saw3 a2 | Select module, waveforms, and algorithm. |
m1 synth sine2 (.54) sine1 (.21) saw (.3) a2 | Select module, waveforms, algorithm and set parameters on waveforms. All values are from min of 0 to max of 1 (float). |
m1 synth a4 | Select module and change algorithm type to 4. |
m4 drums k [1001 1000 0010 0001] | Select module, drum element, and program a step sequencer. |
Playback Commands
Command | Description |
---|---|
bpm 91.00 | Set song tempo. |
r m2 | Record module 2 instrument. |
System Commands
Command | Description |
---|---|
midi MPK Mini 3 OP-1 null | Connect MIDI device. Null disconnects all devices. |