MIDI retuning software?
March 26, 2010 12:35 AM Subscribe
I have a soundcard with a MIDI port. Is there software out there that would allow me to change the tuning of my MIDI keyboard and play it in real-time through my speakers?
Response by poster: Ideally, I'd like a program that lets me develop my own scales, with presets for things like just intonation, etc.
posted by archagon at 2:15 AM on March 26, 2010
posted by archagon at 2:15 AM on March 26, 2010
Best answer: If you want something that's extremely flexible, you want Scala. Unfortunately, it tends to be a little finicky, but it's pretty amazing.
posted by nosila at 4:14 AM on March 26, 2010
posted by nosila at 4:14 AM on March 26, 2010
Best answer: I don't know how obvious any of this already is to you, but:
MIDI is a protocol for sending messages between hardware.
A program that takes MIDI input and produces sound via your computer speakers is called a softsynth.
The normal way to use a softsynth nowadays is as a vsti inside DAW type environment. Abletone Live, Cubase, and Reason are popular programs for this sort of thing.
If using a softsynth is OK for your purposes, many synths are compatible with Scala defined scales (as nosila mentions), and this skips all the hassle of trying to shoehorn anything that is not 12tet equal tempered into MIDI. Or you could be lucky enough to have a hardware synth that loads Scala files (skipping the need to retune the MIDI data, simply "misinterpreting" it instead).
This last paragraph may be less helpful, but relates to your question and is a chance for me to vent one of my huge frustrations in the digital music making world.
If you wanted to send MIDI notes into your computer, and then send notes out that are in a scale that is not 12tet equal tuning, your simplest(!) option is to divide the notes up into groups that are each their own 12tet set, put each of these on their own channel, and manipulate the pitch bend on each of those channels independently in order to create the scale you desire. The problem here is that MIDI defines 12 notes to the octave as part of its standard, and it only defines one global pitch bend per channel. It is pretty much designed in order to make unconventional scales, or anything remotely interesting in terms of playing with frequency ratios and tunings, a pain in the ass to implement (yes individual synths can interpret MIDI notes however they like, but the point of MIDI is being able to reliably send music data between pieces of hardware).
posted by idiopath at 6:22 AM on March 26, 2010
MIDI is a protocol for sending messages between hardware.
A program that takes MIDI input and produces sound via your computer speakers is called a softsynth.
The normal way to use a softsynth nowadays is as a vsti inside DAW type environment. Abletone Live, Cubase, and Reason are popular programs for this sort of thing.
If using a softsynth is OK for your purposes, many synths are compatible with Scala defined scales (as nosila mentions), and this skips all the hassle of trying to shoehorn anything that is not 12tet equal tempered into MIDI. Or you could be lucky enough to have a hardware synth that loads Scala files (skipping the need to retune the MIDI data, simply "misinterpreting" it instead).
This last paragraph may be less helpful, but relates to your question and is a chance for me to vent one of my huge frustrations in the digital music making world.
If you wanted to send MIDI notes into your computer, and then send notes out that are in a scale that is not 12tet equal tuning, your simplest(!) option is to divide the notes up into groups that are each their own 12tet set, put each of these on their own channel, and manipulate the pitch bend on each of those channels independently in order to create the scale you desire. The problem here is that MIDI defines 12 notes to the octave as part of its standard, and it only defines one global pitch bend per channel. It is pretty much designed in order to make unconventional scales, or anything remotely interesting in terms of playing with frequency ratios and tunings, a pain in the ass to implement (yes individual synths can interpret MIDI notes however they like, but the point of MIDI is being able to reliably send music data between pieces of hardware).
posted by idiopath at 6:22 AM on March 26, 2010
idiopath: "divide the notes up into groups that are each their own 12tet set"
sorry, I mean divide the notes of your scale into groups that each can be represented as notes in a 12tet set. The idea being that the set of ratios is fixed for each channel, so the only ratios you can manipulate are the ratios between channels, though you can reuse existing ratios within one channel in order to avoid having one channel for each note of your scale.
A simple example: for a 24 note equal tempered octave, you can split your data stream into two channels, one of those channels getting a 1/4 tone pitch bend.
As a general method, you need to figure out the largest set of notes in your scale overlapping with 12tet ratios and put those on one channel unbent, and then find the next largest group, and apply a pitch bend so they have the right ratios regarding your first group, etc. Usually you don't need to go so far as having one note per channel (unless you want to do pitch bends that are not applied uniformly across the scale...).
tl:dr use a soft synth and skip tuning MIDI microtonally, it is possible but not worth the hassle.
posted by idiopath at 6:40 AM on March 26, 2010
sorry, I mean divide the notes of your scale into groups that each can be represented as notes in a 12tet set. The idea being that the set of ratios is fixed for each channel, so the only ratios you can manipulate are the ratios between channels, though you can reuse existing ratios within one channel in order to avoid having one channel for each note of your scale.
A simple example: for a 24 note equal tempered octave, you can split your data stream into two channels, one of those channels getting a 1/4 tone pitch bend.
As a general method, you need to figure out the largest set of notes in your scale overlapping with 12tet ratios and put those on one channel unbent, and then find the next largest group, and apply a pitch bend so they have the right ratios regarding your first group, etc. Usually you don't need to go so far as having one note per channel (unless you want to do pitch bends that are not applied uniformly across the scale...).
tl:dr use a soft synth and skip tuning MIDI microtonally, it is possible but not worth the hassle.
posted by idiopath at 6:40 AM on March 26, 2010
Response by poster: Is there any latency with softsynths? Will I be able to play my keyboard just as easily?
posted by archagon at 9:54 AM on March 26, 2010
posted by archagon at 9:54 AM on March 26, 2010
Best answer: Latency is an issue. It depends on your OS, how you tune it, the quality of your sound card, and the quality of the softsynth.
There are people getting low enough latencies with Linux that they can use their computer as a real time guitar effect box, it is physically possible for a single core pentium 2 with a firewire sound card to have latencies lower than the time it takes for the analog sound wave to get from your speaker to your ear.
On the other hand it is common to have latencies so large that the whole thing is unusable for real time with a quad core pentium 4 and a pci soundcard.
The OS and the software are a bigger factor here (except for certain notorious pieces of very bad hardware).
Some rules of thumb for latency:
Linux with a RealTime kernel is the best performing OS for low latency. You can download a CD image tuned for real-time low latency audio with Zynaddsubfx pre-installed. Ubuntu-studio and Pure-Dyne are pretty popular but there are a bunch of other choices. Realistically, of course, most people just don't understand Linux, and the software selection and usability is comparitively poor (though constantly and very slowly improving).
Whatever OS, turn off all the "desktop effects" and have as few programs running as possible, and if you can disconnect from the network too.
Bluetooth or USB1 is the worst choice sound card wise. Firewire, PCI, or USB2 will be your best bet.
posted by idiopath at 11:27 AM on March 26, 2010
There are people getting low enough latencies with Linux that they can use their computer as a real time guitar effect box, it is physically possible for a single core pentium 2 with a firewire sound card to have latencies lower than the time it takes for the analog sound wave to get from your speaker to your ear.
On the other hand it is common to have latencies so large that the whole thing is unusable for real time with a quad core pentium 4 and a pci soundcard.
The OS and the software are a bigger factor here (except for certain notorious pieces of very bad hardware).
Some rules of thumb for latency:
Linux with a RealTime kernel is the best performing OS for low latency. You can download a CD image tuned for real-time low latency audio with Zynaddsubfx pre-installed. Ubuntu-studio and Pure-Dyne are pretty popular but there are a bunch of other choices. Realistically, of course, most people just don't understand Linux, and the software selection and usability is comparitively poor (though constantly and very slowly improving).
Whatever OS, turn off all the "desktop effects" and have as few programs running as possible, and if you can disconnect from the network too.
Bluetooth or USB1 is the worst choice sound card wise. Firewire, PCI, or USB2 will be your best bet.
posted by idiopath at 11:27 AM on March 26, 2010
This thread is closed to new comments.
posted by Brent Parker at 1:33 AM on March 26, 2010