I’ll try to see if I can contribute a MIDI CC output feature once I’ve got some hang of using this thing (i couldn’t stay awake for your performance at flashcrash onnmy timezone, is I’ll catch up with the recording). It’s super exciting! MIDI CC input is already available via the params if i understand correctly.
wow thank you for this
For MIDI cc out (and this is also the same problem for crow cv out) we have to decide how to poll a supercollider bus for its value. The two ways I can think of are:
- To bind a cc out, you specify a bus and a polling frequency in that params
- There’s a specific midi cc out op, which functions like a sample and hold, taking a signal and a trigger on which to second cc.
The former invites taking an existing scene and binding a cv or cc out at leisure, which is cool.
The latter invites more efficiency in the use of the osc network and more control over the cc/cv sample rate, and makes the output more an integral part of the scene.
maybe both? both scenarios could use the same
Bus and engine “poll”. supercollider could decide whether to update periodically or as needed
… oh yeah - i stayed up late and revisisted all the FC sets i couldn’t watch live. your performance was phenomenal, thanks for sharing it. (and i loved the mirror)
@sixolet, i loved that your performance also showcased how much expressive timbral control is embedded into PHONOTYPE – it’s a really fantastic extension of the compositional mindset of teletype. describing fades alongside waveforms alongside sequence notation creates such a boundless environment for multifaceted play (those moments of controlled feedback at the far sides of the stereo field were just stunning). stoked to dig in, thank you for demonstrating the script in such a compelling way!
edit: ugh, i keep coming back here to add new impressions as i finish the performance vid – totally blown away by how precisely you knew what you wanted from the operators. that’s a level of creative prescience that is deeply admirable. you’ve built such a well-rounded collection of sharp tools, dang.
The Flash Crash Set, about half an hour of messing with PHONOTYPE and a 16n:
Wonderful performance – and what a wonderful instrument! Respect and thanks very much for creating & sharing both! Please allow a question: There are some dropouts in the audio in the video, like around 8’53, 13’55 and 15’58 – if they exist in the original recording (and are not errors on my end), are these due to stream errors or are they side effects of script manipulation?
Again, thanks, this is really an soothing & uplifting start into my week this morning.
EDIT: And just to make sure I understand what you are playing in the video – no part of audio was captured in a looper, everything was always generated in realtime, right?
I went and reviewed the glitches you pointed out. The first two are almost certainly stream artifacts and the third probably is a streaming artifact but might be an audio hiccup of a type I’ll explain below. The recording was from Tyler’s computer across the internet from me, and I don’t have a close recording, so I’m not 100% sure.
PHONOTYPE will sometimes exhibit an audio hiccup when it restarts the synth for a line of code - for example, the new oscillator might not have the same phase as the old one, or the fade time might be fast, and cut off the tail of an envelope the new synth is too new to have received the trigger for. This should ideally only happen for lines that you are actively changing, and for lines that your change changes their IT from control to audio rate or vice versa, but I think we’re being slightly too aggressive about restarting synths right now. I plan to take a look at it.
You can avoid most of these hiccups even now by being careful with fade times and quant values (e2 and e3), and by avoiding changing rates (in my performance I used SILENCE as a guard to keep a script output audio rate while writing above control rate logic) but you very much shouldn’t have to think about it in that way to get a smooth performance. There are definite improvements to be had here.
And yeah that was 100% PHONOTYPE making those sounds, the only other thing in the effects chain was Norns default reverb and limiter, no looper or anything like that.
amazing! i think i listened to the performance five times yesterday.
Hi. This looks amazing, congratulations!
Naive question… does PHONOTYPE use the same language/commands etc as Teletype or is it something different that operates in a similar vein?
PHONOTYPE has its own language distinct from teletype, and documented in the README, but this is actually a deep philosophical question about language similarity ↶
- The syntax is basically the same: prefix operators, the occasional flow construct with a colon after.
- The semantics are quite different - tt executes lines, pt describes a graph of connections.
- The vocabulary I have kept as close as I could as a memory aid. For example, where tt has
EVERY 4to execute a line every 4 times tt gets to it, pt has
EVERY 4 0to produce a trigger every four beats (with 0 offset). In tt J and K are local variables; in pt they’re local busses. Etc.
Amazing job. Well done and thank you!
edit: having read the whole thread (I couldn’t do that earlier) I now realise my question was answered before I asked it but thank you for patiently answering in detail, nonetheless
Amazing work @sixolet ! Finally caught the performance. Beautiful Performance! Always loved the concept and am amazed at how you put it together. You and all of the developers around these devices are like superheroes to me. You all have special powers!
One of these days I’m gonna pick up a Norns but in the meantime your project definitely inspires me to look back into supercollider. Excited to see how it continues to develop!
excited to try this out on my day off!
This is absolutely remarkable. Can’t wait to learn and play!
I think it’s time to call it v0.2 this evening. I went and added PHONOTYPE to Maiden, too.
- Bug fixes
- Polyphonic MIDI support.
MIDI.4 1: * SAW F ADSR G .1 .5 .5 .5is a 4-voice polyphonic saw synth. In addition to
G(gate) in the body of a
MIDIpre you can use
Vfor velocity. Allowed polyphonies are 1, 2, 4, 6, and 8. If you start more notes than the polyphony limit, the voice with the nearest frequency is chosen for stealing.
- Buffer ops
bufferssection in params menu allows loading 16 buffers from files
LOOPops with many suffixes for cue, crossfade, and convenient rate manipulation.
- For example
PLAY.BCS 3 WN 16 Yis "play buffer 3 every whole note (WN) matching tempo as if the buffer contains 16
Beats, and every time you receive that whole-note trigger signal
Cue to the position Y (in
Beats) . When you do so, do so with a little crossfade so it sounds
- Phasor read and write in
WR, and some phasor tools in
I also plan to make a series of tutorial videos over the next couple weeks to show how to use various PHONOTYPE features — at least a getting started drone video, a rhythm-in-phonotype video, a sample-loop-beatslicing video, and a make-a-polysynth video. Anything else I should cover?
If you want to jump in early to the polysynth tutorial, I think this will be the script we’ll build in the vid once I make it:
#1 # Script 1; input 1 is gate, input 2 is freq ADSR I1 .01 2 .2 .2. # envelope for modulator * IT SCL SIN 2 .9 1.1 # LFO for modulator * IT SIN * 3 I2 # modulator. ratio is 3; set to taste PSIN I2 * 1.5 * P 0 IT # carrier & parameter-control of modulation * IT ADSR I1 .1 .5 .5 .5 # volume envelope #9 MIDI.4 1: $1.2 G F # midi control of above script + + BPF IT 100 BPF IT 800 BPF IT 2000 # some formants to make it sound more organic
It’s a two-operator FM synth.
perhaps unfair to ask this way (esp since i loved the first demos)
but is there anything phonotype can do which you think might be overlooked/unnoticed for a while without being featured or explained? anything unique to the script or made simpler by loading phonotype instead of something else??