Sending microtonal pitch info to ableton

Hello,

Is it possible to send microtonal sequences out via Midi? I can make it work internally, no problem, but vst synths in Ableton for example, don’t seem to get any ‘detuned’ pitch info…

Thanks a lot

You could send pitch bend info and set the desired resolution in Live. Probably easiest to keep it at a semi tone, then you can obtain micro tonality as a combo of normal static pitches + pb info

1 Like

Related to Thor’s comment – it’s pretty easy to send MPE style MIDI out of SC. That plus pitch bend can do microtuning.

hjh

1 Like

Quicky MPE examples:

Round robin voice allocation for MPE:

(
a = Pbind(
	\type, \midi,
	\midiout, m,
	\chan, Pn(Pseries(0, 1, 16), inf),  // here's the voice allocator
	\degree, Prand([1, 2, 3, [0, 5]], inf),
	\bend, Pwhite(-6000, 6000, inf) + 8192,
	\callback, {
		~midiout.bend(0, ~bend)
	}
).play;
)

a.stop;

Or, a more proper voice allocator (this one sounds kinda hilarious with Surge XT in MPE mode):

(
// or, smarter voice allocation (accounting for very long vs very short notes)
a = Pbind(
	\type, \midi,
	\midiout, m,
	\chan, Prout { |event|
		// SC already has a class to grab and release numbers
		var allocator = ContiguousBlockAllocator(16, 0);
		var oneNote = { |ev|
			var chan = allocator.alloc(1);
			var sus;
			if(chan.isNil) {
				// or, here, do your own voice stealing logic
				"no voice available".warn;
				Rest(0)
			} {
				sus = ev.use { ~sustain.value };
				thisThread.clock.sched(sus, {
					allocator.free(chan);
				});
				chan
			};
		};
		loop {
			event = oneNote.value(event).yield;
		}
	},
	\degree, Prand([1, 2, 3, [0, 5]], inf),
	\bend, Pwhite(-6000, 6000, inf) + 8192,
	\dur, Pexprand(0.2, 0.5, inf),
	\legato, Pexprand(0.5, 3, inf),
	\callback, {
		~midiout.bend(0, ~bend)
	}
).trace.play;
)

a.stop;

hjh

1 Like

I’ve also done this for synths without MPE support. I use equal-tempered octaves, so I would have a separate track in my DAW for each subdivision of the half-step with the synths detuned to the desired offset (so, for a Simms / Maneri scale, a 72-note octave, one track for traditional equal tempered tuning, one for 1/12th up, one for 1/6th up, one for quarter tone, one for 1/6th down, one for 1/12th down), each track set to respond to a different MIDI channel. Then, in SC, you just send your MIDI to the channel that corresponds to the offset from the half-step that you need. Not as CPU-efficient as MPE, nor as simple to edit later, but works when you need it.

1 Like

I did this for the second track on this album, “Sparks an Empty Pool”, which has a long, 96-note octave chord progression that I wanted to “play”, with some semblance of “touch”, using the East/West Bosendorfer piano. The label doesn’t do streaming, so I only have the excerpt at the above link to share, where you get a few piano chords in the latter part.

I captured the MIDI from a nice, weighted controller and sent OSC messages to Reaper with the East/West Play plugin on a bunch of tracks. That plugin allows MPE, but a lot of sample settings don’t allow pitch bends beyond some very small amount. They do allow detuning, though, so that’s how I had to do it. An extra bonus was that I was able to write the SC code so that I didn’t have to hit the right notes, just the right amount of notes, so I could focus entirely on the touch and not worry about clams.

1 Like