|
||||||
Title: one finger mode for arranger Post by tor on May 4th, 2003, 6:58pm Introduction: Most arranger keyboards like Korg PA 80 that have auto accompaniament, split the keyboard and use the lower 7 keys for chord recognition. There are three types of chord recognition. Im only considering one of those here, that is single finger mode. In single finger mode, with the key specified, the left hand has to only place one finger in the chord recognition area, and the proper chord would be chosen. For example; in the key of C, hitting the C note will produce the chord of C Major, hitting the D note will give the chord of D minor, E note gives the chord of E minor and so on. The problem: Most keyboards are not flexible in single finger mode to give the appropriate chord for a particular song. For example in the key of C, when I hit the E note, I want the chord E Major 7, not Eminor. The second problem: I want to trigger this single finger mode from my midi guitar low E string only and silence the midi information coming from the other strings. The solution: My great discovery::: MIDIOX. Im not a great programmer. Im a mechanical engineer, so I learned FORTRAN and Basic in college. but Im ready to dive in again. Heres my structure: My foot controller chooses the Key. This key then selects a "map" which I have programmed to play specific chords for my chord recognition string (the low E or A string). Then when I hit a note on my note recognition strings, the appropriate chord is played by midiox, which then is introduced to my Korg PA80 which is set to three note recognition mode. I know I didn't use any programming language to explain this so I hope I have expressed myself well enough to evoke your sympathy. Thankyou for your consideration Newbie, Tor Marquis |
||||||
Title: Re: one finger mode for arranger Post by Jamie OConnell on May 4th, 2003, 11:11pm Thanks, that explains it a little more. Quote:
Yes, that would be correct diatonic interpretation for C major. Quote:
OK, as long as we don't pretend that EMaj7 is related to the key of C: the 3rd (G#) and 7th (D#) are non-scale tones for the Key of C. Quote:
Assumptions:
Now it would be a fairly simple feat to construct a map that reacts to each different fretted note on the E string with a different Triad. For example, Open E on channel 1 could trigger C-E-G on channel 7. F on channel 1 could trigger A-C#-G# on channel 7. etc... |
||||||
Title: Re: one finger mode for arranger Post by tor on May 5th, 2003, 3:31am quote: OK, as long as we don't pretend that EMaj7 is related to the key of C: the 3rd (G#) and 7th (D#) are non-scale tones for the Key of C. Thats the whole point, some songs go out of the key, thats why I need to be able to customize this. Quote: Now it would be a fairly simple feat to construct a map that reacts to each different fretted note on the E string with a different Triad. For example, Open E on channel 1 could trigger C-E-G on channel 7. F on channel 1 could trigger A-C#-G# on channel 7. etc... Question: Does that mean I need a different map for every note? I tried to modify the mapping file example "Minor chord"you placed with the MIDIOX program. I modified it as follows just to get a response when I hit low E. First Line: When input matches: ________________Note_#__Velocity__________ Chan__Evntype_Min_Max_Min_Max____________ Any___Note_on_28__28__-1___-1____________ Set Output to: Chan__Evntype_Min_Max_Min_Max____________ Mtch__Note_on_32__32__-1___-1____________ Clone Second Line: When input matches: ________________Note_#__Velocity__________ Chan__Evntype_Min_Max_Min_Max____________ Any___Note_on_28__28__-1___-1____________ Set Output to: Chan__Evntype_Min_Max_Min_Max____________ Mtch__Note_on_35__35__-1___-1____________ Clone And that didn't work. But I haven't given up yet. I think this system would be really worthwhile. Why should the keyboarders have all the fun!!?? Thank you for responding Tor Marquis |
||||||
Title: Re: one finger mode for arranger Post by Jamie OConnell on May 5th, 2003, 12:59pm Quote:
I think you'd need a different set of mapping lines for each note, but only a different map for each different Key you wanted to support. In other words, you could set up a single map that handled a complete set of different chords for the 'E' string: #28 (E) - #47 (B). Quote:
Do you mean you got no sound from it, or no output in the monitor? If the map was on and the items were cloned as you indicate, you should have gotten a triad. But to include several different chords in the same map, you'll need to map from the original triggering channel to a target chord channel. As an example, lets say your guitar 'E' string sends on channel 1. Let's put all mapped chord values on channel 7. Let's say thet we will create the following chord mappings: E (28) -> EMaj7 F (29) -> AMaj7 F#(30) -> B7 G (31) -> C7 This is only the beginning of your final map, but will serve as an example. The open E (28) on channel 1 will map to a EMaj7 chord (E(40), G#(44), D#(51)) on channel 7: Ch Message V1Min V1Max V2Min V2Max C|Ch Message V1Min V1Max V2Min V2Max 1 NoteOn 28 28 0 127 Y| 7 * 40 40 * * 1 NoteOff 28 28 0 127 Y| 7 * 40 40 * * 1 NoteOn 28 28 0 127 Y| 7 * 44 44 * * 1 NoteOff 28 28 0 127 Y| 7 * 44 44 * * 1 NoteOn 28 28 0 127 | 7 * 51 51 * * 1 NoteOff 28 28 0 127 | 7 * 51 51 * * The F (29) on channel 1 will map to an AMaj7 chord (A(45), C#(49), G#(56)) on channel 7: Ch Message V1Min V1Max V2Min V2Max C|Ch Message V1Min V1Max V2Min V2Max 1 NoteOn 29 29 0 127 Y| 7 * 45 45 * * 1 NoteOff 29 29 0 127 Y| 7 * 45 45 * * 1 NoteOn 29 29 0 127 Y| 7 * 49 49 * * 1 NoteOff 29 29 0 127 Y| 7 * 49 49 * * 1 NoteOn 29 29 0 127 | 7 * 56 56 * * 1 NoteOff 29 29 0 127 | 7 * 56 56 * * And so on... Here's an ASCII Map (.txm) of the above 2 mappings: chordmap.txm (http://www.midiox.com/maps/chordmap.txm) |
||||||
Title: Re: one finger mode for arranger Post by tor on May 5th, 2003, 3:54pm Hi Jamie, thank you for helping me: I said: I tried to modify the mapping file example "Minor chord"you placed with the MIDIOX program...And that didn't work. Then, you responded: Do you mean you got no sound from it, or no output in the monitor? If the map was on and the items were cloned as you indicate, you should have gotten a triad. But to include several different chords in the same map, you'll need to map from the original triggering channel to a target chord channel. My response: I loaded your text file (nice feature) and I got no response: no output in the monitor and as you would expect no sound. But , I think if I can get this part to work Im half way there. |
||||||
Title: Re: one finger mode for arranger Post by tor on May 6th, 2003, 12:29pm Hi Jamie I still havent got your example map to work. Have you tried this on your system? |
||||||
Title: Re: one finger mode for arranger Post by Jamie OConnell on May 6th, 2003, 12:55pm Yeah, of course I tried it. This is the result: http://www.midiox.com/forumpix/chordmap.gif In your case, you say you got 'no output' in the monitor. That doesn't sound right. You should at least get the input traveling to the output, even with the map off. What happens when the map is off? You need to get that working first. |
||||||
Title: Re: one finger mode for arranger Post by tor on May 6th, 2003, 4:14pm Well then, I suppose your right. I didn't get no output. I got the same as that which I put in: MONITOR-INPUT time__IN_PORT_STATUS__DATA1_DATA2_CHAN_NOTE_EVENT 1B7F0_1__--___90______28______42_____1__E_2_Note_On 1BA8B_1__--___80______28______40_____1__E_2_Note_Off MONITOR-OUTPUT time__IN_PORT_STATUS__DATA1_DATA2_CHAN_NOTE_EVENT 1B7F0_1___2 __90______28______42_____1__E_2_Note_On 1BA8B_1__ 2___80______28______40_____1__E_2_Note_Off Also, for what its worth, your example "minor chord" works perfectly. |
||||||
Title: Re: one finger mode for arranger Post by tor on May 6th, 2003, 5:22pm Jamie: I got it. I hit octave down on the keyboard and it worked. But I can't figure it out. It said 28 on the imput screen. Anyway Im jazzed , and Im proceeding to write the map for the whole key. I dont know what to do after that. But I'll slam into that wall when I reach it. Thanks again! |
||||||
Title: Re: one finger mode for arranger Post by Jamie OConnell on May 6th, 2003, 5:32pm Quote:
That IS output. Please don't say you get nothing when you get something. Quote:
That's 28 Hex. The Mapping dialog expects and displays decimal numbers. To have your monitor display in decimal, right-click it and choose Display Decimal. |
||||||
Title: Re: one finger mode for arranger Post by tor on May 9th, 2003, 2:31am Ok I mapped an entire key of C and I tested it running a midi keyboard into Midiox using our map, then out into midiyoke then into Jammer live. I changed user settings in Jammer live to accept chord recognition on channel 7, turned a few bells and whistles and it now obeys when I hit a single note on my midi keyboard. I know this seems quite trivial, but before I met you, I was just on a wish list. Thank you Since Ive talked to you, I realize that for any given key, I can map the entire fretboard for any position that I would be at on my guitar. For example, the open E chord plays the lower E string in the open position. For this string I use channel 1 as a condition in my map (like in our example). For the open Am chord I use the A string which would be accepted as input on channel two instead of channel 1. I think this is working well. The next step , is what you said "The foot controller will somehow change the map in MIDI-OX. I don't know how that would best be done at the moment, but lets just assume that it happens (you could use Scripting ot Patch mapping). " For this Ive bitten the bullet and started delving into beginning Visual Basic 6 books. If you could help me focus a little bit, I would surely appreciate it. |
||||||
Title: Re: one finger mode for arranger Post by Jamie OConnell on May 9th, 2003, 12:01pm You could use patch mapping to load various maps, but then you might not be able to easily change patches. For scripting, you could use Windows Script Host, which is pre-installed on XP, or you could use VB6 or any other high-level language that supports COM. The MoxScript API has an interface that loads a Map. You could load a map in response to any sort of MIDI controller stimulii. It might be easier if you first decide what action will load a particular map. |
||||||
Title: Re: one finger mode for arranger Post by tor on May 11th, 2003, 9:27pm I think were going into scripting questions, but I will post here for continuity sake, unless you indicate otherwise. My conceptual program would be: Continue loop until finishedplaying = y ' Accept input from foot controlled midi controller pertaining to ' the key of x ' close existing map ( I didn't see this command in your ' scripting discussion) ' open map 'keyof x" If input = keyofx then mox.LoadDataMap "C:\Program Files\midiox\map\keyofx.oxm") ' user plays until set is finished leaveing midiox open Finishedplaying? y=finishedplaying close midiox 'END of PROGRAM There, did I miss anything major? Assuming I got the main idea, am I supposed to keep 10 data maps open at once and specify with the foot controller which one Im using, or is there a command which closes the datamaps? |
||||||
Title: Re: one finger mode for arranger Post by Jamie OConnell on May 12th, 2003, 12:04pm The act of loading a map, automatically closes and cleans up any other Global map in effect, so a close map API is not strictly required. If you wanted to clear a Map, you could load an empty map. |
||||||
MIDI-OX User Forum » Powered by YaBB 1 Gold - SP 1.3.1! YaBB © 2000-2003. All Rights Reserved. |