Re: rpn

From: Alexandre Ratchov <alex_at_caoua.org>
Date: Mon Jul 11 2016 - 09:22:34 CEST
On Tue, Jul 05, 2016 at 06:47:07AM -0700, Zack Olson wrote:
> Hi, I have a question about sending rpn messages to a hardware synth with
> midish. The documentation for my synth states that the bend range can be
> adjusted with rpn 06. With further digging, I found this more instructional bit
> of information on what I need to send:
> 
> B0 65 00 Controller/chan 0, RPN coarse (101), Pitch Bend Range
> B0 64 00 Controller/chan 0, RPN fine (100), Pitch Bend Range
> B0 06 xx Controller/chan 0, Data Entry coarse, +/- xx semitones (from 1 to 12)
> (B0 26 04 Controller/chan 0, Data Entry fine), -> Not implemented/needed; do
> not send
> 
> I've tried a few different combinations of commands in midish, but I'm clearly
> doing something wrong as I'm not getting the desired results. The command
> sequence that seems the most straight-forward to me for adjusting the pitch
> bend range to 12 semitones on a pre-defined output called mysynth is this one:
> 
> co mysynth
> oaddev {rpn mysynth 101 0}
> oaddev {rpn mysynth 100 0}
> oaddev {rpn mysynth 6 12}
> i
> s
> 
> Yet for some reason this doesn't work. What am I doing wrong?

Hi,

According to:

https://www.midi.org/specifications/item/table-3-control-change-messages-data-bytes-2

the pitch bend range is adjusted with RPN 0.  With midish the "rpn"
events are translated to the corresponding four midi controllers
you mentioned (64, 65, 06 and 26).

So all you need is:

oaddev {rpn mysynth 0 (12 * 128)}

the value is multiplied by 128 because of the unused "fine"
component, which must be there even if it has no effect. This will
generate the following midi messages:

b0 65 00
b0 64 00
b0 06 0c
b0 26 00

-- Alexandre
Received on Mon, 11 Jul 2016 09:22:34 +0200

This archive was generated by hypermail 2.1.8 : Wed Nov 08 2017 - 16:32:29 CET