Yamaha P115: Transpose using midi commands

Discussion in 'MIDI' started by mp3ireland2, Mar 6, 2018.

  1. mp3ireland2

    mp3ireland2

    Joined:
    Mar 6, 2018
    Messages:
    8
    Likes Received:
    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
     
    mp3ireland2, Mar 6, 2018
    #1
    1. Advertisements

  2. mp3ireland2

    SeaGtGruff I meant to play that note! Moderator

    Joined:
    Jun 6, 2014
    Messages:
    2,121
    Likes Received:
    858
    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.
     
    SeaGtGruff, Mar 6, 2018
    #2
    mp3ireland2 likes this.
    1. Advertisements

  3. mp3ireland2

    mp3ireland2

    Joined:
    Mar 6, 2018
    Messages:
    8
    Likes Received:
    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!
     
    mp3ireland2, Mar 7, 2018
    #3
  4. mp3ireland2

    SeaGtGruff I meant to play that note! Moderator

    Joined:
    Jun 6, 2014
    Messages:
    2,121
    Likes Received:
    858
    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.
     
    SeaGtGruff, Mar 8, 2018
    #4
  5. mp3ireland2

    mp3ireland2

    Joined:
    Mar 6, 2018
    Messages:
    8
    Likes Received:
    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
     
    mp3ireland2, Mar 8, 2018
    #5
  6. mp3ireland2

    SeaGtGruff I meant to play that note! Moderator

    Joined:
    Jun 6, 2014
    Messages:
    2,121
    Likes Received:
    858
    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, Mar 8, 2018
    #6
  7. mp3ireland2

    mp3ireland2

    Joined:
    Mar 6, 2018
    Messages:
    8
    Likes Received:
    0
    Great, thanks once again for your help :)
     
    mp3ireland2, Mar 8, 2018
    #7
  8. mp3ireland2

    SeaGtGruff I meant to play that note! Moderator

    Joined:
    Jun 6, 2014
    Messages:
    2,121
    Likes Received:
    858
    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)
     
    SeaGtGruff, Mar 8, 2018
    #8
  9. mp3ireland2

    mp3ireland2

    Joined:
    Mar 6, 2018
    Messages:
    8
    Likes Received:
    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
     
    mp3ireland2, Mar 8, 2018
    #9
  10. mp3ireland2

    SeaGtGruff I meant to play that note! Moderator

    Joined:
    Jun 6, 2014
    Messages:
    2,121
    Likes Received:
    858
    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).
     
    SeaGtGruff, Mar 8, 2018
    #10
    mp3ireland2 likes this.
  11. mp3ireland2

    mp3ireland2

    Joined:
    Mar 6, 2018
    Messages:
    8
    Likes Received:
    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!
     
    mp3ireland2, Mar 8, 2018
    #11
  12. mp3ireland2

    SeaGtGruff I meant to play that note! Moderator

    Joined:
    Jun 6, 2014
    Messages:
    2,121
    Likes Received:
    858
    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. ;)
     
    SeaGtGruff, Mar 8, 2018
    #12
  13. mp3ireland2

    mp3ireland2

    Joined:
    Mar 6, 2018
    Messages:
    8
    Likes Received:
    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!
     
    mp3ireland2, Mar 10, 2018
    #13
  14. mp3ireland2

    SeaGtGruff I meant to play that note! Moderator

    Joined:
    Jun 6, 2014
    Messages:
    2,121
    Likes Received:
    858
    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.
     
    SeaGtGruff, Mar 11, 2018
    #14
  15. mp3ireland2

    mp3ireland2

    Joined:
    Mar 6, 2018
    Messages:
    8
    Likes Received:
    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.
     
    mp3ireland2, Mar 11, 2018
    #15
  16. mp3ireland2

    SeaGtGruff I meant to play that note! Moderator

    Joined:
    Jun 6, 2014
    Messages:
    2,121
    Likes Received:
    858
    I hope you can get it sorted out. :)
     
    SeaGtGruff, Mar 11, 2018
    #16
  17. mp3ireland2

    SeaGtGruff I meant to play that note! Moderator

    Joined:
    Jun 6, 2014
    Messages:
    2,121
    Likes Received:
    858
    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.
     
    SeaGtGruff, Mar 12, 2018
    #17
    1. Advertisements

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 (here). After that, you can post your question and our members will help you out.