Monday, March 23, 2015

Note looper/recorder/player multiscript for Kontakt

This is probably pointless exercise, because it is what people use sequencers for, but I made an attempt at writing a script which would record and playback incoming note sequences in Kontakt. I was aiming at something that would allow me to record sequences while playing and then switch through them from keyboard. I took it to a point where I'm able to jam with it, e.g. trigger different drum loops and bass loops while playing another instrument. Feel free to try it out.

HERE are the script preset files, which need to be copied to multiscript preset folder (in my Windows it's "my documents\Native Instruments\Kontakt 4\presets\multiscripts"). This is multiscript, so you load it on top of some instruments. It has been written in Kontakt 4.2.4.

It is an experiment and it is possible, it may have some bugs, so be cautious with it. I don't have the drive for bulletproof testing of this script, so take it as it is, maybe you will find it useful, but have in mind that it may go south at some point.

A little guide to the script.

The script will memorize incoming note on and note off messages (no other MIDI data is processed) and then play back the sequence on request.
There are two versions of the script "x1" is a kind of one track recorder and "x2" has two tracks, so you can playback two sequences simultaneously.
Press record to start recording, which actually starts on first incoming note (the gap before pressing record button and receiving first note is ignored). When done press record again to stop the recording, or press play to stop recording and start playback right away. If loop switch is on, recorded sequence will play in a loop, else it will stop after last note. If auto rewind switch is on, the recorded sequence will start from beginning, when you press play button, else it will start from where it stopped.
There are 8 "tapes" per reel, so you can record up to 8 sequences which you can switch through while playing. If play button is on, tape will not change immediately, but it will be scheduled. After coming to the end of currently playing sequence, the machine will load selected sequence. This way you can switch loops "in advance". Each tape can store up to 2040 events, so a bit more than 1000 notes. If the limit is reached, the recording should stop automatically.
Play, record and tape change commands can be automated with midi keyboard. Note, that key used for automation will be unavailable for triggering notes. Tape change command has three automation modes, you can use CC message, a series of 8 keys, where pressing a key will load corresponding tape, or use one key to toggle through tapes. In last mode there is option named "select empty", when the switch is off, the machine will only toggle through recorded sequences, skipping empty tapes (as selecting empty tape will stop playback).
Snap is function, which will try to align recorded sequences to current tempo. When it's activated, the machine will wait for sync when starting to play the sequence, on play button or when restarting a loop. There is no synchronization in between, so this machine is not suitable to playback whole songs, better stick to 1-6 measure loops. So, e.g., if you pick snap resolution to whole note in 4/4 meter, have snap switches enabled and press play, the sequence will start at beginning of next measure.
Synchronize is function which will attempt to recalculate recorded times to fit a recording to different tempo. This is somewhat tricky, as the machine memorize events like this: note on, wait some thousands milliseconds, note off, etc. At the moment of recording, the quarter note length is stored, which is then being compared to current quarter note length and used to recalculate waiting times throughout the recording. Tempo changes while recording are not stored.
Key setting is simple transpose function, it will add key value to note numbers on playback.
Input port and channel settings can be used to pick a source of data, in case you have multiple controllers. "x2" version of the script has simple data router, so you can switch instruments while playing/recording. Changing channel/port can be automated with a key or CC.
There are somewhat limited "sequencing" options in Kontakt multiscript, so I made this script using "wait" command together with, $KSP_TIMER and $DISTANCE_BAR_START variables (first to detect event times, second to sync with tempo). The second variable is only being updated in Kontakt when transport is running, so synchronization will fail, if the play button is off in host. In standalone mode, it will always work, as Kontakt assumes transport is always on.

Feel free to write me, if you find it usable, yet limited or bugged in some aspect. I may look into it again.

Friday, March 6, 2015

Keyboard splitter multiscript for Kontakt

I wrote a little script for splitting keyboard in Kontakt. This may be handy, if you'd like to send part of the keyboard to one instrument and the other part to another instrument. Keyboard splitting can be done in many ways, but multiscipt is probably the most convenient to use. The script front looks like this:

You can split and re-direct data from any port/channel, in which case all midi inputs will be routed to destination channels. Or you can split selected channel only, in case you have multiply controllers connected. There is midi learn function for split position and octave transpose function for each part of the keyboard. The script is splitting "note on", "note off" and "polyphonic aftertouch" messages, however as I don't have any keyboard with poly aftertouch, this last function is somewhat untested. "Other messages" (pitch bend, CC, program change, etc.) can be blocked, send to one or both of destinations. The script sends "all notes off" messages to all channels, each time you manipulate its settings, to avoid "stuck notes".

If you think it might be useful to you, you cab grab it HERE. It will work Kontakt 4.2 or newer, I'm not sure about earlier versions. Remember that it is multiscript, you insert it in multi rack, on top of all instruments (use the "scroll" button to activate multiscript rack).

If you feel like splitting the keyboard further, you can insert copies of this script into following script slots, use specific channel in that case. E.g. split all inputs to channel 1 and channel 2 with first script, then split channel 2 to channel 2 and channel 3 with second script. With 5 script slots you could split the keyboard up to 6 parts, which, I bet, would be a lot of fun...

Thursday, March 5, 2015

Fuzzy Beeps

My first computer was ZX Spectrum, it had the most simple possible sound setup, a buzzer connected to a chip, which was generating only two states on output. Initially it seemed limited to one channel square beeps, but people found ways to generate polyphonic music within its hardware limitations. If you search for "1-bit music" phrase, you will find that it is still an active niche of chiptune music. Multichannel 1-bit tunes could be created using some form of impulse trains, as series of short waveform spikes. They had specific, one of the kind flavor, fuzzy, quiet, soft and yet somewhat razor-sharp. See here for example.
I wanted to have this flavor available in sampled form to use with modern virtual instruments. I edited a set of 44,1 kHz samples, using one sample long impulses, looped to match the tune, then mapped them to sfz, so I've got a handy 1-bit, impulse train oscillator. Here's an example of the sound. And here's a look at the waveform, compared to sine.

You can DOWNLOAD it here. There are 61 wav files, one file per note, 44,1 kHz, 8 bit (for compatibility reasons). Included simple maps for sfz and Kontakt 2 (it's just one drag and drop to place them in, so it doesn't really save you any work).

Wednesday, March 4, 2015


As this repository grew larger, I thought it might be a good idea to maintain an index of goods. Most of the goods are free (free to get and free to use in your music), some files (usually an extra/extended option) are WYTIW (what you think it's worth). Those files are available at a price, you can name it. This way you can buy me a tea and pull me out of a blue mood a little. It's encouraging, when I see, these are worth something to someone. Thank you.

Kontakt machines:
These are more Kontakt based music machines than sample packs.
  • Arctic Rooster (free)
    Synthesizer based on singe cycle waveforms cut from a rooster call recording.
  • Bleepman (free)
    Sequencing bleeper.
  • Cracklebot (free, WYTIW)
    Noise sequence generator, based on vinyl pops and clicks.
  • Haunted Jukebox (free, WYTIW)
    Abstract groove generator.
  • Quescape (free, WYTIW)
    Synthesizer with sequencing LFOs.
  • Psychodrumma (free, WYTIW)
    Imaginary retro drum machine, with random program generator.
  • Scape-O-Matic (free)
    Random pad/scape generator.

Sample based instruments:
  • Alimchord (free, WYTIW) (Kontakt)
    Imaginary instrument base on kalimba sounds, captured with contact microphones.
  • Balloon picks (free) (Kontakt)
    Bass sounds made with a party belloon.
  • Fog Horns (free, WYTIW) (Kontakt, wav)
    Spray canned air horns.
  • Scratch the balloon (free) (Kontakt, wav)
    Scratch sounds made with a party balloon.
  • Terrible Piano (free) (Kontakt, sfz)
    Broken old piano.
  • The Wrench (free and free) (Kontakt, sfz, wav)
    A nicely sounding wrench.
  • Wineglass drone (WYTIW) (Kontakt, wav)
    Organic drone-like melodic instrument, based on bowed wineglass.

Percussion sample kits (wav):
  • A touch of junk (free)
    Junk percussion captured with contact microphones.
  • Breaking bread (free)
    Percussive sounds made with breads.
  • Drum by mouth (free)
    Drum sounds from my mouth.
  • Junk percussion (free)
    Banging on junk.
  • Mufftronic (free)
    Electronic drums made with Korg Monotron paired with Big Muff.
  • Stone age percussion kit (free)
    Rocks hitting rocks.
  • Zombietronic (free)
    Digitally synthesized electronic drums.
  • Fuzzy beeps (free)
    1-bit flavor, impulse oscillator.
  • M33G feedback loop (free)
    Feedback loop tone made with old cassette recorder.

Kontakt scripts:
  • Fake round robin (free)
  • Keyboard splitter multiscript (free)
  • Key shuffler (free)
  • MIDI channel router multiscript (free)

Saturday, February 28, 2015

Haunted update and Cracklebot unchained

There are little news concerning recent instruments.

First off, I updated Haunted Jukebox, signature set. I fixed a bug in generator engine and added some new functions in setup panels. These are somewhat cosmetic updates and they only really concern signature version, as other versions don't include setup and configuration panels.

Also I bundled special version of Cracklebot noise machine with Haunted Jukebox album. I nicknamed it "Cracklebot unchained", the only difference from regular versions is, that "unchained" bots do include setup and configuration panels (just as Jukebox signature), so one can experiment with different generator engine settings.

I posted two "guided tour" videos, where I play with Cracklebot configuration. I used Youtube annotation system to comment on what is actually happening. See, if it looks like fun or not.

Haunted Jukebox album including signature set and Cracklebots unchained set, is available on Bancamp, for whatever you think, it is worth.

I'll be manually sending download links to those, who already supported this experiment. If, somehow, I omit someone, feel free to write me. You will find contact e-mail in included text file.

Sunday, February 22, 2015

Cracklebot Red

I had a couple of new ideas while playing with Cracklebot noise machine that I posted yesterday. They spawned a modified version of the instrument, which I labeled Cracklebot Red. To find what a cracklebot is, please read previous post.

Changes in red edition:
  • used 4 convolution units instead of 2, replaced the delays, this needs considerably powerful CPU,
  • reverb mixdown knob now controls return of all 4 units, delay mix knob is replaced with dry signal level knob, so now you can listen to just wet output of all reverbs, which is what I was aiming for,
  • there are now 12 layers/tracks per groove instead of 9,
  • there are small adjustments in groove generation constraints, larger possible sequences, different possible sequence speeds, etc.

Download here. Free to get and making noise with.

The archive doesn't include the manual, so if you really want to read it, get the regular bot.

Further late night experiments, took me to yet another incarnation of the machine. I wanted to see, how would it sound like, when pushed to 8 convolution reverbs and 16 layers, with more relaxed groove generation setup and different, evolving modulator signal distribution. If you're into evolving weird ambiances and have lots of CPU cycles to spare, you may see, if you can get it working.

Saturday, February 21, 2015

Cracklebot - vinyl noise machine

Cracklebot is automated drum machine based on vinyl noise samples. I sampled worn and dirty, empty grooves from my vinyl collection. Lead-ins, lead-outs, silent parts in between tracks, those have been chopped to 115 short slices or pops, crackles, scratches and noises. Cracklebot is sequencing them into tempo synchronized, noise grooves. The machine can create new, random patterns on a single click, so it's quite fun play with.

It looks and sounds like this:

This virtual machine requires full version of Native Instruments Kontakt 4.2 or newer. It's (Cracklebot, not Kontakt) free to download and use in your music. Right here - 4MB. Includes short confusing manual in funny English. Have fun.

Also check further mutations of the machine:
Unchained - with configurable sequence generators.
Red and Violet - for ambiance cracklescapes.