Ancient weapons and tools

Back in the mid- to late-1990s, Yamaha developed and manufactured a wide range of plug-in cards and modules. In many cases, the technology is unique and is still useful today. I have two old Yamaha modules:

  • The VL70m analog modeling synthesizer module and
  • The AN200 desktop beatbox and analog modeling synthesizer.

Both are based on Yamaha’s analog/physical modeling techniques. The VL70m, which has a native WX11 breath controller interface, models string- and pipe-based instruments both acoustic and “virtual.” The AN200 models a 5 voice Sequential Circuits Prophet 5 analog synthesizer. The AN200 also has patterns, a sequencer and a three channel AWM (sample-based) rhythm section.

Although you can program either one of these boxes through the front panel, you really need software tools for deep editing. Yamaha provided editors for both the AN200 and the VL70m. There are also editors for the PLG100 and PLG150 line of hardware plug-in boards that are the module’s cousins. The PLG series use the same analog modeling, FM, AWM, and XG technology as Yamaha modules and synthesizers of that era. The PLG boards can be plugged into a PLG-compatible synthesizer thereby expanding the synth’s sonic capability. The first models in the Motif product family, for example, accepted PLG boards. Unfortunately, the PLG boards and the analog modeling technology was phased out in the early 2000s.

The software tools of that era never advanced beyond Windows 2000 or Windows XP. So, if a guy or gal wants to use these tools today on Windows 7, they better strap in.

Yamaha provided three kinds of tools and plug-ins over the years:

  • Plug-ins hosted by XGWorks or XGWorks Lite (up to version 3.x).
  • OPT tool plug-ins hosted by SQ01, Studio Manager or XGWorks version 4 and later.
  • Standalone tools.

A few of these tool names may not be familiar to you. XGWorks (version 3.x and earlier) is a standalone sequencer that initially ran on Windows 95/98. A patch makes XGWorks (version 3.0.7) run under Windows XP. XGWorks was replaced by Yamaha’s Open Plug-in Technology or “OPT.” OPT is a Microsoft OLE-based standard for plug-in tools. Yamaha dropped the early version of XGWorks and substituted the OPT-compatible SQ01 sequencer in its place. Yamaha also released XGWorks 4 and XGWorks ST in Japan; both are OPT-based. SQ01 and XGWorks 4/ST are OPT plug-in hosts. Old-time users today lament these changes because SQ01 and XGWorks 4/ST do not have some of the features of the early XGWorks. The arranger-like style features, for example, were lost.

It’s worth noting that a few other manufacturers adopted the OPT standard. Cakewalk SONAR can host OPT-based plug-ins. So, if you have a VL or AN editor in OPT plug-in form, then SONAR can find and launch the plug-in editor! Functionality may be limited depending upon the OPT level supported by the host and plug-in.

Well, as if that history isn’t complicated enough, Yamaha eventually bought Steinberg and its Cubase DAW. Support for SQ01 and XGWorks 4/ST was dropped. Studio management is handled by the Yamaha Studio Manager which can host OPT plug-ins among other things. Studio Manager v2.3.1 runs on Windows 7 and Windows 8 (with a minor caveat). This is a modern era host!

Unfortunately, OPT-based plug-ins for the VL70m and AN200 are not readily available for download. The Yamaha web site only has standalone editors or editors which work with the very old XGWorks 3.x. It is possible to get XGworks 3.0.7 running on 32- and 64-bit Windows 7 with persistence and patience. The following produced worked on 64-bit Win 7:

  • Install XGWorks or XGWorks Lite v3.0. You must run the installer in Windows XP compatibility mode.
  • Immediately install the v3.0.7 update also known as the “XP patch.” Again, run the installer in Windows XP compatibility mode.
  • Immediately, restart your machine.

With any luck, XGWorks will now run on Win 7. Of course, this assumes that you even found a copy of the original XGWorks installer or the update! I suggest looking on a Yamaha tools CD-ROM from the late 1990s such as the AN200 tools disk where I found my copy. Then download the appropriate AN or VL editor for XGWorks and install them into the XGWorks directory. Again, you should run these installers in XP compatibility mode.

After a lot of searching and browsing, I did manage to locate the latest version (v1.2.2 released in 2003) of the AN Expert Editor for the PLG-150AN board. This version is OPT-compatible. OPT plug-ins, by the way, are stored in “C:\Program Files (x86)\YAMAHA\OPT Tools” just in case you want to double check the installation. I installed the AN Expert Editor and thought I was home free. Indeed, you can launch the editor via Studio Manager and tweak voices. The editor in standalone mode does not detect the MIDI interface and does not communicate with the AN200. Thank you, Studio Manager.

Version 1.2.2 of the AN Expert Editor, however, really wants to communicate with an AN1x synthesizer and does not handle MIDI bulk dumps from the AN200! The editor refers specifically to “AN1x” bulk dump, not “AN200” like the earlier XGWorks AN200 plug-in. One can still perform a bulk dump/receive through the AN200 front panel and the MIDI-OX utility. Although this is an adequate work around for back-ups, lack of AN200 bulk support may hinder voice management through the editor.

I still need to experiment with the VL editors. At least I have backed up the AN200 voices that I created years ago.

So, there you have it. Some successes, some failures. The old tech is great as long as you don’t let expectations about software support get too high. A deep breath or two along the way definitely helps!

MOX performance to PSR style (part 3)

In parts one and two, I described a way to capture Yamaha MOX performances into a Standard MIDI File (SMF) and how to translate the SMF to a PSR/Tyros style. Part three discusses Mega Voices and how to program MIDI data for a Mega Voice part such that the special articulations and effects (FX) play back correctly.

A Yamaha Mega Voice is a synthesizer or arranger workstation voice that has several sonic components. Take the MOX “Mega Finger+Slap” voice as an example. It has five components; each component is assigned to a MOX tone generator element:

Element Waveform Lower Upper Velocity
1 Finger Med C-2 B5 1-60
2 Finger Hard C-2 B5 61-80
3 Finger Dead C-2 B5 81-120
4 Thumb/Pull Hard C-2 B5 121-127
5 Electric Bass FX C6 G8 1-127
Table: Mega Finger+Slap voice elements

These components do not sound all at once! The MIDI note number and velocity trigger just one of the elements. (In this case, all components/conditions are exclusive.) One the first four elements sound when the MIDI note is between C-2 (MIDI note number 0) and B5 (MIDI note number 95). The MIDI note velocity further determines which of those four elements is triggered. The fifth element sounds when the MIDI note number is between C6 (note number 96, inclusive) and G8 with any non-zero velocity.

As Phil Clendeninn (Yamaha) points out, Mega Voices are intended to sweeten pre-programmed patterns and styles and are not intended for live keyboard playing. Human beings just cannot play notes with enough precision to reliably and accurately hit the velocity ranges. The bass voice is relatively simple; A Mega Voice guitar has as many as eight velocity zones!

The MOX also has “regular” voices that are similar to Mega Voice. The “Finger PBs AF1” voice is one example. This voice has four components:

Element Waveform Lower Upper Velocity
1 P-Bass Rndwound Med C-2 B4 1-90
2 P-Bass Rndwound Hard C-2 B4 91-127
3 Electric Bass FX C5 G8 1-127
4 Finger Harmonics C-2 B4 1-127
Table: Finger PBs AF1 voice elements

Notice that element 4 overlaps with elements 1 and 2. Element 4 sounds when the assignable function 1 (AF1) button is held. On the MOX, you can deep dive voices through the front panel and find out what makes them tick (or tock). This level of voice programming is hidden on PSR/Tyros arranger workstations. Fortunately, Yamaha have published the note and velocity ranges for workstation Mega Voices. (See the data list PDF.)

MOX and arranger workstation Mega Voices are mostly compatible. However, Yamaha do not advertise or guarantee compatibility. The MOX Electric Bass FX wave contains many more effects than a typical single arranger Mega Voice for example. You’ll need to use your ears to make sure that MIDI data for a MOX Mega Voice sound correctly with an arranger Mega Voice.

Voices such as Finger PBs AF1 resemble and behave like a Mega Voice, but do not follow typical Mega Voice conventions, such as reserving notes above C6 for FX like slides, scrapes, fret noises, etc. Regular notes with this patch sound one octave lower than a Mega Voice bass. You’ll need to transpose the incoming notes depending upon the target arranger voice. Also, if you use an arranger Mega Voice as the target, you must scale numerically the note velocities to match the Mega Voice programming. This translation requires attention to detail and a good ear!

Here’s another crazy problem although it is not Mega Voice related. In two cases, all of the notes in the MOX bass track had velocity equal to one! Coincidentally, a MOX synth bass voice was involved in both cases. I changed the note velocities to something more reasonable (and randomized) using SONAR.

As if all of this is not enough complexity, there is one further wrinkle — note transposition. The arranger transposes the MIDI notes for a part according to the transposition rule and table for the style part (and section). Mega Voice tracks, however, contain both regular notes (below C6) and FX notes (C6 and above). If the transposition rule and table transpose the regular notes, the FX notes get transposed, too, when both kinds of notes are in the same track. When the transposed notes are played back, the FX notes may get mapped to the wrong effect or to high pitched regular notes that sound totally out of place (i.e., sonic clams).

There are three solutions to this problem:

  1. Delete the FX notes from the MIDI data for the part.
  2. Split the MIDI data into two parts: regular notes and FX notes.
  3. Do what Yamaha does.

We’ll take a look at solutions 1 and 2 in a moment. Normal notes and FX notes appear together in the same Mega Voice track in a Yamaha factory style. (Crack one open with a DAW!) So, Yamaha must have an internal way to treat normal notes and effect notes differently. There is some evidence that the note transposition rules and tables can handle Mega Voice. However, this approach is not documented and it is not exposed through the keyboard (i.e., the PARAMETER tab in Style Creator) or a Yamaha-endorsed software tool. Thus, solution number 3 is not feasible for us.

Solution number 1 — delete the FX notes — is straightforward. The downside is that you lose the nuances that make a part exciting. Let’s face it, bass slides are cool and kick up the energy. If you don’t have the time, energy, knowledge or inclination, this is the way to go. Further, you may not have an unused style part available to split off the FX notes into a separate track. (The spirit is willing, but the flesh is weak.) In the case of MOX pseudo-Mega voices, you may still need to scale note velocities or transpose the incoming notes up (or down) one octave to match the target voice. That’s enough hassle for some folks.

Solution number 2 splits the MIDI data into two separate style parts (tracks). One of these tracks holds the regular notes and the other track holds the FX notes. SONAR has a track clone operation which makes separation a breeze. After cloning, both tracks have the same MIDI data and the same Mega Voice patch. You do need to change the MIDI channel number of the clone to the channel of an unused style part. Delete the FX notes (C6 and above) from the BASS part (channel 11). Delete the regular notes (below C6) from the clone. Style Fixer generates the correct transposition rule and table for the BASS part. You must change the transposition rule and table for the cloned part using CASM Editor. Set the rule and table of the clone to “FIXED” and “BYPASS”, respectively. Remember that the rule/table needs to be set for all sections.

Why “FIXED” and “BYPASS”? These are the settings that you would use with a drum track. Effectively, the guitar/bass effects are a kind of percussion instrument that have their own rhythm. Therefore, you want to use the note numbers as they are (FIXED) and you want to inhibit (BYPASS) note transposition.

I recommend making the split early in the style development process because you will need to make this split with a DAW. Once you’ve made the split, I strongly suggest trying the style on the PSR/Tyros right away. Take note of the sections that use FX notes. Listen carefully. Play CMaj7 which does not require transposition (assuming that the transposition root/chord is CMaj7). Can you hear the right effects in the right places? Now play a G7 chord. Do you still hear the correct effects in the right places? If the effects disappear, then you need to check the FX notes and the CASM transposition rule/table information. You can tweak the rule/table for each section on the PARAMETER tab in Style Creator when a fast repair is needed.

If you do change a style on the keyboard, remember to save the style. The keyboard may change the style format to “SFF GE” (also known as “SFF2”). CASM Editor does not currently handle SFF2. This limitation can cramp your working style [pun intended] since a style edited on the keyboard cannot be opened by CASM Editor.

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.

Smooth It Over

Here’s a Yamaha PSR-S950 style for funky jazzers — SmoothItOver.

As some of you know, many of the Motif/MOX arpeggios are based on what once were PSR/Tyros arranger keyboard styles. SmoothItOver is a little payback going the other way.

The MOX has about a dozen or so jazzy/funky Performances that are fun to jam to. One of my favorites is called “Smooth It Over.” A MOX/Motif Performance is a four instrument mini-mix where each instrument can be driven by a different arpeggio (musical phrase). Arpeggios are triggered by hitting one or more notes on the keyboard. Many of the arpeggios respond to and follow chords. A musician can lay down a song or groove by switching through groups of arpeggios and playing along.

The SmoothItOver performance on the MOX splits the keyboard into a lower and an upper part. (Sound familiar?) The lower part of the keyboard triggers drum and bass arpeggios as well as directly sounding the notes played, using a mellow electric piano voice. The upper part of the keyboard is for melody and is configured with a growl tenor sax. The drum and bass arpeggios are taken from the 70sDiscoFunk and GospelFunk styles.

The PSR/Tyros SmoothItOver style rips off, errr, builds on the equivalent sections from the 70sDiscoFunk and GospelFunk styles. I added OTS buttons with the FunkGtr 16Bt3 Multi Pad bank. Be sure to throw in the Multi Pad guitars when playing. (These Multi Pads follow the left hand chords.) It really kicks the PSR/Tyros style up a notch over the MOX version. The ability to switch melody voices on-the-fly through OTS is another advantage over the MOX.

The INTROs and ENDINGs are little lame since this style is built for jamming and practice, not covers. Try it with a minor blues (e.g., Dm7, Gm7, Am7) and switch between sections frequently to vary the groove. Drop a little guitar via the Multi Pad buttons. Have fun!

Don’t let anyone kick sand in your face at the beach just because you play “an arranger.”

BTW, I know someone will ask, “Why not transfer phrase data, etc. from the MOX to the PSR?” Two good reasons:

  • The MOX/Motif instruments are programmed much differently than similar PSR/Tyros instruments. The bass in Smooth It Over, for example, lays out the sound elements in different MIDI velocity and note ranges.
  • The note transposition rules and tables are hidden on the MOX.

It’s much easier to start out with the native style data on the PSR than to re-map the MOX phrase data to PSR instruments and recreate all of the note transposition programming.

Here’s an arpeggio-to-style section correspondence table:

    Type  ARP#  Style section
    ----  ----  ---------------------
    Drum  ARP1  MB_Gospel Funk
    Drum  ARP2  MA_Gospel Funk
    Drum  ARP3  MB_Gospel Funk
    Drum  ARP4  FA_Gospel Funk
    Drum  ARP5  FB_Gospel Funk
    Drum  ARP6  BA_Gospel Funk

    Bass  ARP1  FA_70sDiscoFunk _XS
    Bass  ARP2  FB_70sDiscoFunk _XS
    Bass  ARP3  MB_Gospel Funk _XS
    Bass  ARP4  MB_Gospel Funk _XS
    Bass  ARP5  FA_70sDiscoFunk _XS
    Bass  ARP6  BA_Gospel Funk

Transferring QY70 style to PSR

Some of us are trying to mine our old beat boxes (like the Yamaha QY70) for styles and phrases. I tried transferring a QY70 “style” to an S950.

“8Detroit” is an 8-beat QY70 style. A QY70 style has only six sections: Main A, Main B, Fill In AB, Fill In BA, Intro, Ending. There is no break section. The fill-ins are called “AB” and “BA” because they are intended to be transitions from Main A to Main B and from Main B to Main A.

I determined the section lengths through the QY70 phrase editor. Here are the QY70 section lengths:

     Section     Length
     ----------  ------
     Main A      2 bars
     Main B      4 bars
     Intro       2 bars
     Fill In AB  1 bar
     Fill In BA  1 bar
     Ending      6 bars

Here is the process that I used to create a PSR compatible style called “8DetroitStyle.sty”.

1. Create a QY70 song in the QY pattern track. Use Cmaj7 throughout. The song has the following structure/sections:

     Measure   SMF   Section     MIDI Marker
     -------  -----  -------     -----------
       1:2     2:3   Main A      Main A
       3:6     4:7   Main B      Main B
       7:8     8:9   Intro       Intro A
        9      10    Fill In AB  Fill In AA
       10      11    Fill In BA  Fill In BB
      11:16   12:17  Ending      Ending A

The first column is the section location in the pattern track. The second column is the section location in the generated SMF file.

2. Copy the QY70 song to an empty song. Use the QY70 “Expand Backing” job to expand the pattern track to MIDI events in tracks 9-16.

3. Use the QY70 Data Filer program to transfer and translate the QY70 song to an SMF file on a PC. Enable the option to insert XG initialization data at the beginning of the SMF file.

4. Open the SMF file in Sonar. Insert MIDI markers at the locations specified above. Save the SMF file as MIDI type 0.

5. Rename the MIDI file with the “.STY” extension.

6. Use Jorgen Sorensen’s Style Fixer program to check the file and to insert a default CASM into the MIDI file.

7. Transfer the style file to a USB drive and test the file on the PSR.

60sSuperGroup mash-up

In my last post, I started the process of converting the PSR-S950 audio style “60sSuperGroup” to all MIDI. I like the 60sSuperGroup audio style, but the really strong back-beat in MAIN A makes it hard to use that section on anything other than the Beatles song “Ticket To Ride.” In order to make this style more generally useful, I’m replacing the audio rhythm tracks with appropriate MIDI tracks. Last time, I had worked on the MAIN and FILL IN sections and now it’s time to attack the INTROs and ENDINGs.

Here’s my process.

  • Find a style which is similar to 60sSuperGroup. 60sVintageRock is a good alternative because it is your basic Mark II rock and roll.
  • Load 60sVintageRock into Style Creator.
  • For each section, copy the non-rhythm parts from 60sSuperGroup into the new style.
  • Change the section lengths to match the source style 60sSuperGroup.
  • Save the new style as 60sFabFour.
  • Listen to each new section critically.
  • If a section doesn’t work musically, copy a section from a different candidate style.
  • Edit DSP effects to match 60sSuperGroup.
  • Save a bunch of intermediate copies along the way in case you need to back up to an earlier version.

Overall, the MAIN and FILL IN sections from 60sVintageRock were a good match and sounded pretty good. The one measure INTROs were OK, too. The longer INTROs and ENDINGs were more of a problem. So, I identified a few alternative candidate styles and built a table of INTRO/ENDING section lengths to find and try alternatives. Here’s the table:

           Target:
         60sFabFour  60sVintageRock  60sPopRock  VintageGtrPop
         ----------  --------------  ----------  -------------
INTRO 1      1             1              1            2
INTRO 2      2             4              5            4
INTRO 3      5             9              4            9
INTRO 4      1             1              1            1
ENDING 1     3             3              3            2
ENDING 2     4             4              3            3
ENDING 3     5             6              7            5
ENDING 4     1             1              1            1

I tried to use alternatives that were the same section lengths as 60sSuperGroup and the new style 60sFabFour.

ENDING 2 was the most difficult to nail. I tried different alternatives and then needed to shorten the section length to get rid of some beats that ran on — kind of like Ringo didn’t know when to stop. Here are the final source styles for the INTROs and ENDINGs:

           Target:
         60sFabFour  Source style
         ----------  --------------
INTRO 1      1       60sVintageRock
INTRO 2      2       VintageGtrPop
INTRO 3      5       60sPopRock
INTRO 4      1       60sVintageRock
ENDING 1     3       60sVintageRock
ENDING 2     4       60sPopRock
ENDING 3     5       VintageGtrPop
ENDING 4     1       60sVintageRock

A lot of luck and trial and error is involved here. Luckily, the alternatives fit pretty well.

DSP1 is configured as a SYSTEM variation effect for both 60sSuperGroup and 60sVintageRock. However, the parameters are different. The guitars are sent to the SYSTEM effect in order to get a VOX AC30 amp “chime”. The final effect parameters are taken from 60sSuperGroup:

Category: REAL DIST
Effect: ST AMP VT

COMP SW          ON
COMP SUSTAIN     0.4
COMP LEVEL       6.0
DIST TYPE        Crunch
DIST DRIVE       7.8
DIST EQ          Mid Boost
DIST TONE        7.0 
DIST PRESENCE    6.0
DIST OUTPUT      24

This uses a Real Distortion effect and you will need to change this when porting the style to an older model keyboard. I did not change the OTS settings in the new style since I was happy with the OTS settings from 60sVintageRock.

I put a copy of the 60sFabFour style on the Music Gallery page.

S950 audio style mash-up

The Yamaha PSR-S950 and Tyros 5 arrangers provide audio styles as well as conventional, pure MIDI-based backing styles. Audio styles replace the MIDI-based rhythm tracks with an audio track of a (human) drummer playing a kit. The remainder of the backing track is provided by MIDI. On the up side, the audio rhythm parts have more nuance and sound pretty darned good. On the down side, the audio track in a style cannot be modified or eliminated nor can they be replaced by a user’s own audio track. Whether this limitation is a quirk of the Yamaha software or a permanent feature remains to be seen.

One of the S950 audio styles is “60sSuperGroup.” I’ve been off in Pepperland trying to pull some Beatles tunes together. I kept gravitating back to 60sSuperGroup for backing, but the drum back-beat in Main Section A is so strong that it doesn’t fit with hardly anything other than the song “Ticket To Ride.” It would be great to apply the non-rhythm parts to other songs.

Time to replace the audio rhythm parts in the 60sSuperGroup audio style. Unfortunately, one must work around the limitations of Yamaha’s software. The MIDI drum style “60sVintageRock” is roughly the same tempo and its rhythm parts are your basic Mark II rock and roll — in other words a good candidate style for a mash-up.

First, I loaded 60sSuperGroup, got into Style Creator and tried copying the 60sVintageRock rhythm parts into 60sSuperGroup. No joy. Once a style is an audio style, it’s always an audio style. Further, you cannot store the audio style to an external device like a USB jump drive. Yeah, the manual says this explicitly, but it was worth a try. No need to go down that rat-hole again.

So, here’s the process that I followed. I loaded 60sVintageRock as the base style and got into Style Creator. I then copied the non-rhythm parts from 60sSuperGroup into the new style which I called “60sHybrid”. I did this for MAIN A-D, FILL IN A-D, BREAK, INTRO 1 and ENDING 1. I’m not a big fan of long preplayed intros and endings, plus I didn’t know how well the longer intros and endings would mash up. Even without these additional intros and endings, this was more than enough button pushing for one day!

Here is a side-by-side comparison of INTRO and ENDING lengths:

         60sSuperGroup  60sVintageRock
         -------------  --------------
INTRO 1        1              1
INTRO 2        2              4
INTRO 3        5              9
INTRO 4        1              1
ENDING 1       3              3
ENDING 2       4              4
ENDING 3       5              6
ENDING 4       1              1

I’m not sure how to fix up these up as yet. Suggestions?

The two styles have different instrument-to-style part assignments. Here’s the instrument information for 60sSuperGroup:

Part  Vol  Pan  Var  Instrument         
----  ---  ---  ---  -----------------
RHY1   54  C      0  PowerKit1          OFF
RHY2   72  C      0  RealDrums          OFF
BASS   66  C      0  Mega VintageFlat   ON
CHD1   51  L28  127  Mega SingleCoil    ON
CHD2   42  R30  127  Mega SolidGuitar2  ON
PAD    48  C      0  Mega 12StringGtr   ON
PHR1   44  R32  127  Mega SingleCoil    OFF
PHR2   70  C      0  GrandPiano         OFF

The rhythm channels are both OFF because all drum/percussion is provided by the audio track. Here is the instrument information for 60sVintageRock:

Part  Vol  Pan  Var  Instrument         
----  ---  ---  ---  -----------------
RHY1   54  C      0  PopLatin           OFF
RHY2   72  C      0  RealDrums          ON
BASS   66  C      0  Mega VintagePick   ON
CHD1   51  L28  127  Mega SteelGuitar   ON
CHD2   42  R30  127  Mega SolidGuitar2  ON
PAD    48  C      0  CurvedBars         ON
PHR1   44  R32  127  Mega SingleCoil    OFF
PHR2   70  C      0  Harmonica          OFF

Since nothing was copied to INTRO 2-4 and ENDING 2-4, the instruments and sound for these sections do not match the sections copied from 60sSuperGroup. The mismatch is readily apparent when played.

DSP1 is configured as a SYSTEM variation effect. I needed to edit the effect parameters in order to get that VOX AC30 amp chime. Here are the parameters; they are the same as 60sSuperGroup DSP1:

Category: REAL DIST
Effect: ST AMP VT

COMP SW          ON
COMP SUSTAIN     0.4
COMP LEVEL       6.0
DIST TYPE        Crunch
DIST DRIVE       7.8
DIST EQ          Mid Boost
DIST TONE        7.0 
DIST PRESENCE    6.0
DIST OUTPUT      24

It’s been an interesting experiment so far! The resulting mash-up should be quite useful when tracking up-tempo, early Beatles rock and roll.

PSR/Tyros XG effects

I’ve been busy making my PSR-S950 gig-ready. I’ll describe the overall set-up in a separate post as soon as I have a little more time.

Part of the job involves converting some of my General MIDI 2 backing tracks to the PSR-S950 sound engine. The PSR (and Tyros) sound engine follows the Yamaha XG architecture and the sound engine responds to Yamaha XG System Exclusive (SysEx) MIDI messages. The XG SysEx messages configure tone generation and the effects that are applied to the tone generator outputs. Let’s limit the discussion to MIDI song sequencing and assume that there are 16 MIDI channels and each channel is routed to a separate tone generator. We’ll ignore style parts and how to tweeze tone generation in order to keep this discussion focused on effects.

There are two types of XG effects: system effects and insertion effects. We are already quite familiar with two common system effects: chorus and reverb. Potentially, the output from any tone generation channel can be sent independently to chorus and/or reverb. System effects routing and control follows a send-return model like a well-featured analog mixer. The amount of signal sent to the (virtual) chorus or reverb unit from a given channel is determined by a send level. Chorus and reverb are used so frequently that “standard” MIDI controller numbers are assigned for reverb (CC91) and chorus (CC93) depth.

Just like the real-world mixer model, an insertion effect is a channel specific effect. The output from a tone generator is sent directly to the input of the insertion effect and the output of the insertion effect becomes the output from the channel. An insertion effect belongs to one and only one channel (tone generator). The XG architecture does not allow insertion effects to be chained. So, if you need a chain of guitar-oriented effects, you need to read through the effects table in the Yamaha data list and find a multi-effect that does the job.

Now, life gets interesting. The XG architecture defines two kinds of (virtual) effect units: EFFECT1 and EFFECT2. Each kind of effect has certain capabilities and SysEx messages.

XG EFFECT1 has a special name: the Variation effect. The Variation effect is very (no pun!) flexible. It can function as either a system effect or as an insertion effect. In PSR/Tyros-land, the Variation effect is assigned to the DSP1 unit. That’s why the user and reference manuals have special rules and conditions that govern the use and configuration of DSP1. On certain specific PSR models such as the PSR-S750, DSP1 often supports more effect types (e.g., kinds of distortion or whatever) than its cousins, DSP2, DSP3, DSP4, etc. If a song uses DSP1, the set-up information in your MIDI SMF file, at a minimum, must send SysEx to choose system or insertion mode and the effect type.

XG EFFECT2 effects are optional, that is, an XG keyboard does not need to implement any EFFECT2 effects. (EFFECT1 is also optional, but such a keyboard is only “XG-Lite” compliant like the PSR-E443.) The old QY-70 sequencer, for example, implements EFFECT1, but doesn’t support any EFFECT2 effects. The Yamaha Mobile Music Sequencer only supports EFFECT1, too. In PSR/Tyros-land, the number of ancillary DSP units (DSP2, DSP3, DSP4, etc.) determine the number of supported XG EFFECT2 effects. All XG EFFECT2 effects are insertion effects. Period. No choice.

With this background in mind, you will need to take some time to study the XG effects-related parameters in the MIDI message section of the PSR/Tyros manual. This is time well-spent.

Let’s take a look at a few details, though, in order to see how all of this fits together. First, here are a few points to summarize EFFECT1, the Variation effect.

  • XG EFFECT1 is assigned to PSR/Tyros DSP1.
  • This effect unit provides reverb, chorus and other insertion/system effects.
  • The Variation effect is configured for either insertion or system mode.
  • The Variation effect is shown in the mixer console effect window.
  • As an insertion effect, the send level is 127 and cannot be changed through the mixer console window.

The following three SysEx messages configure the Variation effect as an insertion effect. All numbers are hexadecimal. The effect type is MSB:5F and LSB:20, which is MSB:95 (decimal) and LSB:32, known to human beings as Real Distortion “MLT DS SOLO.” It’s a guitar multi-effect suitable for a lead guitar solo.

     Start SysEx message
     |  Yamaha ID
     |  |  Device number
     |  |  |  Model ID
     |  |  |  |                 End SysEx message
     |  |  |  |                 |
    F0 43 10 4C 02 01 40 5F 20 F7      Choose effect type
    F0 43 10 4C 02 01 5A 00 F7         Variation connection (00:insertion)
    F0 43 10 4C 02 01 5B 00 F7         Variation part
                 |  |  |
                 EFFECT1 parameter addresses

These three messages are called “XG Parameter Change” messages because they change an XG control parameter (e.g., effect type) stored at a particular address (e.g., 02 01 40). Most of the message is reusable boilerplate like the Yamaha ID, device number and model ID. Since we are using the Variation effect in insertion mode, we must assign the effect to a part, also know as a MIDI channel. In this case, we are assigning the Variation effect to Part 1 (MIDI channel 0).

Here’s a few bullet points to summarize what we know about EFFECT2.

  • XG EFFECT2 is assigned to one of DSP2, DSP3, DSP4, …
  • XG EFFECT2 is always an insertion effect.
  • The DSP unit is selected via the XG parameter address in the SysEx message.
  • The insertion effect must be assigned to a (song) part/MIDI channel.

Here is a quick example of two SysEx messages to set up an insertion effect on part 2 (MIDI channel 1) on DSP4.

                 EFFECT2 parameter address
                 |  |  |
    F0 43 10 4C 03 02 00 4E 10 F7      Choose effect type (0x4E 0x10)
    F0 43 10 4C 03 02 0C 01 F7         Variation part
                    |     |
                    |     Part 2 (MIDI channel 1)
                    00:DSP2 01:DSP3 02:DSP4

The first SysEx message selects the effect type (XG parameter address: 03 02 00). The effect type is MSB:4E and LSB: 10 which is MSB:78 (decimal) and LSB:16 (decimal). This is AUTO WAH1. The second message assigns DSP4 (02) to MIDI channel 1. Please note that the DSP unit is selected by the second byte in the XG parameter address.

This information should be enough to get you started. From here, I recommend reading about the Yamaha XG tone generation and effects architecture.

Yamaha, at one time, published diagrams showing Tyros 2 and XG effect routing. Unfortunately, these helpful diagrams are now hard to find. Here are links to the Tyros 2 effect diagram and the MU-128 XG effect diagram.

MMS as a tool

I’ve got a lot more experience with the Yamaha Mobile Music Sequencer (MMS), so it’s worth passing along an update. I’ve been composing backing tracks for classic soul jazz tunes. If you would like to hear the results, please browse over to the Music Gallery.

MMS is a phrase- and section- oriented composition tool. A song is a sequence of one or more sections and a section is a group of phrases that play together. The phrases follow the section’s chord progression. Thus, it’s easy to pull a section together given a chord progression from a lead sheet and a library of drum, bass, guitar and piano phrases (MIDI loops).

This approach works great for a simple tune like “Memphis Underground.” Memphis Underground is built on a single chord (C7) and simple bass figure that repeats ad infinitum. Just set the chord progression for each section to C7 and stack drum, bass, guitar and electric piano phrases. Vary the arrangement by stacking different phrases in each section and lay down the different sections in the song. I recorded the simple flute part that makes up the head (the main melodic theme) into a phrase of its own. Finally, I recorded solo parts into the MMS song screen because it didn’t make sense to split the solos into separate phrases. Overall, this approach worked out pretty well.

Life got a little more interesting with “Watermelon Man” and “Comin’ Home Baby.” These tunes are 16- and 12-bar blues. It would be great to arrange the songs from short 4-bar phrases and just let the phrases follow the chord progression. However, when fills are placed at the end of a 4-bar phrase, the fills do not always play at the most musically appropriate points in the tune! I resolved this problem by increasing the phrase length to 8 bars. I also recorded the head into a phrase of its own. It’s handy to play back the head while stacking phrases even if you intend to record the head along with the solos in the MMS song tracks. Melodic phrases such as these must be set to by-pass transposition.

Then there are tunes like “Tough Talk” and “Put It Where You Want It.” These tunes are based on one or more musical hooks that are essential to the character of the song. Generic bass or piano phrases just don’t cut it. I had to record phrases to cover the hooks and the head. Now, on-the-fly transposition guided by the section chord progression really starts to fight you! I wound up recording full, chorus-long phrases (all 12-bars), effectively ignoring (defeating) chord transposition by the sequencer. Each section has only one chord (e.g., F7 or C7) which simply determines the key for the tune. The hook phrases must be set for “parallel” transposition.

Put It Where You Want It is a work in progress. This tune is even more complicated to sequence because it has three major sections, each with a distinctive hook and theme. Stay tuned!

Overall workflow with MMS has been good. The Mixdown feature makes it easy to create a WAV file. MIDI (SMF) export is also easy. I’m using iTunes File Sharing to move the WAV and MID files to a PC where I convert the WAV to MP3 and add General MIDI (GM) SysEx and voices to the SMF file. iTunes File Sharing is a lot less hassle than I originally anticipated. The latest version (3.1) of MMS adds Dropbox, but I haven’t updated as yet.

There is one minor recurring problem. The MMS tone generator is a subset of the Yamaha XG standard and includes extended XG drum kits. This is good for musicians who are working on XG-compatible and/or Yamaha instruments because the GM drum kit is quite limited. However, the extended MIDI notes outside of the GM range do not map to the same percussion sounds on non-XG equipment, e.g., Roland Sound Canvas. So, I have had to edit the MIDI file and remap notes to make the drum parts truly General MIDI compatible.

Workflow is essentially in one direction only. I think the software developers see MMS as a mobile sketchpad where a musician jots down ideas that are transferred to and finished on a computer-based DAW. MMS cannot import results from the DAW. So, once you start editing with your DAW (e.g., SONAR or Cubase), you’re committed.

Well, there you have it. The true worth and limitations of a software tool like MMS are only apparent when taking on complicated, real-world problems. I’m still enthusiastic about MMS, but I’m also more knowledgeable and wary of its limitations. The song/section/phrase structure can definitely fight back at times!