Arpeggio to style conversion

Let’s get one out of the vault… 🙂

The Motif XS/XF (MOX/MOXF) and Montage (MODX) arpeggios and performances are a great source of inspiration. Unlike Yamaha’s arranger series, the built-in phrase library is rich in urban and chill patterns. For some odd reason, one of the classic XS/MOX performances — “Dresden At Night” — never made the leap to Motif XF. And, it’s missing from Montage/MODX, too.

A PSR Tutorial forum member sought help resurrecting Dresden At Night, albeit a recreation for the PSR-SX700 arranger. I thought I would help out since I wrote a series of articles about MOX performance to style conversion:

The end result of that work is a small collection of PSR (Tyros, Genos) styles based on MOX (Motif XS) performances.

If you would like to try Dresden At Night or experiment with a conversion of your own, download the free ZIP file.

MOX performances have four parts (voices). Each part has up to six musical phrases (arpeggios) associated with it. Six front-panel buttons select the currently playing set of arpeggios, i.e., button one selects the first arpeggio for each set and so forth. To get the basic MIDI data, I played each arpeggio (group) for four measures while recording in MOX performance quick record mode. I wrote out the MIDI data as a Standard MIDI File (SMF), transfered the SMF to PC, and imported the SMF into a DAW (Sonar).

Dresden At Night is a downtempo (91 BPM), urban-ish chill performance. It has four parts:

Part# Voice    Name              NoteLo NoteHi VelLo VelHi Level Pan
----- -------- ---------------- ------ ------ ----- ----- ----- ---
1 PRE8:070 8Z Heavy Hearts C-2 G8 1 127 81 C
2 PRE3:053 Dark Bass C-2 G8 1 127 51 C
3 PRE7:110 Ibiza Groove C-2 G8 1 127 127 C
4 PRE5:121 Smooth BPF Sweep C-2 G8 1 127 73 C

The first part is the rhythm voice and the second part is the bass voice. As we’ll see below, arpegiation is turned for these two parts. The third and fourth voices are a play-along pad layer and arpeggiation is disabled. Thus, the rhythm and bass parts provide a looped backing while the pad voices provide an atmospheric you-steer-it, right hand part.

Here are the arpeggio assignments:

Arp#1 Tempo:91              Arp#2 
----- -----
1 MA_8Z HeavyHrt1 1 MA_8Z HeavyHrt3 ON
2 MB_WestCoastPop _XS 2 MA_WestCoastPop _XS ON
3 MA_Space Arp 3 MA_Space Arp OFF
4 MA_Up Oct1 4 MA_Up Oct2 OFF
Arp#3 Arp#4
----- -----
1 MA_8Z HeavyHrt4 1 MA_8Z GatedBt3 ON
2 BA_Jazz Pop _XS 2 FB_WestCoastPop _XS ON
3 MA_Space Arp 3 MA_Space Arp OFF
4 MA_Up Oct4 4 MA_Down Oct1 OFF
Arp#5 Arp#6
----- -----
1 MA_8Z ChillBrk4 1 BA_Sp SFX ON
2 MB_WestCoastPop _XS 2 MA_WestCoastPop _XS ON
3 MA_Space Arp 3 Off OFF
4 MA_Down Oct2 4 Off OFF

The Arpeggiator is turned ON for Parts 1 and 2 only.

A big factor is the “8Z Heavy Hearts” drum kit. The “8Z” in its name means “eight zone”. Eight zone (8Z) voices are a Motif innovation beginning with the XS (MOX) family. If you would like more information, check out these earlier posts about eight zone voices:

8Z voices aren’t drum kits. They are implemented as synth voices and are just a clever way of using the eight elements which make up a voice. The eight zones (8Z) are divided across specific note ranges. 8Z Heavy Hearts assigns waveforms (zone sounds) in the following way:

Element#  Note Low  Note High  Waveform 
-------- -------- --------- --------------
1 C0 F#0 Bd T9-1
2 G0 C1 Bd Hard Long
3 C#1 D1 Sd Elec12
4 D#1 F1 Sd HipHop6
5 F#1 A1 HH Closed D&B
6 A#1 C2 HH Open T9
7 C#2 C4 Clap AnSm
8 C#4 C6 Shaker Hip2

Yamaha messes with each of the zones in crazy ways and ties keyboard notes to voice parameters (AKA “key follow”). For 8Z Heavy Hearts, the most notable effect is how the Clap AnSm pitch follows the keyboard.

Arrangers (even Genos!) don’t have 8Z voices. They have standard drum kits where each MIDI note is a separate drum instrument. In order to make a PSR style using a DAW, one must translate the 8Z MIDI notes to standard drum kit notes. You need to assign appropriate drum kits (e.g., DrumMachine, Analog T9, House, Break or HipHop) to style parts 9 and 10 (MIDI channels 9 and 10) and copy the Heavy Hearts MIDI data to both Parts. Then, delete the notes that aren’t needed in a style part, compress each zone into a single drum instrument, and map the resulting “compressed” notes to the appropriate drum instrument(s). So, for example, all of the notes in C0 to F#0 might be compressed into the Kick T9 1 instrument (B0) in the Analog T9 Kit, which is one of the target drum kits.

I found two PSR drum parts to be enough. However, styles are flexible and you could assign a third (fourth, …) drum kit to one of the other style parts. There’s nothing in Yamaha styles that prevents this. It’s just that parts 9 and 10 (MIDI channels 9 and 10) are conventionally assigned to drum parts in a style.

I went with two PSR drum kits: Analog T9 kit and Drum Machine kit. Here is one possible assignment:

Note Low Note High Waveform       Instrument        Note#   Kit 
-------- --------- ------------- ---------------- ------ -----------
C0 24 F#0 30 Bd T9-1 Kick T9 1 35 B0 AnalogT9Kit
G0 31 C1 36 Bd Hard Long BD Hard Long 24 C0 DrumMachine
C#1 37 D1 38 Sd Elec12 Snare Analog CR 63 D#3 DrumMachine
D#1 39 F1 41 Sd HipHop6 Snare Hip 1 86 F#3 DrumMachine
F#1 42 A1 45 HH Closed D&B Hi-Hat Closed Syn 91 A4 DrumMachine
A#1 46 C2 48 HH Open T9 Hi-Hat Open T9 46 A#1 AnalogT9Kit
C#2 49 C4 72 Clap AnSm Clap Analog Sm 27 D#0 AnalogT9Kit
C#4 73 C6 96 Shaker Hip2 Analog Shaker 57 A2 DrumMachine

A lot of detail, huh? Nobody said style conversion was easy. 🙂 In the end, I spread each zone across multiple drum instruments of the same type, i.e., assigning the Shaker Hip2 zone to a few different Analog Shaker sounds in the Drum Machine kit. Part of 8Z Heavy Hearts’ charm is the subtle sonic variation provided by each zone.

Trying to keep this all straight in the DAW piano roll is cognitively challenging. Did I say, style conversion isn’t easy? 🙂

Fortunately, one can loop four bar sections and play the MIDI through the arranger (Genos, in this case) just like a MIDI song. Then, it’s the usual tweak, listen, rinse, repeat edit process. When the MIDI is tweezed to your liking, you need to add MIDI markers to delimit the style sections. (BTW, leave a one bar MIDI set-up measure at the beginning.) Style section markers are:

    Set-up measure 1: SFF1 
Set-up measure 1: SInt
Main sections: Main A, ...
Fill sections: Fill In AA, ...
Break section: Fill In BA, ...
Introduction: Intro A, ...
Ending: Ending A, ...

At a minimum, you need a few MIDI set-up System Exclusive (SysEx) messages at the beginning of the SMF (measure 1, beat 1):

    F0 7E 7F 09 01 F7                 GM Reset 
F0 43 10 4C 00 00 7E 00 F7 XG System ON
F0 43 10 4C 02 01 00 01 16 F7 Reverb type
F0 43 10 4C 02 01 20 16 00 F7 Chorus type

Reverb is the “Light Hall” preset and chorus is the “Tempo Cross 1” preset. The tempo cross delay is an 8-beat echo.

Which brings me to a necessary ingredient: crunch. 8Z Heavy Hearts gets a lot of its appeal from the Lo-Fi effect:

#  Parameter                   Val  Hex   Meaning 
-- -------------------------- --- ---- --------
1 Sampling Frequency Control 4 0x04 8.82kHz
2 Word Length 98 0x62
3 Output Gain 7 0x07 0dB
4 LPF Cutoff Frequency 56 0x38 12kHz
5 Filter Type 1 0x01 PowerBass
6 LPF Resonance 63 0x3F 6.3
7 Bit Assign 4 0x04
8 Emphasis 1 0x01 On
10 Dry/Wet 88 0x58 D<W24
15 Input Mode 1 0x01 Stereo

Since we need Lo-Fi on both style parts 9 and 10, I configured the variation effect as an XG SYSTEM effect. Parts 9 and 10 also require variation send (MIDI CC#94) set to 127. Add a CC#94 message to parts 9 and 10 in the set-up measure. Here are the MIDI System Exclusive messages to add to the set-up measure:

F0 43 10 4C 02 01 40 5E 13 F7       Variation type 
F0 43 10 4C 02 01 5A 01 F7 Variation SYSTEM
F0 43 10 4C 02 01 56 40 F7 Variation return
F0 43 10 4C 02 01 58 10 F7 Variation send to reverb
F0 43 10 4C 02 01 59 10 F7 Variation send to chorus
F0 43 10 4C 02 01 42 00 04 F7 Variation parameter 1
F0 43 10 4C 02 01 44 00 62 F7 Variation parameter 2
F0 43 10 4C 02 01 46 00 07 F7 Variation parameter 3
F0 43 10 4C 02 01 48 00 38 F7 Variation parameter 4
F0 43 10 4C 02 01 4A 00 01 F7 Variation parameter 5
F0 43 10 4C 02 01 4C 00 3F F7 Variation parameter 6
F0 43 10 4C 02 01 4E 00 04 F7 Variation parameter 7
F0 43 10 4C 02 01 50 00 01 F7 Variation parameter 8
F0 43 10 4C 02 01 54 00 58 F7 Variation parameter 10
F0 43 10 4C 02 01 75 01 F7 Variation parameter 15

At this point, you could save the MIDI to “DresdenAtNight.sty” and load it into your arranger as an SFF1 format style. The arranger should create the style CASM segment. As an alternative, you can add a CASM segment to the SMF with Jørgen Sørensen’s CASM editor. You might as well download his OTS editor, too, and use it to add OTS voice settings to the new style as well. Or, you can do this sort of work on your arranger itself. Mid- and high-end Yamaha arrangers save styles as SFF2 format, which is one way to convert from SFF1 to SFF2. I highly recommend Jørgen’s site, tools and style creation tutorial.

BTW, you can recreate Dresden At Night on MODX (Montage). Create a new MODX performance with 8Z Heavy Hearts and Dark Bass. 8Z Heavy Hearts has the appropriate arpeggios by default. You’ll need to assign different arpeggios to the Dark Bass part. Modify effects as needed. Choose and add pad or lead voices to give your right hand something to do. Done! Use the Scene buttons to switch arpeggio groups.

Copyright © 2021 Paul J. Drongowski


MOX performance to PSR style (part 2)

In part one, I described how to capture Yamaha MOX arpeggios (musical phrases) in a standard MIDI file (SMF). In this part, I discuss the translation of the SMF to a Yamaha PSR/Tyros style file. This process should work for any SMF, not just an SMF from the MOX workstation.

The SMF produced by the MOX contains the notes for one or more instrument channels where each channel corresponds to a MOX performance part. If you followed the directions in part one, the phrases are arranged in an order starting with the main sections, followed by the fill sections, and finally, the break section. The SMF is raw (“stripped”) and does not contain bank select, program change, volume or pan messages. This is to our advantage since we are free to assign PSR/Tyros voices and tweak the overall mix. If you apply this process to an arbitrary SMF such as a file from the Internet, you will need to change or remove voice assignments, levels, etc. to make the MIDI data compatible with the PSR/Tyros.

The translation procedure needs four tools:

  1. A software DAW or sequencing program to massage the MIDI data.
  2. Style Fixer to insert an initial CASM section into the style.
  3. OTS Editor to add One Touch Settings to the style.
  4. CASM Editor to modify note transposition information.

Style Fixer, OTS Editor and CASM Editor are part of the excellent suite of tools written and maintained by Jørgen Sørensen. I also recommend Michael Bedesem’s MixMaster program which supports a very wide range of tweaks and tweezes. Right now, my DAW is Cakewalk SONAR LE — a little bit out of date, but it does the job. The directions below refer to SONAR although any well-featured DAW should do such as Cubase AI. You may also edit the style on the PSR/Tyros keyboard itself using its Style Creator. This is good in the latter stages of development when you need to make one or two final tweaks.

You can find links to these and other PSR/Tyros tools through the PSR Tutorial utilities page.

One major warning: A style file contains MIDI data and much more. A DAW removes the extra data (e.g., CASM and OTS) from a style file. Thus, a DAW is best during the early stages of style development. Michael’s program and Jørgen’s tools preserve the extra stuff.

Without further ado, here is the basic procedure for conversion. Be sure to save your work as you go along. Summer’s here and the time is right for brown outs.

  1. Copy the SMF from the USB jump drive to a working directory. Make a back-up just in case.
  2. Read the SMF into SONAR (or your pefered DAW). Save the work in progress as a normal SONAR project.
  3. If the MOX generated a separate track for the CMaj7 chord, delete the track. You don’t need it.
  4. Create an empty measure at the beginning of the time line. In SONAR, you accomplish this by sliding the clips back one measure in the arrangement window.
  5. Assign each track to a MIDI channel according to the Yamaha style conventions. (See table below.)
  6. Assign a PSR/Tyros voice to each track.
  7. Set the volume, pan, chorus and reverb levels for each track.
  8. Put the MIDI text marker “SFF1” at the beginning of measure one. The text for this and all MIDI text markers is case sensitive and must be spelled corrected.
  9. Put a second MIDI text marker “SInt” at the beginning of measure one.
  10. Put a MIDI text marker at the beginning of each style section. You must use names according to the Yamaha convention. You are allowed up to four main sections, up to four fill sections, and one break section.
    • Put a marker such as “Main AA” at the beginning of each main section.
    • Put a marker like “Fill In AA” at the beginning of each fill section.
    • Put the marker “Fill In BA” at the beginning of the break section.
  11. Trim and discard any extra notes at the end. You probably didn’t hit STOP fast enough when recording.
  12. Save your project for goodness sake!
  13. Write a new SMF. It must be MIDI SMF Type 0.
  14. Rename the new SMF and give it the “.STY” extension instead of “.MID”.
  15. Launch Style Fixer. Open the new file with the “.STY” extension.
  16. Click the GO button. Style Fixer rewrites the style file and inserts a default CASM section into the file.

Congratulations! At this point, you have a minimal style file. Copy this file to the USB jump drive. The PSR/Tyros should load this style file without complaint. You can read this style file into the OTS editor, the CASM editor or Mix Master, too.

Part MIDI channel
Rhythm 1 9
Rhythm 2 10
Bass 11
Chord 1 12
Chord 2 13
Pad 14
Phrase 1 15
Phrase 2 16
Table: MIDI channel layout for a style
Text marker Meaning
SFF1 Style format 1
SInt Start initialization measure
Main A, Main B, … Start MAIN style section
Fill In AA, Fill In BB, … Start FILL IN style section
Fill In BA Start BREAK style section
Intro A, Intro B, … Start INTRO style section
Ending A, Ending B, … Start ENDING style section
Table: MIDI text markers for style sections

Once you have a minimal style file, I strongly suggest a quick test on the PSR/Tyros. At this stage of development, you can easily make changes to the SONAR project and regenerate a new minimal style without losing much time or work. I try to get a good mix on the keyboard and then adjust the mix parameters (i.e., levels, pan, etc.) in the SONAR project to match. The MOX produces at most four tracks and “back porting”
the mix into the SONAR project is not much of a burden.

When the mix is satisfactory, launch OTS Editor and open the new style file. Here you can import existing OTS configurations into the new style file or add a new OTS configuration from scratch.

The so-called “CASM” section of a style file specifies how MIDI notes are transposed. Recall that we played a CMaj7 chord on the MOX and that the arpeggiator generated notes using CMaj7 as the root chord. The CASM section tells the PSR/Tyros how to change those notes in response to chords played in the left hand part of the keyboard. The default CASM inserted by Style Fixer is usually good enough; the bass channel uses the bass rules, the drum channels bypass transposition, and so forth. Mega Voices or MOX voices that are similar to Mega Voices, however, cause additional complications. A Mega Voice track consists of regular notes and special effect notes. The regular notes should be transposed and the special effect notes should bypass transposition. Yikes! I will discuss Mega Voice handling in part three. In the meantime, you may hear some odd plucks and wheezes when you play back a minimal style with Mega Voice data.

Here’s a little bit of background information to help you understand some of the steps in the conversion procedure.

A style file begins with an initialization measure. The “SInt” marker indicates the start of the initialization measure. You may put any MIDI initialization messages into this measure, usually at beat one. You should not put any notes in the initialization measure. Controller messages and SysEx messages are OK.

The MIDI text markers indicate the start of the style sections. Be sure to spell the markers correctly. The keyboard automatically determines the section length. If a section appears to be missing or is too long when the style is loaded into the keyboard, then you might have misspelled a section name. Remember, the text markers are case sensitive.

The PSR/Tyros only recognizes up to four main sections, four fill sections, one break section, four introductions and four endings. If a section type is not present in the style file, the keyboard doesn’t turn on the LED in the button corresponding to the missing section. Given that a MOX performance may not have four main sections, for example, the PSR/Tyros style may not have four main sections and some of the LEDs will not be lit when the style is loaded. You can always create new sections if you wish. MOX performances do not have introductions and endings, so you may want to add a simple count-in introduction or tag ending. I have a style file with simple introductions and endings. I use copy and paste to insert them into a new style file.

Main, introduction and ending sections may be 1 to 255 measures in length. Fill and break sections are always one measure long.

Jørgen’s website has a wealth of information about styles including a PDF on style writing. Yamaha styles can be quite complicated. Don’t get discouraged and keep plugging away!

Check out part three of this series.

MOX performance to PSR style (part 1)

After my initial success with the SmoothItOver style, I decided to convert several more Yamaha MOX workstation performances to PSR-S950 styles. I will post the new styles real soon now.

I changed tactics. Some of the Yamaha MOX performances are based on phrases from older model, non-arranger keyboards. For example, I suspect that the “Club Jazz” phrases are taken from the Yamaha S-80 synthesizer. Yamaha is good at mining old keyboards for MIDI phrase data; Roland and Korg do the same. As far as I can tell, Yamaha “Club Jazz” has not ever been an arranger style and it surely is not implemented on the PSR-S950 or current Tyros models. Several of the funkier performances that I wanted to port use “Club Jazz” phrases. Thus, I needed to develop a method of my own to mine MOX performances directly from the MOX.

In order to make a PSR/Tyros style, we first need to get the MIDI phrase data for a performance into a standard MIDI format (SMF) file. That is the subject of this post (part one). Then, we need to translate the SMF file into a style. That will be the subject of part two — a future post.

A MOX performance consists of one to four parts where each part has its own distinct voice and set of arpeggios (phrases). When you jam with a performance, you trigger the arpeggios using the left part of the MOX keyboard by playing a note or a chord. The arpeggiator follows the root note or chord that you play and modifies the phrase data (e.g., transposes it) on the fly. The modified MIDI phrase data is sent to the appropriate tone generator. (This is the typical use case. The internal engine is far more flexible than this scenario!) You change arpeggios by pressing one of the special function buttons (SF1-SF6). Each of the four parts goes to the corresponding arpeggio, that is, pressing SF3 for ARP3 changes each part to its own ARP3. Thus, each performance part plays its own pre-programmed phrase.

We are going to capture the arpeggio MIDI data using performance record mode. Performance record mode is your friend! (Please see my page on getting started with the MOX.) This mode records MIDI data as you play chords and switch through arpeggios. We are going to play a special kind of song that captures the MIDI data for all of the arpeggios.

First, we need to determine the song structure. Some of the arpeggios play MAIN sections, some play FILL sections and some play BREAK sections. MAIN sections are usually four bars long and FILL/BREAK sections are one bar long. Select ARP1 and play a CMaj7 chord. Listen to ARP1. Is it a MAIN section (four bars long)? Is it a FILL/BREAK section (one bar long)? Do this listening exercise for each ARP. Then jot down a song structure such as:

    ARP#     Section    Starting measure
    ----     -------    ----------------
    ARP1     MAIN A     1
    ARP2     MAIN B     5
    ARP3     MAIN C     9
    ARP4     FILL A     13
    ARP5     FILL B     15
    ARP6     BREAK      17

The starting measure is when the section should start in the song. It tells us when to switch to the next arpeggio when we play the song in performance record mode. Please note that we intend to play each of the fills twice in order to capture enough data for four fills in the final PSR/Tyros style. Yamaha’s performance sometimes have more mains or fills, so you need to be flexible and ready for anything downstream in part two.

Hit the record button to go into performance record mode. Choose “SONG” and the song number. The MIDI data will be written into this song. Set KeyOnStart to ON. This arms the left side of the keyboard. Turn off the metronome click; you won’t really need it. (Page 34 of the MOX Owner’s Manual describes performance record mode in case you are confused at this point.) You’re now ready to play the special song.

Select ARP1 by pressing SF1. Hit a CMaj7 chord on the lower end of the keyboard to start playing (and recording) the song. During measure 4, hit SF2 to queue up ARP2. ARP2 begins to play in measure 5. Hit SF3 during measure 8 to queue up ARP3. ARP3 begins to play in measure 9. And so forth. Hit STOP after measure 17 to stop recording. The MOX then finishes recording and switches to SONG mode. At this point, you can save the MIDI data in the SONG by hitting STORE or you can go back to performance mode and try again. Since the song is short, it isn’t a big deal to play it again if you make a mistake.

When you have the song, the final step is to write the song as an SMF file on a USB drive. Hit the FILE button and follow the procedure for saving a song as an SMF file. (Hit SAVE, set the name, set the save type to SMF, etc.) In part two, we will translate the SMF to a PSR/Tyros style using PC-based software tools.

Why play a CMaj7 chord? The phrases in a PSR/Tyros style must have a known chord root and chord type. CMaj7 is the conventional chord root and type for styles. The CMaj7 chord forces the arpeggiator to voice phrases for a CMaj7 chord thereby making the final MIDI data style-ready.

Before leaving the MOX behind, you should jot down a few performance notes that will help during the latter stages of the porting process. Jot down the MOX voice for each part. This will help you to select style voices for the PSR/Tyros. Pay careful attention to the guitar and bass voices. Are they Mega Voice voices? Do the voices incorporate FX like slides, scrapes, etc.? You may need to dig into the voice programming to find out if a bass voice uses bass FX. Guitar and bass effect notes are usually mapped to C6 or higher. You will need to give FX notes special treatment during part two.

One or more performance parts may be designated for live soloing or comping. The arpeggios for such parts are turned OFF. Usually, Yamaha provides a right hand part for soloing. They may also provide a pad in the left hand, that is, a pad plays if the left hand chord is held. In rare cases, the right hand may even trigger its own arpeggio! Make note of any special performance behavior that you want to emulate on the PSR/Tyros.

That’s it! At this point, you have an SMF file to be translated to a style. Check out part two and part three of this series.