Yamaha P115: Transpose using midi commands

Joined
Mar 6, 2018
Messages
8
Reaction score
0
Hi,
I'm using mobilsheets to control my piano and synth instruments. For the Piano I can't find any details on the midi commands to transpose (I have these commands for the Synth and all works well). Does anybody know how to transpose via midi commands on a Yamaha P115?
I have read the midi reference here: https://tw.yamaha.com/files/download/other_assets/0/333280/p115_en_mr_a0.pdf but can't figure it out from the details here.
I'm quite a novice to midi so maybe i'm missing something obvious. If coarse tune would work (I'm not sure what it is) I see it's mentioned but don't know what format to the command takes. Anybody any experience?

Thanks
 

SeaGtGruff

I meant to play that note!
Moderator
Joined
Jun 6, 2014
Messages
4,111
Reaction score
1,736
Yes, "coarse tune" is the same thing as transpose, because it lets you shift the note values up or down in pitch by a given number of semitones. (In contrast, "fine tune" lets you shift pitch by a given number of cents.)

There are a few different "coarse tune" messages-- at least one GM command, and at least a couple of Yamaha XG commands-- and they can have different effects, such as transposing the entire keyboard or transposing just a given part. I'll have to check the MIDI reference for the P115 to see if it says which messages are supported.
 
Joined
Mar 6, 2018
Messages
8
Reaction score
0
Thanks I think the RPN should do what I need but I don't know what format the command would be in:
2. CONTROL CHANGE (page 4 of link)
Data format: [BnH] -> [cc] -> [vv]
BnH = Control change (n = channel number) cc = Control number vv = Data Range

(16) RPN
65H RPN MSB
64H RPN LSB
06H Data Entry MSB
26H Data Entry LSB
60H Data Increment
61H Data Decrement
* Parameters that are controllable with RPN: • Coarse Tune • Fine Tune • Pitch Bend Range

Trying to put this info into a coherant command is where i'm lost
The current MIDI standard only specifies five RPNs (numbers are shown in decimal with the MSB, CC101, first): they are Pitch BendSensitivity (0, 0), Fine Tuning (0, 1), Coarse Tuning (0, 2),

That's the other bit of info I have!
 

SeaGtGruff

I meant to play that note!
Moderator
Joined
Jun 6, 2014
Messages
4,111
Reaction score
1,736
I think I need a little more understanding of what you're trying to accomplish so I can help you better.

(1) Am I correct that you're using Zubersoft MobileSheets to control the P115? I don't know whether it matters, but Is that on Windows 10 or Android? And if it's on Android, is it the paid version or the free version? These questions are mainly so I can be sure I'm looking at the correct manual, and maybe install the program myself. But they're also because there might be additional options available, such as another program you could be running parallel with MobileSheets.

(2) Am I correct that you want MobileSheets to send a specific Transpose (or Coarse Tuning) message to the P115 for specific music-- e.g., transpose Song 1 up 3 semitones, transpose Song 2 down 5 semitones, etc.? Also, are you currently using MobileSheets to send Bank Select and Program Changes to the P115? And if so, are those messages working?

(3) Is the Transpose message supposed to transpose the notes you're playing on the P115, or notes which are being sequenced to the P115? (I'm not sure whether MobileSheets can sequence a song, since it's for displaying sheet music; but I figured I should ask that anyway.)

Questions 2 and 3 are mainly to help me understand the overall context and the specifics of what you're trying to do. I'm guessing that maybe the sheet music you've got shows the songs in certain keys, so those are the keys you'll be playing (sight-reading) them in-- unless you'll be playing them from memory, and you learned them in specific keys-- but the people you're playing with want to transpose the songs to different keys so they're easier to play or sing?

I apologize if that seems like a lot of stupid questions, but I'm trying to figure out whether it would be better to use channel messages or system messages. Also, I'm not sure whether incoming channel messages affect the keyboard parts ("panel settings") on the P115, in which case you'd either need to use a system message or else use some means (possibly MobileSheets) to take the MIDI coming from the P115 and bounce it back to the P115 with the Local Control turned off.
 
Joined
Mar 6, 2018
Messages
8
Reaction score
0
No problem thanks so much for taking the time to help me.

1. I'm using the paid android version of Zubersoft mobilsheets. The interface is quite straightforward and for the Roland XP-50 synth (with the help of somebody in a ROalnd forum) he has given me the coarse tune commannds and they are working brilliantly, as I load up a song it transposes the keyboard into the correct key (most are the default tuning but a few we play in strange keys)

2. Yeah that's correct, my aim is to get the piano to tune up and down for a few tunes, and send the coarse tune = 0 or default command for the rest of them to esnure the tuning is back where it should be. Yeah I'm currently using it for sound bank selection on the p115 and all going well.

3. The transpose message is to transpose the notes i'm playing on the P115, instead of manually tranposing at the start of a song, just to do this electronically...as sometimes I forget to transpose back and sounds terrible live! I'd origanlly scribbled reminders on the sheet music on mobilsheets but would be great to get this going.

So I have a screen where i can enter the system exclusive commands and this is how i'm doing it on the Roland XP-50:
F0 41 10 6A 12 00 00 00 2C 00 54 F7 = -5
F0 41 10 6A 12 00 00 00 2C 01 53 F7 = -4
F0 41 10 6A 12 00 00 00 2C 02 52 F7 = -3
F0 41 10 6A 12 00 00 00 2C 03 51 F7 = -2
F0 41 10 6A 12 00 00 00 2C 04 50 F7 = -1
F0 41 10 6A 12 00 00 00 2C 05 4F F7 = 0
F0 41 10 6A 12 00 00 00 2C 06 4E F7 = +1
F0 41 10 6A 12 00 00 00 2C 07 4D F7 = +2
F0 41 10 6A 12 00 00 00 2C 08 4C F7 = +3
F0 41 10 6A 12 00 00 00 2C 09 4B F7 = +4
F0 41 10 6A 12 00 00 00 2C 0A 4A F7 = +5
F0 41 10 6A 12 00 00 00 2C 0B 49 F7 = +6

I just can't figure out how to format the parallel set of commands for the P115, I think the info is in the link referenced above but i'm just struggling to figure out the format, and haven't been able to find anytihng online to assisit.

Again, really appreciate your help looking into this! As you seem to be putting a lot of thought and effort in, very kind of you!

I send the midi signals to the Roland XP-50 on channel 1 and to the P115 on channel 2, in case it effects the commands.

Chris
 

SeaGtGruff

I meant to play that note!
Moderator
Joined
Jun 6, 2014
Messages
4,111
Reaction score
1,736
There might be some XG SysEx messages that you can use similarly to what you're doing for the Roland. There are some old XG documents available on the internet (if you're interested in looking at that kind of stuff), but the best one is the version 2.0 document-- at least, that seems to be the last one that Yamaha released, so it's the most up-to-date (except it's almost 20 years old).

However, if the patch changes for channel 2 are working for the P115, then hopefully the RPN Coarse Tuning for channel 2 will also work. I'm looking at the Windows 10 manual for MobileSheets and it looks like there's no dialog for RPN messages per se, so they'll need to be sent as a series of CC messages. I'll put together a list.
 

SeaGtGruff

I meant to play that note!
Moderator
Joined
Jun 6, 2014
Messages
4,111
Reaction score
1,736
I wonder if the following would work if you were to enter them in the SysEx box? Are you entering the bytes of those other messages as shown-- that is, did you have to include the F0 at the beginning and the F7 at the end? If so, then you might be able to use the SysEx to send any string of bytes, even for CC messages.

B1 65 00 64 02 06 3B 65 7F 64 7F = -5 semitones
B1 65 00 64 02 06 3C 65 7F 64 7F = -4 semitones
B1 65 00 64 02 06 3D 65 7F 64 7F = -3 semitones
B1 65 00 64 02 06 3E 65 7F 64 7F = -2 semitones
B1 65 00 64 02 06 3F 65 7F 64 7F = -1 semitone
B1 65 00 64 02 06 40 65 7F 64 7F = 0 semitones
B1 65 00 64 02 06 41 65 7F 64 7F = +1 semitone
B1 65 00 64 02 06 42 65 7F 64 7F = +2 semitones
B1 65 00 64 02 06 43 65 7F 64 7F = +3 semitones
B1 65 00 64 02 06 44 65 7F 64 7F = +4 semitones
B1 65 00 64 02 06 45 65 7F 64 7F = +5 semitones
B1 65 00 64 02 06 46 65 7F 64 7F = +6 semitones

If you're interested, the breakdown of those messages is as follows:

B1 - Control Change on channel 1 (to the computer, or channel 2 to humans)
65 00 - RPN MSB 0
64 02 - RPN LSB 2 (RPN 0, 2 is Coarse Tuning)
06 nn - Data Value MSB (Data Value LSB is not used; nn is the semitones offset, where 40 is 0 semitones)
65 7F - RPN MSB 127
64 7F - RPN LSB 127 (RPN 127, 127 is "null," used to prevent unintended changes to the previous RPN)
 
Joined
Mar 6, 2018
Messages
8
Reaction score
0
Great thanks so much, have a new tablet on the way, hopefully it will arrive tomorrow (although looking at tracking i'm not too optimistic).So hopeully I'll get to give this a go over the weekend.
I understood some of the concepts from the link to the manual at the top but just didn't know how to join it all together!
I think I need to understand the MSB and LSB terms to start my midi education, Most significat bit and least significant bit i tihnk! Anyway all that info is out there for me to digest! thanks again and i'll let you know once i get a chance to try this!
Chris
 

SeaGtGruff

I meant to play that note!
Moderator
Joined
Jun 6, 2014
Messages
4,111
Reaction score
1,736
In this case, MSB and LSB refer to bytes, not bits-- Most Significant Byte and Least Significant Byte. A byte can have 256 different values-- 0 through 255. If we have a 2-byte number, it can have 65536 different values-- 0 through 65535. In that case we refer to the two bytes as the MSB and the LSB to indicate their place values, sort of like the digits of a decimal number have place values (1s, 10s, 100s, 1000s, etc.). So the LSB is basically the 1s place, and the MSB is the 256s place-- that is, whatever value is in the MSB must be multiplied by 256 to get its actual value within the overall 2-byte value.

However, the actual values depend on how we interpret the bits, such as whether one of the bits is used as a sign or other type of flag. For instance, in a signed byte the high bit (bit 7) is the positive/negative sign, so the values can be -128 through +127. MIDI normally uses the high bit as a special flag-- usually to indicate whether the byte is a message, but sometimes to indicate whether a byte of a variable-length number is followed by another byte-- so for a data byte the values normally range from 0 to 127 (hex 00 to 7F). If the number is made up of 2 bytes (MSB and LSB), the range is from 0 to 16383, since it's really a 14-bit value where the LSB is the lower 7 bits and the MSB is the higher 7 bits (because the high bit of each byte isn't used as part of the value).
 
Joined
Mar 6, 2018
Messages
8
Reaction score
0
Thanks for explanation, getting my head around it! Hadn't even heard of hex till last week! I'll be so chuffed if I get it working over weekend!
 

SeaGtGruff

I meant to play that note!
Moderator
Joined
Jun 6, 2014
Messages
4,111
Reaction score
1,736
I guess I should have mentioned that for MIDI data, the MSB is the 128s place, not the 256s place as in normal 2-byte numbers. That is, whatever value is in the MSB would be multipled by 128 and added to the LSB value, since we use only 7 of the 8 bits in the LSB and MSB:

Normal 2-byte numbers:
Total value = 256 * MSB + LSB

MIDI 2-byte numbers:
Total value = 128 * MSB + LSB

Fortunately, you don't actually need to know all of this stuff to use MIDI, otherwise there would be a lot more musicians who had torn all of their hair out. ;)
 
Joined
Mar 6, 2018
Messages
8
Reaction score
0
So the new tablet arrived, it's dual boot but only andrloid 5 with no update available and usb midi cables don't appear supported untill android 6, so i'm using windows 10.
I've installed the yamaha driver and keyboard connects fine, however i think the program change data is incorrect in the instructions above as I can't change the program using mobilesheets. I've been toying with midi ox to see if I can do it but not havoing any luck. I am connected, i've changed the midi channel to 2, and toggled it on and off (using d#6 per instructions).
On midi-ox I can see when i press keys and when i change the program manually on the keyboard and I then send a message to it to do the same thing.
TIMESTAMP IN PORT STATUS DATA1 DATA2 CHAN NOTE EVENT
0008F03A MOX 2 B1 00 00 2 --- CC: Bank MSB
0008F03A MOX 2 B1 20 7A 2 --- CC: Bank LSB
0008F03A MOX 2 C1 00 -- 2 --- PC: Acc. Grand Piano
That's the command i'm sending to try and change the patch. I get strange results at times, like instead of changing the patch to piano it'll add the patch to the strings that the piano was on. OR change the bass to a piano sound. When i press the physical button on the piano I get the following log
TIMESTAMP IN PORT STATUS DATA1 DATA2 CHAN NOTE EVENT
00004D1F 1 2 B0 5B 05 1 --- CC: Reverb Depth
00004D21 1 2 B0 07 7D 1 --- CC: Volume
00005828 1 2 B0 00 00 1 --- CC: Bank MSB
00005829 1 2 B0 20 7A 1 --- CC: Bank LSB
00005829 1 2 C0 00 -- 1 --- PC: Acc. Grand Piano
0000582B 1 2 F0 Buffer: 10 Bytes System Exclusive
SYSX: F0 43 10 4C 02 01 00 01 10 F7


It's been a frustrating day!
 

SeaGtGruff

I meant to play that note!
Moderator
Joined
Jun 6, 2014
Messages
4,111
Reaction score
1,736
A lot of multitimbral keyboards are designed such that incoming MIDI messages don't affect the keyboard parts, just the song parts. Some models let you configure the MIDI send/receive settings to allow incoming messages on a particular channel to control a particular keyboard part-- for instance, you might be able to tell the keyboard that you want the events being received on channel 3 to control the Right1 part. I'm not familiar with the P-115's capabilities and functions, but if it doesn't have any settings like that then you might still be able to get the Right1 (or Main) keyboard part to respond to incoming channel 1 messages by putting it into Song mode (if the keyboard has one), or by selecting the One Touch Setting or OTS voice (again, if the keyboard has that).

The Yamaha models that I have don't have sophisticated MIDI configuration settings, and choosing the OTS voice provides only limited MIDI control capabilities, so I end up having to use a sort of "trick"-- namely, I turn off the keyboard's Local Control setting, so that playing on the keyboard doesn't produce any sounds. Then I send the keyboard's MIDI to a DAW running on my computer, then send it back to the keyboard, so I can essentially use the keyboard as both a keyboard controller and a sound module. This lets me do all sorts of things that wouldn't be possible otherwise.

Anyway, I think I saw something in the manual for the MobileSheets app that mentioned MIDI Thru, so you might be able to send the P-115's MIDI to MobileSheets, then send it back to the P-115, although you'd need to be sure to turn off the Local Control setting on the P-115. Then you should be able to have MobileSheets send program changes and other types of messages (such as Coarse Tuning) and have the P-115 respond the way you're wanting it to.
 
Joined
Mar 6, 2018
Messages
8
Reaction score
0
Thanks for the reply, I have seen in other forums that people gave gone direct to yamaha and they have been able to help so I'll try going that way, hopefully I'll get it sorted and then get a chance to try the coarse tune info you gave me! I've since noticed it's actually a P105 I have but the midi instructions seem to be almost identical to the 105 so same commands will work.
 

SeaGtGruff

I meant to play that note!
Moderator
Joined
Jun 6, 2014
Messages
4,111
Reaction score
1,736
While reading your post on another forum, what you said about the patch changes taking effect but being combined with an Acoustic Grand Piano sound finally sank in. (Duh!) I think your whole problem, now that you're setting things up on your new tablet, is that you're using channel 2 to send to the P-105, so the MIDI is changing the sound for the Right2 or Dual voice (which uses channel 2 by default), and the sound for the Right1 or Main voice (which uses channel 1 by default) is staying set to the default sound of the Acoustic Grand Piano.

I'm guessing that when you were doing it before on your old tablet, you must have been using channel 1 to send to both the synth (MOX?) and the P-105, which was perfectly okay since each instrument was receiving its data over its own MIDI port. It's okay for two or more instruments to be using the same MIDI channels, as long as they have their own ports for the data. The only time you need to worry about keeping different MIDI instruments on different channels is if you're sending 16 channels over a single port to one instrument, then either daisy-chaining to a second instrument using MIDI Thru, or using a MIDI box to split (clone) a single MIDI In port into two or more MIDI Out ports. Since that isn't what you're doing, it's perfectly okay to be using channel 1 for both keyboards.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
14,046
Messages
86,666
Members
13,149
Latest member
sbmusichelp

Latest Threads

Top