Yamaha PSS-A50 MIDI notes

To learn more about the Yamaha PSS-A50‘s MIDI implementation, I monitored its MIDI output stream using MIDI Ox and Sonar. Here are my notes. They are quite terse!

After inital start-up, the A50 sends MIDI timing clock and active sensing messages.

The default transmit data and channel settings are:

    Assignment              Ch# 
---------------------- ---
Live keyboard: 1 [If OFF, no data is transmitted]
Live arpeggio sequence: 2
Recorded keyboard: 3
Recorded arpeggio seq: 4

Master volume is local. Pressing the Master Volume buttons does not send volume change messages (neither channel volume or MIDI master volume).

Changing Phrase Volume, however, sends channel volume on channel 3 and 4. Legends above keys show setting-related function: what setting, increment and decrement. This is very handy and avoids manual diving. Phrase Volume is changed using the assigned function keys.

Pressing a front panel voice button sends messages on both channel 1 and 2:

    Bank MSB (CC#0) 
Bank LSB (CC#32)
Program Change (PC)
Channel Volume (CC#7)
Reverb Depth (CC#91)
Chorus Depth (CC#93)

Not all voices have chorus applied and Chorus Depth is not sent for voices without chorus.

The keyboard sends note ON and note OFF messages on channel 1. The mini-keyboard is touch sensitive. it’s difficult to send the full 1-127 velocity range with the default touch response level (level 2).

Pressing the Sustain button has the following behavior:

  • Sends new release time when sustain button is pressed.
  • Release time messages are sent on both channel 1 and channel 2.
  • Turning sustain off resets the release time.

Pressing Portamento (SHIFT+SUSTAIN), has the following behavior:

  • Sends portamento time and portamento ON/OFF when SHIFT+PORTAMENTO buttons are pressed.
  • Portamento time and ON/OFF are sent on both channel 1 and 2.
  • Turning portamento off, sends new portamento status on channels 1 and 2.

Pressing ARP ON doesn’t send MIDI messages! Pressing ARP OFF sends messages on channel 2:

    Bank MSB (CC#0) 
Bank LSB (CC#32)
Program Change (PC)
Portamento
Release Time (channel 1 and 2)

It’s like the A50 software assumes that the arp voice is set-up and ready to go when the arpeggiator is turned ON. Then, the software resets certain parameters when the arpeggiator is turned OFF. The arpeggiator sends note ON/OFF on channel 2 (as determined by the MIDI channel assignments).

Pressing PLAY sends the following messages on channel 1 and 2:

    Start (FA) 
All Sound OFF (CC#120)

Pressing STOP sends the following messages:

    Stop (FC) 
GM Reset (System exclusive)
Messages to reset voice settings for channel 3 and 4

You can expect to see the following System Exclusive messages after song playback:

   F0 7E 7F 09 01 F7           GM Reset 
F0 43 10 4C 08 02 0C 40 F7 MULTI-PART Velocity Sense Depth (channel 3)
F0 43 10 4C 08 02 0D 40 F7 MULTI-PART Velocity Sense Offset (channel 3)
F0 43 10 4C 08 03 0C 40 F7 MULTI-PART Velocity Sense Depth (channel 4)
F0 43 10 4C 08 03 0D 40 F7 MULTI-PART Velocity Sense Offset (channel 4)

I’ve seen these XG MULTI-PART messages on other entry-level arrangers supporting the XG Lite conventions.

For Motion Effect A01 Filter 1, Pressing the Motion Effect button sends
these messages on channel 1 and 2:

    Pitch Bend Sensitivity (RPN 0,0)
Harmonic Content (CC#71)
Pitch Bend
Expression (CC#11)
Modulation (CC#1)
Brightness (CC#74)

Harmonic Content (filter resonance is increased to 100). The Brightness (cutoff) messages sweept the filter. Brightness is slowly modulated, i.e., it repeatedly slowly decreases and then increases.

Releasing the Motion Effect button sends messages on channel 1 and 2:

    Pitch bend 
Harmonic Content (CC#71)
Brightness (CC#74)
Modulation (CC#1)
Expression (CC#11)
Pitch Bend Sensitivity (RPN 0,0)

These messages reset the respective parameters to a default value.

For Motion Effect B01 Pitch Whole-Note Up, pressing the Motion Effect button sends these messages on channel 1 and 2:

    Pitch Bend Sensitivity 
Pitch Bend (center)
Expression
Modulation
Pitch Bend (multiple messages)

The Pitch Bend messages sweept the pitch up then down. Releasing the button resets Modulation, etc. to default values.

Pitch bend sensitivity is sent as an RPN (Registered Parameter Number) message:

    RPN (CC 0x64, CC 0x65) 
0,0 Pitch Bend Sensitivity

The Motion Effect feature is similar to something I built into my two-button Arduino-based MIDI controller. It’s a way to add articulation to live playing. I always wanted a way to play perfect pitch bends. 🙂

I was able to save my recorded MIDI data to Sonar. The A50 insists on sending MIDI clock, START and STOP, so I configured Sonar to receive and respond to external clock. The recorded MIDI data is sent on channels 3 and 4. Thanks to Sonar’s channel selection feature (via event filtering), I could separate the channel 3 and 4 data into two tracks. Another possible solution is to write the data as a MIDI Type 0 SMF and then read the SMF into Sonar. Sonar should separate the channel data into different tracks.

Copyright © 2021 Paul J. Drongowski