PHONOTYPE
Teletype-inspired modular livecoding sound language.
General idea
Like Teletype, PHONOTYPE is a prefix programming language. For example:
+ 1 * 2 2.5
Is a statement that yields the sum of 1 and the product of 2 and 2.5: 6.
Unlike Teletype, PHONOTYPE directly produces and manipulates sound. It’s designed allow patching and repatching flows of signal and sound live in performance, and/or creating drones, self-playing generative patches, MIDI synths, drum machines, or whatever else you can dream of.
Every operation in PHONOTYPE is declarative. Instead of executing, like a line of Teletype code, it tells the audio engine (SuperCollider) what to connect to what. You can think of this much like patching a modular synth. The last line of your main (M
) script is output to the output jack. Operations do things like output various kinds of waves, delay signals, or output triggers in certain rhythms.
Requirements
Norns or reasonable facsimile thereof.
Computer keyboard.
MIDI controller recommended but not required.
Documentation
To use PHONOTYPE:
- Install it onto Norns
;install https://github.com/sixolet/phonotype
- Restart the Norns, so they can see the new Engine
- Unplug keyboard from Teletype
- Plug keyboard into Norns
- Select PHONOTYPE
- Code a sound
Navigation
F1…F8 on the keyboard navigates to script 1 through 8.
F9 on the keyboard navigates to the M
(main) script. This is the script that outputs sound.
ESC nagivates to the scene description.
Arrow keys choose a line to edit; enter key actually changes the line.
Shift-enter inserts a new “passthrough” line above the current one.
E 2 adjusts the fade time of the current line.
E 3 adjusts the update cycle of the current line; for example, if you adjust it to 4, then the line will update every 4 beats. This is useful for making changes on barlines.
Mini-tutorial
Try SIN 440
in M.
Then on the next line put * IT PERC QN .5
(QN
= quarter notes. .5
is our env decay). We have turned the tone into some pinging sounds.
Now add + IT * .5 DEL.F IT * .75 M 3
.
DEL.F
is a delay w/ feedback. We delay by a dotted eigth with a 3s decay.
Then go back to the first line. Hit ctrl-enter to get a new line above. Make the new line say:
S+H SCL SIN .1 0 7 QN
This samples-and-holds a slow LFO on every quarter note, and scales it to 0 to 7.
Then change SIN 440
to say SIN N.MIN IT
: use the previous line we just wrote as an index into a minor scale.
You should now have a little melody playing.
Saving and Loading
While in the scene description, Ctrl-Enter or Alt-Enter saves your scene, with the filename based on the first line of your scene description.
To load a scene, change the scene
parameter (on the params page) to a file of your choice. I have put a couple examples in the code directory of the script (though your own code will save to the data directory).
To load a fresh scene, press Ctrl-Shift-Escape.
Operators
Please see the full list of operators at README.md; it is too long for this margin to contain.
A taste to get you started:
SIN <freq>
- Sine wave
PSIN <freq> <phase>
- Phase-modulated sine wave
PERC <trig> <duration>
- Percussive envelope
QN
- Quarter note triggers
Tutorial Videos
Basics idea and syntax
Using scripts for abstraction, and setting up a polyphonic MIDI synth.
Download
v0.2.0-- Release v0.2 · sixolet/phonotype · GitHub
Version history
- 0.1: Most of the stuff
- 0.2: Buffer operations, polyphonic midi in
Roadmap
Things I expect for this script in the future:
-
Buffer ops, both read and writeDONE -
The ability to load samples into buffers from paramsDONE - Crow CV and trigger input and output
- A “tracker view” to allow you to manually edit buffers and use them as sequencers
-
Polyphonic midi inputDONE - A library to incorporate the PHONOTYPE engine in other scripts (without the editor, but loading a scene to run from params and be a synth or effect)
Acknowledgements
This script is inspired by Teletype and Dronecaster.
Thanks to @zebra, @license, and @infinitedigits for answering billions of supercollider questions and looking at my code, to @tyleretters for reviewing the documentation and making suggestions, to @zbs for feedback on the edit flow and contributing some smoothness to the edit flow, and the Teletype study group for encouragement, talking through the idea, and general awesomeness especially @nonverbalpoetry who I think was my main interlocutor in the conversation that started this mess. Also thanks to @noracodes for an aluminum panel for my shield so it looks like its big Teletype sibling.
There are now code contributions in PHONOTYPE from @zbs and @license. Thanks so much, friends.
Other
I don’t know why PHONOTYPE got stuck all caps in my head, it just always has been. Now autocorrect on my phone keeps it up for me.
Contributions and suggestions more than welcome.
I plan to perform on PHONOTYPE at Flash Crash V. It promises to be an interesting time.