MIDI help - Pipe Organ project!!!

  • Thread starter Thread starter mshilarious
  • Start date Start date
mshilarious

mshilarious

Banned
I started a thread on the keyboards board about building a pipe organ in my studio. Now that I have purchased some pipes, I am starting to think about the MIDI control system. Sadly, my knowledge of MIDI is weak, and my experience with MIDI software is worse, so I need some advice

I have an old POS digital piano that can be used as a controller. It is 61 note, which is useful, but it is rather limited in that it only can receive or transmit program changes from 0-4 :rolleyes: I don't think that is a big deal since the computer can set the program, and if the controller is confused :confused: does it really matter.

OK, so the path is: digital piano-->computer-->MIDI decoder-->pipe organ

The MIDI decoder just receives channel and note information, and triggers each pipe to play when that channel/note combination is activated. It seems easiest if each rank of pipes has a separate MIDI channel, and each pipe is defined as the MIDI note that corresponds with the note it sounds. So, I presume, the computer needs to translate program changes into channels and notes. This could get somewhat involved as the programs need to be defined to create various virtual stops and combinations of stops.

Let's say I have five ranks of pipes. The simplest programs would be a single rank of pipes. In addition to that, there are combinations, in unison, such that if for example you play C4, then it sounds in each rank that is selected and that has that note in its rank.

Next there are 'mutation' stops; these are basically two ranks where the higher rank plays in harmony with the lower rank. Moving along, there are 'mixture' stops, which have multiple notes in a higher rank or ranks play in harmony with a lower rank. The trick to mixtures is that as you move to higher notes in the lower rank, the number of possible harmony notes drop off as you run out of range.

Finally, there is the need to divide the controller into virtual manuals, where two different ranks have independent control on different sections of the keyboard.

So, my theory, if correct, is that I need to define a bunch of programs in software, and have each program translate single MIDI notes transmitted on a single channel from the controller into potentially a multiple of MIDI notes on several different channels output to the MIDI decoders.

Does all that sound feasible? Do standard sequencer programs handle this level of complexity, or will I need some sort of MIDI wrapper to translate the sequencer output :confused: :confused:
 
Do standard sequencer programs handle this level of complexity?
No. With a typical sequencer program, you could do it, but you'd have to do a lot of tedious setup each time you wanted to change registrations. Normally that kind of complexity would be handled within the instrument itself, using an embedded CPU. The combinations of ranks, couplers, etc., would be stored as a "patch" in the instrument, and recalled using a MIDI program change message or using the instrument's user interface (i.e., a control on the front panel).

You can change things on the fly using MIDI control change messages. This might be one way to go for adding/removing ranks, but I think I like the internal patch/program change idea better.

You are my hero for even considering this project.

Don
 
No. With a typical sequencer program, you could do it, but you'd have to do a lot of tedious setup each time you wanted to change registrations. Normally that kind of complexity would be handled within the instrument itself, using an embedded CPU. The combinations of ranks, couplers, etc., would be stored as a "patch" in the instrument, and recalled using a MIDI program change message or using the instrument's user interface (i.e., a control on the front panel).

You can change things on the fly using MIDI control change messages. This might be one way to go for adding/removing ranks, but I think I like the internal patch/program change idea better.

You are my hero for even considering this project.

Don

Hmmm, so you're thinking an outboard device? Anything you're aware of in a rackmount piece that could store the necessary program data?
 
No, I don't have anything specific in mind. Do you already have a way to drive the pipes via MIDI? (I.e, is your "midi decoder" an actual device, or just hypothetical?) If not, I think you're going to need to design and build some kind of custom MIDI receiver/pipe driver anyway. The program change logic would most sensibly be integrated in that device, IMO.
 
No, I don't have anything specific in mind. Do you already have a way to drive the pipes via MIDI? (I.e, is your "midi decoder" an actual device, or just hypothetical?) If not, I think you're going to need to design and build some kind of custom MIDI receiver/pipe driver anyway. The program change logic would most sensibly be integrated in that device, IMO.

Yeah, I've been looking at this unit:

http://j-omega.co.uk/mtp8.html

And there are similar units from other vendors, but this one seems most flexible as each output is assignable to a MIDI note and channel. That unit can directly drive the valves that open below each pipe, I just need to build a power supply which is trivial.
 
Yes, I can see how that unit could do what you need. Is 500ma at 35V adequate for your valves?

I'm not too familiar with VSTi, but that sounds like it could be a good way to go. You'd translate a MIDI note input to a combination of notes on the output, depending on the patch, right?
 
Yes, I can see how that unit could do what you need. Is 500ma at 35V adequate for your valves?

I'm not too familiar with VSTi, but that sounds like it could be a good way to go. You'd translate a MIDI note input to a combination of notes on the output, depending on the patch, right?

I think the valves tend to pull about 200mA @ 12V. I could drive the valves from relay if I needed, but I think the board itself will do.

Yeah, that is the theory of the VSTi. I have started playing with SynthMaker which is a clever program. It can split MIDI data, then sort out the program change messages, and then in theory has a custom coding feature that would allow selection of various note combinations based on program change data. I still haven't quite figured out how to populate the necessary arrays of channel/note data for each program, but I suppose the brute force method works . . . then the next question is the latency of such a method, but a pipe organ has a fair latency of its own . . .
 
I want to see/hear this thing when you're finished with it.
 
I would use a midibox midIO to drive relays. Should be easy enough

Hmmm. Seems somewhat cheaper, although when you add cost of the relays and the fabrication time to mount all the relays, I'm not sure. Of course I could use power transistors instead, it's not like I need 5A, but that's still lots of extra fabrication.

The nature on the documentation for the midibox is such that it's a fair effort to get that working and configured, and mounted in a box. I easily can't tell from the parts list exactly what I would need, and when I click around on the documentation, they start talking about sysex commands pretty quick. That's probably why the other vendors have a business . . .
 
I want to see/hear this thing when you're finished with it.

I should have the pipes in a couple of weeks; I'll toot on them a post a clilp :D

I estimate the full project will take at least a year.
 
Hmmm. Seems somewhat cheaper, although when you add cost of the relays and the fabrication time to mount all the relays, I'm not sure. Of course I could use power transistors instead, it's not like I need 5A, but that's still lots of extra fabrication.

The nature on the documentation for the midibox is such that it's a fair effort to get that working and configured, and mounted in a box. I easily can't tell from the parts list exactly what I would need, and when I click around on the documentation, they start talking about sysex commands pretty quick. That's probably why the other vendors have a business . . .

For the midIO128 you just need a core module and DOUT modules to drive the 128 triggers. MBHP seems complicated but once you get a basic understanding, it is pretty straight forward. It is also VERY well supported by the community, so I would direct any questions to their forums. They have a whole section dedicated to midification
 
For the midIO128 you just need a core module and DOUT modules to drive the 128 triggers. MBHP seems complicated but once you get a basic understanding, it is pretty straight forward. It is also VERY well supported by the community, so I would direct any questions to their forums. They have a whole section dedicated to midification

That sounds straightforward. I might design my own version of DOUT, with +12V feeding a bank of power transistors off the logic output, screw terminal outputs, and 64 outs per board. I'm still a bit vague on how its OS works, could this substitute for my VSTi idea, or does it just operate as a MIDI output :confused:
 
I've been playing with SynthMaker some more, actually I did a search here and no one has mentioned it before, so I'll put in a shameless plug: this is really excellent software. Beautifully designed interface. It took me a couple of hours to figure things out, but last time I tried a mix-your-own VST program, it was a POS compared with this. What's more, not only does it do VSTi synths, you can do plain ol' analog VSTs and export your finished product to VST or standalone executables. It is working really well for parsing MIDI data like I need. Then I'm going to write a VST I've been thinking about for a while. Four stars! Not freeware, but worth the price!

http://synthmaker.co.uk/index.html
 
That sounds straightforward. I might design my own version of DOUT, with +12V feeding a bank of power transistors off the logic output, screw terminal outputs, and 64 outs per board. I'm still a bit vague on how its OS works, could this substitute for my VSTi idea, or does it just operate as a MIDI output :confused:

The DOUT is just a demuxer so it could easily modified since it is just a bunch of serial registers. The midibox OS has two parts, the bootloader (MIOS) which handles midi communication and the actual app (in this case MidIO128). The app can be edited either via the source assembler (which is easy since it is all VERY well documented) or there is also a C front end if you want to go that route. With the actual app you can set up what the system will respond to as far as triggers. If your feeling adventurous, you could also add an analog output board that would respond to midi values like pitchbend and/or CC's
 
The DOUT is just a demuxer so it could easily modified since it is just a bunch of serial registers. The midibox OS has two parts, the bootloader (MIOS) which handles midi communication and the actual app (in this case MidIO128). The app can be edited either via the source assembler (which is easy since it is all VERY well documented) or there is also a C front end if you want to go that route. With the actual app you can set up what the system will respond to as far as triggers. If your feeling adventurous, you could also add an analog output board that would respond to midi values like pitchbend and/or CC's

The pitchbend and CC stuff is not useful in the analog domain for a pipe organ, unless you have something like a swell pedal, which I won't. The organ valves are essentially switches.

Is it right that the core module is limited to 128 outputs? Can the software control more than one core module at a time?
 
The pitchbend and CC stuff is not useful in the analog domain for a pipe organ, unless you have something like a swell pedal, which I won't. The organ valves are essentially switches.

Is it right that the core module is limited to 128 outputs? Can the software control more than one core module at a time?

One core is, you can slave another and control both via midi. The SID has 4 core modules with 1 master and 3 slaves. 128 is not enough?
 
I finished the GUI for the control software. I actually have a basic version that is working parsing the MIDI data, but for now this is just pretty vaporware :o Later tonight I hope to finish coding so it actually works as drawn.

I'll post it on my site when it's done as freeware, in case anybody wants a MIDI utility that can route controller inputs based on note data, and automatically transpose and harmonize (chromatically, not diatonically--I could do diatonic, but it would be a pain), and send the output to various MIDI channels. And oh yeah, it looks like an organ :o
 
Back
Top