Midipal as chord generator

Hi all,

I’m new here. I found this site in search for a midi chord generator. (select a scale root, select a scale, play a note, add e.g a third and fifth). I am a synth sax player (Yamaha WX5 & VL70-m) and looking for a possibility to mimic a full horn section on my own :o). Based on the manual, the scale & harmony processor of the Midipal seems to do a fair amount of the job, with a few questions/remarks/requests

1) Is the added note played in the same MIDI channel? I guess so. I wish it would be on a different channel. With a multi-timbral synth (to be defined which one) I could e.g. add an alto sax with a fifth above a trombone playing the root.

2) Obviously, my dear wish would be to be able to add more than one note, at least two but preferable up to 4 or 5 (including some octaves up and down).

3) Currently less pressing: It seems that the quantization is always rounded downwards. I’m not sure how this would work out in practice, I can imagine very well that depending on the scale an upward quantization may desirable as well. I could imagine that one could define e.g 5- or 5+ semitones, meaning a shift of 5 semitones but quantized up or down depending on the - or + sign

Any clarifications? Would these requests have any chance to be granted? Without being a porgrammer, I’m happy to help where I can.



1. This could be done by tweaking the code… Do you know a bit about programming?

2. There’s a chord memory function which does that… again on the same channel (modifiable with a bit of programming)

3. Which quantization are you talking about?

Oops sorry saw you’re not a programmer… Maybe someone here will be willing to customize the firmware for your needs?

Hi Pichenettes,

I thought I posted a reply but don’t see it. A second attempt. Please ignore if this shows up twice.

Thanks for your quick reply.

Based on your comments on 2) and 3) perhaps I need to clarify a bit better what I like to achieve. Let’s assume I want to generate simple triads (prime - third - fifth). The prime is played, the thrid and fifth are to be generated by Midipal. Depending on the scale and position of the prime in that scale, the third may be a minor (3 semitones above the prime) or major (+4 semitones) third. The fifth may be a normal fifth (+7 semitones), diminished (+6) or augmented (+8). So, the triad needs to be mapped to the scale. A similar situation occurs for a normal 7 and maj7 chord

From what I understand from the Midipal manual, the scale & harmony proceI actually does this, but then for one additional note only. I borrowed the term “quantization” for this mapping from the Midipal manual.

The manual description of the chord memory function is quite short but my interpretation is that it does not do the job above. I imagine the chord is not mapped to a scale but just transposed. Furthermore, it seems that defining the chord is done by actual playing it once. A fair procedure when using a keyboard, but more difficult with a monophonic instrument like a sax, especially during a live performance. Am I correct?

On programming: actually I do have some 20 year old, rusty programming experience from my PhD in computational physics. I programmed computational algorithms in high level languages (Pascal, Fortran, Matlab) on mainframes. So no experience on I/O and micro-controllers and modern languages. Also, I would have no clue how to debug in such an environment. Perhaps if someone would like to team up with me, I could do part of the work.


Okay I see what you want to do.

The chord memory app won’t do.

The scale app actually quantize both the incoming notes; but also the notes the notes it creates through “harmonization” of the input note.

What decides whether a note is rounded up/down are table modifiable in the source code. For example, for the major scale, the table looks like this:

0, 0, 2, 2, 4, 5, 5, 7, 7, 9, 9, 11,

It means that in C major, C gets rounded to C, C# to C, D to D, D# to D, E to E, F to F, F# to F, G to G, G# to G, A to A, A# to A, B to B.

Do you think this would work for your application? And do you think you could get what you want by similar pre-computing rounding table? Because then you just need to post what you’d like and get a charitable soul to recompile the firmware for you.

Hi Pichenettes,

Thanks for thinking along with me. I have given this a bit of thougth and indeed I think would work for the “quantization”. I think that would mean that my remaining wishes could be implemented as some extensions of the scale & harmony processor:

1) generation of more than one additional voice. A command like “NVC n” with n the number of voices to be generated.
2) interval to be adjusted per voice. “VOI n i” with i the number of semitones of the interval of voice n. It should be allowed that i can be negative
3) midi channel adjustable per voice “chn n c” with c the midi channel of voice n

(Of course all all midi paramaters such as velocity, aftertouch, pitch bend of the incoming note must be copied to the additional voices but I assume that goes without saying)

I guess these modifications would do the job.

Any charitable soul … ? :o)

Thanks in advance!


it might be possible if

the Scale and harmony processor
harmonic line section
which has the options:
off, mir, alt, trk, random

had one more type that isn’t random,
that would be exactly like the parallel harmony voice section

on screen it could be represented as
with a number

or just add another parallel harmony voice
and maybe keep the random (but be able to send it to another channel)

I’ve had the same thought and was going to use 2 MidiPALs and a midi merger to make it happen.

I figured since the Scale and harmony processor “tuned” downward,
using one MidiPAL I could send:
trs 0 - chord’s root note
voi 4 - chord’s third (gets tuned downward to the minor third if the chord in the scale is minor)
hrm off

and from the second MidiPAL:
trs 12 - chord’s root note, an octave up
voi 7 - chord’s fifth (which might get tuned downward - for example the 7 chord in a major scale)
hrm off

Then, if I wanted the random melody on it’s own channel, I’d have to use a third MidiPAL and re-channelize the note with some box or other.

On paper, it works for all the regular triads in major and minor scales
but it could be better to have it all happen in one MidiPAL app.

(still working on the drum side of my set-up, so haven’t tested. . . .
and don’t know how to program a MidiPAL. . . .
now, if it was a TRS-80)

sorry to jump in, horstenj ,
I think your idea is thorough and usable is lots of musical situations

to have more parallel voices available
and channel assignment per. . . .

so what if it were 8 voices (to be safe - 16 to dream)
and each voice could have the options:
voi, off,
mir, alt, trk, rnd

(if it’s not “off”, the voice would play the same note as input -
the first voice could be the input note)

Thanks Overjoid for jumping in.

Frankly, my imaginative powers are a bit stretched if I try to imagine the musical quality of 16 random voices :o) but I see one could stretch the concept even further than I proposed. I can’t oversee the complications for an implementation as you seem to propose to treat “voi” similar to “mir”" etc. My interpretation from the manual is that they currently are separate options. But perhaps that is no problem.

But then again, here we are with two interested users, both with some programming skills but no clue how to program a MidiPal. Is there anyone willing to help us out? Would be greatly appreciated!