Drone Trick with Arturia KeyStep and Novation Circuit

Look, ma! No capo!

Lately I’ve been using a capo (yes the kind for guitar) to hold down a note on the KeyStep in order to drone a note on the Novation Circuit’s Synth 1 while playing notes on Synth 2. It’s awkward but works. Today while prepping for ISSTA.ie I stumbled on a way to drone a note on the Circuit with the KeyStep and no capo necessary! Here are the steps to drone Synth 1 and then play new notes/sequences/arps on Synth 2:

1. Make sure the KeyStep is setup in Keyboard Play mode by pressing Shift and Oct+.
2. Enable hold by pressing the Hold button.
3. Put the KeyStep in pause mode so that the pause/play button is flashing.
4. Hold Shift and press the low F to set the KeyStep to MIDI channel 1.
5. Play and hold the note(s) you’d like to drone (anything but the low Gb because you’ll need that key to switch channels)
6. Keep holding the note(s) and switch to MIDI channel 2 (Shift + the low Gb).
7. Un-pause play/pause and release the note(s)

Once you’ve lifted the note(s) you can re-pause or play arps or seqs on Synth 2 because essentially you have a stuck note on Synth 1 (just double tap stop to unstick the note). If you don’t want to hear Synth 2 when un-pausing, just make sure it’s down in the mix. This trick works while the Circuit is stopped or playing and will continue until double tapping stop on the KeyStep. It’s even possible to change the existing stuck note(s) by following the same steps. It’s easier than it reads, as you will see in the video below:

Upcoming Concert at ISSTA September 8, 2017

I’m pleased to announce that I will be performing a version of my piece Vocalise Sintetica at the ISSTA Festival and Conference on Sound. The conference will be held on September 7th and 8th, 2017 at the Dundalk Institute of Technology in Dundalk, Ireland. Please check the website for details.

I have developed new content and features for the AVGM (Audiovisual Grain Machine) which I’ll be using during the performance. I also be triggering samples and playing patches with a hardware synthesizer to accompany the audiovisual content. Here’s a video that demonstrates some of the new media:

A post shared by John Keston (@jkeston) on

Continue reading

ISSTA 2017 International Festival and Conference on Sound in the Arts, Science and Technology

The International Festival and Conference on Sound in the Arts, Science and Technology (ISSTA 2017) is currently calling for works and papers to be presented at the Dundalk Institute of Technology, Ireland this September. Acceptable works include performances, installations, and workshops from makers, creators, performers, thinkers and researchers. The range of perspectives are broad and fascinating including: new creative approaches using self-designed or hacked controllers, communities and maker spaces/hackspaces, open culture and creative technologies to name a few.

ISSTA aims to bring together practitioners integrating fields of music, art, sound, science and technology. Our events serve musicians, researchers, scientists, engineers and artists by promoting sound within the arts, science and technology, within Irish and international communities. Since 2010 ISSTA has hosted an annual conference, gathering researchers from around the globe to present papers, installations, concerts and workshops. This year we are running our annual conference and festival at Dundalk Institute of Technology with Peter Kirn and Dr. Theresa Dillon as keynote speakers.

The call can be found here: issta.ie/call-for-submission-2017/ or read on for all the details below. Continue reading

Novation Circuit Randomized Patches


In my mind, sound design is at its best when it is a process of discovery. At its worst it can be an unfortunate exercise in mimicry. I am fascinated by the process of discovering sound through happy accidents. One of the techniques I have exploited frequently in this regard is synthesizer patch randomization. For example, the Yamaha TX81Z sounds great when randomized, or better yet, “degraded” with shuffled parameter values interpolated based on a time unit or clock division. The PreenFM2 has patch randomization built directly into the instrument!

So, it wasn’t long after picking up a Novation Circuit that I had the urge to use a similar shortcut to mine fantastic and otherworldly sounds from the unit. Full MIDI specification for the Circuit is available so that development of a standalone randomizer is possible, but Isotonik Studios published a free Max for Live editor in partnership with Novation. Max for Live patches are inherently editable so I decided to start there.

Send Random Values

It took me a couple of hours to get into the guts of the editor and setup a drop down menu for randomization. The drop down has choices to either “randomize all” (not quite all parameters), or randomize one of seven sets of grouped parameters like the oscillator section, mod matrix, or LFOs. At his stage I haven’t included the EQ section, voice controls, or macro controls. I probably won’t add the EQ, but the macro controls might offer some interesting possibilities. The image above shows a simple subpatch I made that takes a bang and outputs the random values for the oscillator section. Unfortunately, I can not legally share my mods based on Isotonik’s and Novation’s EULAs. However, you’ll need little more than a basic understanding of Max to do this yourself. Checkout the video and let me know what you think in the comments.

Using Tidal to Control the Roland System-1M

Roland System-1M

This is Mike Hodnick with my first article on audiocookbook.org. I recently added the Roland System-1M semi-modular synth to my studio and live setups recently, and as with any new instrument in my studio I wanted to take it to extremes and see what it could do. It was the perfect occasion to document on audiocookbook.org!

I’m not your typical producer or performer. I write computer code, often improvised, to produce sound both live and in the studio. I use a language and live-coding environment called Tidal to trigger samples, play MIDI devices, and create sequences. Instead of a DAW or sequencer to create sound, I use a text language.

My first real experiment with the System-1M was to automate all of its MIDI Control Change parameters from code simultaneously. It’s kind of like running a few dozen LFO’s at once. I like to do this with all of my instruments to take them to an extreme and maybe even get some interesting sounds out.  As an added twist, I thought it would be fun to also live-patch the modular inputs and outputs on the System-1M while the MIDI automation was taking place. Here is the result:

The source code used for this performance experiment is at the bottom of this post. The only parameters that were not automated in this example were the Oscillator 1 level (kept at 100%), the Mono/Poly toggle (kept on Monophonic), Legato toggle (off), amp crusher (off), and LFO key retrigger (off). Details about the System-1M’s MIDI implementation can be found at roland.com/support/by_product/system-1/owners_manuals/8789.

There are some brilliant sounds coming out of this thing!

By far, my favorite features of this synth are the two oscillators and their controls. Each oscillator supports multiple wave forms, modulation control (oscillator 2 can be ring-modulated from oscillator 1, and oscillator 1 can be cross-modulated from oscillator 2), and a “color” parameter which can be modulated from the LFO or filter/amplitude envelopes. Oscillator 2 also has a fine-tune control. With all of these combined, the possibilities are enormous.

Stay connected at kindohm.com, @kindohm or facebook.com/kindohm for info about Mike’s studio experiments, releases, and performances.

Here’s the source code used to control the System-1M:

-- play a m9 arpeggio, starting from MIDI notes 45, 33, or 57
m $ slow 2 $ (|+| note "[45 33 57]*4") $ mel m9 10 "0*16?"
|+| dur (scale 0.05 0.2 $ slow 1.9666 sine1)
|+| rlpcutoff (scale 0 1 $ density 1.01 sine1)
|+| rhpcutoff (scale 0 1 $ density 1.132 sine1)
|+| rfilteratk (scale 0 0.5 $ slow 1.2 sine1)
|+| rfilterdecay (scale 0.05 0.5 $ density 1.5181 sine1)
|+| rfiltersustain (scale 0.1 1 $ density 1.277777 sine1)
|+| rfilterrelease (scale 0.05 0.5 $ slow 1.523 sine1)
|+| rres (scale 0 0.7 $ density 1.313 sine1)
|+| rfilterenv (scale 0.1 0.9 $ density 1.111 sine1)
|+| rcrush "0" 
|+| rampatk (scale 0 0.5 $ slow 1.213 sine1)
|+| rampdecay (scale 0.05 0.7 $ density 1.333 sine1)
|+| rampsustain (scale 0 1 $ slow 2.313 sine1)
|+| ramprelease (scale 0.05 0.3 $ slow 2.877 sine1)
|+| rpitchenv (scale 0.2 0.8 $ density 1.987 sine1)
|+| rport (scale 0 0.5 $ slow 1.77777 sine1)
|+| rpitchatk (scale 0 0.5 $ density 3.4111 sine1)
|+| rpitchdecay (scale 0 0.5 $ density 1.2222 sine1)
|+| rosc1 "1"
|+| rosc2 (scale 0 1 $ slow 2.6665 sine1)
|+| rosc2tune (scale 0.2 0.8 $ slow 3 sine1
|+| rsub (scale 0 1 $ slow 1.919 sine1)
|+| rnoise (scale 0 1 $ density 3.71771 sine1)
|+| rnoisetype "[0 1]*3"
|+| rsubtype "[0 1]*5"
|+| rlegato "0"
|+| rmono "0.5"
|+| rosc1type (scale 0 1 $ slow 1.77777 sine1)
|+| rosc1range (scale 0 1 $ slow 2.8888 sine1)
|+| rosc1color (scale 0 1 $ density 1.4344 sine1)
|+| rosc1xmod (scale 0 1 $ density 1.30010010 sine1)
|+| rosc1mod (scale 0 1 $ density 3 sine1)
|+| rosc2type (scale 0 1 $ slow 0.9999 sine1)
|+| rosc2range (scale 0 1 $ slow 3.151 sine1)
|+| rosc2color (scale 0 1 $ slow 5.131 sine1)
|+| rosc2ring "[0 1]*9"
|+| rosc2mod (scale 0 1 $ slow 3.141 sine1)
|+| rosc2sync "[0 1]*7"
|+| rlforate (scale 0 1 $ slow 2.17717 sine1)
|+| rlfofilter (scale 0 1 $ slow 3.3333 sine1)
|+| rlfoamp (scale 0 1 $ slow 1.21 sine1)
|+| rlfotype rand
|+| rlfokeytrig "0"
|+| rdelay (scale 0 1 $ sine1)
|+| rdelaytime (scale 0 1 $ slow 3.888 sine1)
|+| rreverb (scale 0 0.4 $ density 1.2331121 sine1)