Saturday, May 2, 2015

Wineglass drone, GUI update and change of location

I have made new Kontakt interface for Wineglass Drone instrument. It has been one of my first takes at Kontakt scripting and I felt, this set deserved a new approach. New GUI is based on two voice design, which can be used to create interesting setups, like detuning the reverberation, or band split two reverb types.

This instrument, as well as all my other paid instruments are now located at Sampleism.

If you've already acquired this set and you would like to use new interface, you can get it here (this is just the new Kontakt patch, it is using the same sample set). Just put new patch files in instrument's folder. The new patch is made in Kontakt 4.24, so it requires this or newer, full version of Kontakt.

Tuesday, April 28, 2015

ZX Transmissions

ZX Spectrum was the first computer I had. It used to store data as analog audio, that would be recorded to tape, which could sound interesting at times. Recently I've been discussing possibility of using such data audio files in noise/glitch music. In the end, I created an audio data transmission, that could be used for such purposes. It sounds like this:

It is free to grab and use in your music, right here, 48kHz, 16 bit, mono WAV file. Take it, if you like.

If you'd like to make such noises yourself, it's really quite simple. Here's the procedure I used. First I created some data, I used Photoshop to make a picture, I made it 256x192 pixels, which is ZX Spectrum native resolution, filled it with geometrical figures in different shades of gray. Converting the picture to bitmap made gray areas fill with repeating patterns (which make more interesting sounds than just random noise). Then I saved the picture to BMP format, but anything without compression would do. Actually you can use any data file, just (for this example) make it no longer than 6KB (bigger files will crash emulated computer when loaded, where I intend to load it).
I have a Spectrum in a dusty box, but it is way easier to use an emulator. I chose ZX Spin, as it lets you load any data file right into emulated memory and it saves WAV files out of the box. The home page seems to be down, but you can find the program here. Spectrum ROM have been allowed for free distribution, so you can use an emulator, even if you don't own the actual machine.
I decided to use video memory region, so I could see how picture loading works. First I wrote a command to save the region. To skip the trouble of learning how, you can use Z80 snapshot included in the download, just load the file into the emulator. You should see a message, "Start tape, then press any key". Now load the data, using menu "file/load binary file". Pick saved picture file and enter 16384 as the address. Now the screen should be filled with scrambled picture from input file. Pick menu "recording/audio/start recording", enter file name to save to and press any key to start the transmission. You should see moving stripes and hear transmission noises. When done pick "stop recording". This will create fun, modem like noise transmission. Try to pitch it down for some extra flavor. Have fun.

Wednesday, April 8, 2015

Game Bot

Bedroom Producers Blog released super-fun Game Boy drum kit today. I had the pleasure to make Kontakt gadget drum machine based on this kit, it is named Game Bot. The device is using Cracklebot / Haunted Jukebox code, with some new twists and improvements. It is running 10 sets of step sequencers to animate notes and effect settings, sequencer program is generated automatically on user's request. Unlike previous machines Game Bot accepts incoming notes to simply play the drum kit, in which case program and controls can be used to create different kit setups and/or to animate effects using modulation sequencers.

You can see the machine is action here:

Game Boy drum kit (including Game Bot machine) is available for free at Bedroom Producers Blog:

Sunday, March 29, 2015

Electric Noisebow

Electric Noisebow is imaginary virtual instrument for Kontakt sampler. It can generate drone sounds, noise soundscapes, ambient atmospheres or unfolding distortions. It is based on two sample sets I made by playing modified Reno electric guitar with an E-Bow. The clean set is built of sustained tone samples. The dirty set contains distorted sounds, I've got by putting the E-Bow very close to the vibrating string, so the string would start to collide with E-Bow housing. I edited all samples by hand to get more or less seamless loops, which are rather lengthy. Especially noise loops which span for 20-30 seconds. The instrument has double convolution reverb unit, which can be used to sweep between reverb and sound types. There is note doubler and round robin mechanism synchronized with transport position, so used in a project, the instrument should render repeatable results.
Here's example track created with one instance of the instrument in a single take:

And here's a small walk-through video:

The instrument is available at Sampleism. Note, that it requires full version of Native Instruments Kontakt 4.2 or newer to work. There are 36 WAV samples, 88,2 kHz, 24 bit and the whole instrument takes about 220MB or drive space.

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.

Note, if you re-save the preset, all recorded sequences will be saved within the preset, so you can easily make sequence sets.

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).