View Full Version : Adjustable Triggered Midi Notes
mreutman
12-14-2010, 07:13 PM
Hello,
I'm a current electrical engineering student, but have little experience with midi. Currently, my idea was to create a device that would have trigger inputs that would tell whether or not to turn a note on or off. This note would be selected by the use of a potentiometer. I'm fairly sure I have the wiring down (just use the potentiometer wiring set up with some switching transistors set up to turn the connections on and off), but the midi aspect is where I'm getting slightly confused.
All I want it to do is simply return an on/off message. For example, when the trigger receives a voltage nose c3 plays, when the trigger voltage goes down to 0, note c3 turns off.
I would like to have multiple trigger sections each utilizing their own tuning/note selection.
Could any one fill me in on the implementation of this idea?
Thanks,
-Michael
Hi Michael,
I think I understand what you'd like to do, and I think the implementation may be simpler than you suspect.
Here's an example implementation with two switches that trigger MIDI notes. Each switch has a corresponding potentiometer that is used to select a note number between 0-127. (We can restrict the note numbers if we want--let me know.)
The note triggers do not have to be switches--any 5V logic signal (or an "open collector" type signal) can be connected to the control terminals 0 and 1.
With this method, you can have up to 12 trigger/potentiometer pairs per MIDI CPU.
Let me know if I misunderstood your application or if this setup won't work for some reason.
The wiring:
http://highlyliquid.com/support/img/midi-cpu/midi-cpu-note-trigger-selector.png
The sysex configuration code:
// Fixed Header
F0 00 01 5D 04 01
// Layer 00h
00
// CT 0: Note On/Off. For note number, use analog value from CT #8.
// Register address for analog input to CT #8 is 0Fh.
// Velocity 127.
00 00 45 00 0F 7F
00 01 45 00 0F 00
// CT 1: Note On/Off. For note number, use analog value from CT #9.
// Register address for analog input to CT #9 is 0Dh.
// Velocity 127.
01 00 45 00 0D 7F
01 01 45 00 0D 00
// CT 8 and 9: Analog input. Do not generate events when input changes.
08 00 0F 00 00 00
09 00 0F 00 00 00
// Fixed Footer
F7
mreutman
12-16-2010, 05:06 PM
John,
Thanks a bunch! This is exactly what I was looking for!
I take it that if I wanted to do 12 then 0-11 would connect the switches and 12-23 would connect the potentiometers.
For SysEx, I take the code would be simply changing the "0Fh" to the corresponding value of each potentiometer and doing alot of copy/paste.
One question though, where exactly in the code are you assigning the "0Fh"? There is a "0F" in column 3 of the potentiometer groupings, but I don't know if that is the correct area for that value.
I may generate some more questions later, but that's all I can think of now. Much simpler than I imagined!
Just to let you in on the back ground, this is going to be integrated into a modular set to act as a "trigger/sequencer bridge" between my analog and my digital gear.
-Michael
Michael,
I take it that if I wanted to do 12 then 0-11 would connect the switches and 12-23 would connect the potentiometers.
Almost...but take a look at the "control wiring" section of the hardware user manual. There is a chart that shows which control terminals can be used for analog input. (Not all of them between 12-23 can.)
For SysEx, I take the code would be simply changing the "0Fh" to the corresponding value of each potentiometer and doing alot of copy/paste.
One question though, where exactly in the code are you assigning the "0Fh"? There is a "0F" in column 3 of the potentiometer groupings, but I don't know if that is the correct area for that value.
Ok...
Firmware V1.2 manual, page 10. You'll see the definition of a "configuration chunk", which is:
nn tt mm ch d0 d1
For the logic input note triggers, we're using mode mm=45h ("Logic Input Trigger: Note On"). The description of this mode is on page 13.
For mm=45h, d0 is the address of the data register for the note number value.
On page 8, you'll see the analog input data registers and the address for each. This is where the 0Fh and 0Dh come from in the config for CT 0 and 1.
Kind of convoluted, I know. :rolleyes:
The 0Fh in column 3 of the configs for CT 8 & 9 is unrelated. This is the mode for those terminals--"Analog Input: Data Only" (page 24). This mode tells the MIDI CPU to accept analog input on those terminals, but without triggering any events when the analog value changes.
Let me know if that helps clarify things.
I may generate some more questions later, but that's all I can think of now. Much simpler than I imagined!
Just to let you in on the back ground, this is going to be integrated into a modular set to act as a "trigger/sequencer bridge" between my analog and my digital gear.
-Michael
Glad to answer any other questions you might have. :) I hope you'll post a demo video of your project. :)
mreutman
12-16-2010, 08:57 PM
Almost...but take a look at the "control wiring" section of the hardware user manual. There is a chart that shows which control terminals can be used for analog input. (Not all of them between 12-23 can.)
Ahh, I missed the "Control Terminal Function Summary" table. So I'll just have 10-13, 16-23 function as the note selection and 0-9, 14, 15 function as the switching portion.
Ok...
Firmware V1.2 manual, page 10. You'll see the definition of a "configuration chunk", which is:
nn tt mm ch d0 d1
For the logic input note triggers, we're using mode mm=45h ("Logic Input Trigger: Note On"). The description of this mode is on page 13.
For mm=45h, d0 is the address of the data register for the note number value.
On page 8, you'll see the analog input data registers and the address for each. This is where the 0Fh and 0Dh come from in the config for CT 0 and 1.
Kind of convoluted, I know. :rolleyes:
The 0Fh in column 3 of the configs for CT 8 & 9 is unrelated. This is the mode for those terminals--"Analog Input: Data Only" (page 24). This mode tells the MIDI CPU to accept analog input on those terminals, but without triggering any events when the analog value changes.
Let me know if that helps clarify things.
Glad to answer any other questions you might have. :) I hope you'll post a demo video of your project. :)
I think I got all of that. I've had some experience programming, so machine speak isn't too foreign to me, but it's not my forte. Definitely going to be reading through the manuals some more.
Thanks again! I'm really excited about this project.
-Michael
vBulletin® v3.8.2, Copyright ©2000-2012, Jelsoft Enterprises Ltd.