MODX: Sampling Genos pipe organ

Sample Robot for Montage (SRM) is a very useful addition to the Yamaha MODX (Montage) product ecosystem. After my initial start-up experience:

I went on to produce two sampled pipe organ voices: Organ Prinzipal and Organ Pleno.

Prinzipal and Pleno

Anyone who sees a pipe organ — especially a cathedral-sized instrument — is immediately impressed by its large array of pipes. The open metal pipes are the principal pipes which give a pipe organ its distinctive sound. Pipes are arranged in ranks, kind of like the individual drawbars on a Hammond B3 organ (vice versa, really!) Hammond-ites know that the length of a pipe determines its pitch and that each rank has a reference pitch (measured in feet) that specifies the rank’s harmonic character when blended with other ranks.

I generally use pipe organ to lead congregational singing. Conventional wisdom for hymn accompaniment is simple: Use principal pipes with simple, foundational pitch: 8′, 4′ and 2′. Although this sounds plain vanilla, the sound is not cluttered by harmonics that may confuse the congregational ear. This kind of organ registration is often called a “principal chorus.” Due to the deep history of pipe organ in Western Europe, a French, German or Italian name may be used instead, e.g., “Prinzipal.”

Old school players understood the need to built energy and drama during a tune, too. Thus, an organist might add non-fundamental harmonics during the final verse and chorus. Think, Hammand organ “whistle”, 1 3/5′, 1 2/3′, etc. Often, a group of such ranks is brought in, a “mixture.” If the mixture consist of principal pipes, then the resulting registration is called a “full principal chorus.” This registration has many names, too, such as “Organo Pleno” or “Plein Jeu.”

In case you’re wondering, reed stops are rarely used for hymn accompaniment, if ever. Flute pipes are occasionally added for quiet meditative hymns. Principals are the real work horses.

Yamaha Musicsoft offers a terrific PSR expansion pack: Church Organ. Someone put a lot of love and care into this pack! I bought a PSR-S950 based upon the strength of the Church Organ pack. Fortunately, the PSR-S970 version of the pack also loads on Yamaha Genos™ and I’ve been able to take advantage of its sounds for practice and live play.

My goal here is to sample the Organ Prinzipal and Organ Pleno voices on Genos and to use those voices on MODX.

Sample, test, repeat

Sampling with SRM is reasonably straightforward. If you read my previous blog posts, then you already have the general drift. I recommend reading the SRM manual, too.

I liked the sampling strategy and key layout used in the Apple Symphony Orchestra pipe organs and arrived at a planned layout of keybanks:

KB#  Low  High  Center
---  ---  ----  ------
 1    C-2  C#0      C0
 2    D0    E0     D#0
 3    F0    G0     F#0
 4   G#0   A#0      A0
 5    B0   C#1      C1
 6    D1    E1     D#1
 7    F1    G1     F#1
 8   G#1   A#1      A1
 9    B1   C#2      C2
10    D2    E2     D#2
11    F2    G2     F#2
12   G#2   A#2      A2
13    B2   C#3      C3
14    D3    E3     D#3
15    F3    G3     F#3
16   G#3   A#3      A3
17    B3   C#4      C4
18    D4    E4     D#4
19    F4    G4     F#4
20   G#4   A#4      A4
21    B4   C#5      C5
22    D5    E5     D#5
23    F5    G8     F#5

In Sample Robot concepts, this means starting at C0 (MIDI note number 24) and sampling every three semi-tone steps up to C5 (MIDI note number 84). With the exception of the lowest and highest note, a sample is never transposed (pitch shifted) more than a single semi-tone. I also liked the long sample time in the Apple approach and settled on a 12 second capture time plus 0.5 seconds release (12.5 seconds total of capture). I didn’t use the release samples, but I wanted to see and hear them as a learning experience.

If you change the MIDI note range or step number in SRM, be sure to click the Step button! I got hung up and couldn’t figure out why SRM didn’t “see” new note range limits. This really should be mentioned prominently in the SRM manual. I assumed that SRM would simply take what it was given…

These basic sampling parameters can be set using the SRM project wizard. Or, you can set them individually on the various property tabs. I went through the wizard first, then fine tuned individual parameters later.

The virtual keyboard at the bottom of the screen shows the notes to be sampled (black and white) and the notes for which samples have been taken (notes with a blue square). The dark grey notes are not sampled. [Click on images to enlarge.]

Before going further, I must state that I made several attempts at sampling each voice. I decided to retain the volume differences (level nuances) across the multisample. I turned Auto-gain OFF and set the audio input level manually. Thanks to the waveform display, I could find any obviously clipped sample. I also did a spot check of questionable samples in Sound Forge Studio. I eventually arrived at a set of samples for each voice in which one (or a few samples) were max’ed and the rest of the samples in the set fell in line as synthesized by Genos. I believe this strategy preserved the natural levels across the pipe organ key range.

Loop quality

I let SRM do the looping. I know from experience that looping pipe organ samples is not easy and is very time consuming. Plus, I wanted to see how well SRM would do.

The Display buttons below the waveform pane control waveform annotations. Enable the Loop button and SRM shows the loop in (start) and loop out (end) points for a sample. I used the default cross-fade loop settings as shown in the screenshot.

SRM’s loops sound decent. There are a few samples where a bit of a surge could be heard, but no obvious bumps or clicks. SRM’s loops are shorter than the Apple loops and that is a little disappointing. However, there aren’t any short cycle loops that lose the dynamic timbral quality of a pipe organ. I think they are all useable as they are without any manual tweaking. My opinion is based upon what I auditioned in SRM and what I heard at the MODX keyboard itself.

Normalization and gain change

Really good thinking went into this part of SRM. SRM gives you several options for normalizing or applying a gain factor across one or all of the samples in a project. (Please see the manual for details.)

Normalization works as expected. It applies a gain factor that brings up the an entire sample such that the peak is 0dB or a custom peak level which you set.

Gain change is just what I needed for this project. I wanted to maintain the relative difference in level between samples — just make everything uniformly louder without introducing clipping distortion. In order to do this, I needed to know the highest dB level for a group of samples then apply a gain factor everywhere to pull all samples up. SRM provides a few different options for finding the overall peak level, e.g., “Find highest dB Level in selected Project”. Suggested improvement to SRM: After analyzing the samples, SRM should display the peak level for each sample in the property pane along with the sample’s other properties.

I like the option “Warn if clipping will occur.” Features like normalization and gain change would make SRM quite useful and necessary even when starting out with old samples borrowed from a VST software instrument. 🙂

Export and import

I exported each voice as a Montage LIBRARY file (X7L) and loaded each LIBRARY file into MODX. One nice MODX feature is the ability to audition Performances in a Library. This is a quick way to sanity check new waveforms (and underlying samples) on MODX.

There were several iterations at this stage, too. It took a few iterations to get the desired key range for sampling. The initial key range was one octave too high. I like to have three octaves in the left hand and two octaves in the right hand for hymn accompaniment as I’m faking organ pedals in the left hand. I used MIDI OX to check the high and low MIDI note numbers, then I reset the lower and upper note sampling limits in SRM.

Thankfully, any and all iterations are fast. SRM can sample the entire key range in about 5 to 6 minutes with the chosen capture time for each sample (12.5 seconds). This is welcome and needed time to get a cup and give my ears a rest!

Finishing and sanding

The new waveform needs to be incorporated into a finished MODX Performance because the SRM-generated Performance in the Library file is very, very basic. (Actually basic is a good thing for quality assurance and auditioning.)

In one of my earlier experiments, I had fashioned a pipe organ Performance (Plein Jeu). I repurposed the Performance even though I had long since blown away the Plein Jeu waveform.

My process has (roughly) the following steps:

  1. Load the LIBRARY file generated by SRM.
  2. Audition the generated Performance in the Library.
  3. Import the generated Performance and its waveform into USER memory.
  4. Select and edit an existing Performance, hopefully one which is close to the desired result.
  5. Save the new Performance under a new name.
  6. Edit the effects or any other Performance Common parameters.
  7. Edit the Part information within the Performance.
  8. Edit the elements in the new Performance to use the new waveform.
  9. Edit the new waveform to change its name (category and subcategory), to extend the lower note limit of the lowest key bank, and to extend the upper note limit of the highest key bank.
  10. Make any other necessary tweaks to the new waveform.
  11. Make tweaks to the Element programming or effects.
  12. Save the new Performance.

Clearly, prior experience with Performance and Part editing is a real plus at this stage. Ramp up slowly! Gain experience. Rome wasn’t built in a day.

OK, get ready for TMI. When you load a library, MODX seems to load incoming waveforms into wave memory on a contingency basis. This is why you can audition new Performance waveforms in a library. You can even make a contingent waveform part of a USER Performance. If you haven’t explicitly imported the Library Performance and its (contingent) waveform from the Library and you delete the Library, kiss the waveform good-bye; it’s deleted, too.

When you’re ready to commit to a new waveform, you must explicitly import the parent Performance and the new waveform within to USER Memory via the Data Utility.

A few comments for the developers

Nice work! Here are a few refinements.

Please add the ability to directly monitor the incoming sample stream. It would greatly aid set up and we can listen for audible clipping distortion when setting levels.

Display the peak level in sample properties. This will make it easy to find samples which are (potentially) clipped.

The Project Datapath in the Preferences dialog does not seem to apply everywhere and it isn’t persistent i.e., it is reset to the path “C\Users\xxx\Documents\SKYLIFE\SampleRobot6\Data.” This file path should be used consistently.

A native English speaker should take a quick pass through the manual, which is already pretty darned good. There are occasional spelling and simple grammatical errors (e.g., possessive versus plural). The same reviewer should check the application for spelling errors; there are misspelled words.

The manual should inform the user to press the Step button after changing the MIDI note limits for sampling.

What’s next?

When I A/B’ed the expansion pack organs against the Apple Symphony Orchestra pipe organ, I had to give the quality edge to Apple. I’ve already snagged another voice from the Symphony Orchestra Jam Pack. At the very least, I’ll use Sample Robot for Montage to change gain, to layout the key banks and to generate a Montage LIBRARY file. It shines at these operations and really speeds up the work.

Copyright © 2018 Paul J. Drongowski

MODX Theatre Orchestra

Today’s project is reconstructing one of my favorite voices stolen from Genos/PSR: TheatreOrchestra. This voice first appeared in Tyros 3, using waveforms that are roughly contemporaneous with Motif XS (MOX).

The following table summarizes the eight voice elements in TheatreOrchestra. The voice parameters are pulled from the Genos UVF file for the voice.

Element  Low  High Low  High    Vol  Shift  Waveform
-------  ---  ---- ---  ----  -----  -----  -----------------------
   0      C3   G8    1   127   -7.9      0  Flute2 Soft St L (5623)
   1      C3   G8    1   127   -9.8     12  Flute2 Soft St L (5623)
   2      C3   G8    1   127  -12.0      0  [Flute] (4951)
   3     C-2  F#3    1   127   -3.0    -12  Bassoon Hard (5626)
   4      E3   G8    1   127   -6.0    -12  Oboe2 Med V3 (5627)
   5      C5   G8    1   127  -21.4     24  [Glocken] (5124)
   6     C-2   G8    1    68   -9.0      0  p (5248)
   7     C-2   G8   69   127   -9.0      0  f (5249)

The volume (element levels) look a little bit curious and I conjecture that element levels are set relative to 0dB. We’ll need to convert these levels to the range [0:127] with 127 corresponding to 0dB. Naturally, we’ll let our ears be the ultimate judge.

The overall sound is dominated by the woodwinds: 3 flute elements, bassoon and oboe. The bassoon and oboe are transposed down one octave. This imparts a unique reedy character to the sound. However, the lower notes (left hand) get somewhat murky, so in the final voice, I leave the bassoon and oboe in their natural ranges to either side of middle C (approximately).

The string component is not strongly stated. Any old string ensemble would do. The waveform names in the UVF files are not super informative although I suspect use of the OrchStrgs waveforms which were introduced in Tyros 3 and Motif XS.

The glockenspiel adds a nice chime to the high end. The glock always sounds in the original Genos/PSR voice, becoming rather tiresome after a while. I prefer to switch the glock in and out. Also, piccolo is a good alternative, again, being switched in and out.

The next table summarized the eight voice elements in Theatre, a similar voice that I constructed for the MOX6.

Element   Low  High Low  High  Level  Shift  Waveform
-------  ----  ---- ---  ----  -----  -----  ----------------
   1       C2   G8    1   127     90      0  Flute2 Soft St
   2       C2   G8    1   127     80     12  Flute2 Med St
   3       C3   G8    1   127     40    -12  Flute Non-Vib Of
   4      C-2   B2    1   127    100      0  Contrabass R
   5       C3   G8    1   127     50      0  Solo Combi St
   6       C3   G8    1   127     80     24  Glockenspiel  AF2
   7       B2   G8    1   127     65     24  Piccolo       AF1
   8      A#2   G8    1   127    100      0  Oboe 1

The piccolo and glockenspiel are controlled by the Assignable Function buttons AF1 and AF2, respectively. The corresponding element sounds when an AF1 and/or AF2 button is enabled (turned on).

Contrabass and the Motif XS/MOX string Solo Combi replace the string ensemble. The contrabass lends a nice bottom to hold down the bass. It should be played sparsely in the left hand (i.e., no close clusters).

Finally, here is the TheatreOrch voice for MODX. On MOX, I tended to work exclusively in voice mode. MODX is modeless and all programming is made in a Performance. Thus, on MODX, I comp’ed several Performances into a single TheatreOrch Performance, then tweaked the individual Parts. [Click images to enlarge.]

Although Performances are the first class citizens, I still dove into the Parts to make changes at the element level. The string Part is based on the Almighty Performance; I changed the waveforms to OrchStrgs Soft St and OrchStrgs Med St, splitting the patch into two velocity ranges: 1 to 68 and 69 to 127.

The new glockenspiel and piccolo waveforms are much better than Motif XS (MOX). The old glock sounded like a not very well cared for, used instrument bought in a pawn shop. The new glock rings nicely. A sweet alternative is the FM Glockenspiel. If I wasn’t such a traditionalist (!), I would have used it. Maybe in a future variation?

The flute Part (Part 1) is based on the 2 Flutes Performance. I employed older Performances for the oboe and bassoon, too. Since this voice is a blend, detailed isn’t too important and older, simpler voice programming doesn’t cut into polyphony as much as the newer detailed Performance. I prefer the new Performance for exposed solos when high quality is needed and polyphony is not likely to be an issue.

Instead of AF1 and AF2, I created four scenes. Scene 1 mutes both the glock and piccolo, Scene 2 enables the piccolo, Scene 3 enables the glock, and Scene 4 enables both the piccolo and glock. The MODX Scene buttons are close at hand and are an easy gesture away when making changes. The MODX assignable buttons, A.SW1 and A.SW2, are a longer reach.

As I work with MODX, I realize that I need to think more about building block Performances which can be combined (comp’ed) into bigger Performances. For example, it might have been better to start with 2 Oboes & Bassoon in one Part instead of separate oboe and bassoon in two Parts. Similarly, it might have been better to start with Wood Winds + Strings, which combines flutes and strings. By cutting two parts, I could have implemented the voice in four Parts, thereby making Seamless Sound Switching (SSS) possible. I may try this approach as a learning exercise.

Hope you enjoyed this brief dive into MODX Performance programming.

Copyright © 2018 Paul J. Drongowski

Bonus voice: Tutti

Let’s take a quick look at another interesting voice from arranger-land: Tutti. Tutti is a string and horn layer with Timpani in the left hand. High velocity left hand notes trigger a crash cymbal, too.

The following table summarizes the Genos voice programming.

El#  Low  High Low  High    Vol  Pan  Waveform
---  ---  ---- ---  ----  -----  ---  ------------------------
 0   C-2    G8   1   127  -25.9   -1  (4081)  Allegro Strings
 1   C-2    G8   1   127  -25.9    1  (4082)  Allegro Strings
 2   C-2    G8   1   127  -22.9    0  (4102)  French Horn
 3   C-2    F1   1   127  -14.6    0  (4222)  Timpani
 4   C-2    F1 106   127  -20.6    0  (4223)  Crash cymbal

I constructed a similar voice for MOX:

El#  Low  High Low  High    Vol  Pan  Waveform
---  ---  ---- ---  ----  -----  ---  -----------------------
 1   C-2   G8    1   127    105  L63  508  OrchStrgs Soft L
 2   C-2   G8    1   127    105  R63  511  OrchStrgs Soft R
 3   C-2   G8    1   127     90    0  621  French Horn St
 4   C-2   B1    1   127    127    0  137  Timpani Sw St        AF1 ON
 5   C-2   B1  106   127     85    0  2479 Hand Cymbal Open St  AF1 ON
 6   C-2   B2    1   127    101    0       Snare Drum           AF2 ON

     AF1 ON: Enable element 4 Timpani and element 5 Hand Cymbal
     AF2 ON: Enable element 6 Snare Drum

The timpani and hand cymbal are enabled when Assignable Function button 1 (AF1) is on. I added a snare drum hit which is enabled by AF2.

The screenshots below are a quick attempt to implement Tutti on MODX. I haven’t quite figured out the snare drum yet. First world problem: I love the Highland Snares kit and would like to use all of them!

Blazin’

Baby, I’m amazed at how fast I have pulled together enough MODX Performances to take MODX to my gig tomorrow. This is definitely a set up record and testimony to efficient workflow through the touch screen user interface. Of course, being familiar with the Yamaha AWM2 synthesis architecture (and its many parameters) is a big help.

There were only a few sticking points like how to delete a Part from an MODX Performance. It works like a right-click context menu — hold SHIFT and touch the Part that you want to delete, etc. The MODX pops a menu.

I did a little A/B testing between MODX and Genos™ as a sanity and ear check. I compared my MODX Performances against the Genos registration settings that I crafted for my church sounds (mainly orchestral instruments/layers and B3 organ).

I was surprised to hear the difference between the MODX and Genos drawbar organ. The MODX was grungier and I had to find out why.

All 9 Bars!

It’s worth unpacking the “All 9 Bars!” Performance simply to learn about MODX Performance (and voice) programming. Please remember that MODX (and Montage) Performance structure is relatively flat. A Performance consists of Performance Common data and one or more Parts. Look inside Performance Common for Variation, Reverb and Multi-effects (MFX) effect routing and parameters. These are the system-level effects that affect all Parts in the Performance.

Each Part contains Part Common data and one to eight voice elements. A voice element is either a mini AWM2 or FM-X synthesizer depending on voice type. Part Common is where the Insert A and Insert B effects are defined. They affect one or more voice elements depending upon insert effect switch status. In “All 9 Bars!” the Insert A and B effects are “Rotary Speaker 1” and “Multi FX”, respectively. Please see my last post for more details.

The MODX does not have an explicit Voice (capital “V”) object type; voice (lower case “v”) information is contained within a part. I will use “voice” (lower case “v”) at times in my writing. Please keep the distinction in mind.

“All 9 Bars!” consists of two parts. Part 1 handles the first eight drawbars:

Element# Waveform
1 Draw 16′
2 Draw 5 1/3
3 Draw 8′
4 Draw 4′
5 Draw 2 2/3′
6 Draw 2′
7 Draw 1 3/5
8 Draw 1 1/3

Expanded Articulation (XA) is “Normal” meaning that all of the elements trigger with a key press. This chews up polyphony pretty quick. Good thing the MODX has 128 AMW2 voice polyphony.

Part 2 has the ninth drawbar (1′) and special effects goodies. Think of “All 9 Bars!” in the same way as a multi-part piano voice with key noises, etc.

Element# Waveform Purpose
1 Draw 1′ 1′ drawbar
2 Percussion Percussion
3 Rotor Grit Rotor noise
4 Rotor More rotor noise
5 Draw 8′ Key click
6 Draw 8′ Key click

If you want to clean up the sound or turn off key click, look into Part 2.

The SuperKnob is programmed to control the amount of distortion drive in the Insert B “Multi FX” effect. The MOD wheel and Assignable Function button 1 (AF1) controls the rotary speaker speed.

Why the Genos B3 is soooo polite

The Genos B3 is too polite and clean, especially for rock and grungier forms of jazz, funk and gospel. Both the MODX and Genos have the same rotary speaker effect. The MODX, however, has a longer effects chain and includes a “Multi FX” distortion with top boost effect. After shutting down “Multi FX,” the MODX is still grungier. That’s why I decided to deconstruct “All 9 Bars!”.

The Genos does not have the rotor noise or key click components. Each of Genos’ RIGHT1, RIGHT2, RIGHT3 and LEFT parts are what MODX folks would call single Part Performance. RIGHT1, etc. each implement a single voice consisting of one to eight elements. Even though an “Organ Flutes” voice behaves like a multi-Part Performance, you cannot extend it or reprogram it. “Organ Flutes” is a closed black box.

One could, however, construct a Genos organ FX voice with percussion, rotor and key click elements and then layer the organ FX voice with an Organ Flutes voice, i.e., assign an Organ Flutes voice to RIGHT1 and assign the organ FX voice to RIGHT2. One would have to build the organ FX voice in (Yamaha Expansion Manager) YEM — totally do-able. I wish Yamaha published a waveform list as the necessary samples may already be hiding in the Genos waveform ROM.

Seen it, done that

Here’s a peek at the Live Set for Sunday. This is an experimental layout. I hope that I can poke the buttons on the fly. [Click images to enlarge.]

I took what I learned about the “All 9 Bars!” Performance and build a new Performance called “B3 Church Scene PJ”. The Performance uses scenes to switch in additional drawbars. I have three signature settings that I use every Sunday. I start out with a basic church sound and then add drawbars to it as the hymn (or whatever) progresses.

BTW, I have the EQ low dialed way down. Too much bass gets in the way of our pianist. Also, thankfully, Performances remember the state of the selected knob parameters. I make occasional EQ changes on the fly.

The MODX Scene mechanism seems to be built for this kind of voice switching. Plus, the Scene buttons are so close at hand. I successfully put the AF1 and AF2 buttons to work this way on the MOX6. Building a new MODX Performance from “All 9 Bars!” was a good learning experience and it got me ready for Sunday. Maybe I can make orchestral combinations with Scenes and maybe, gasp, put the SuperKnob to work? Stay tuned.

Copyright © 2018 Paul J. Drongowski

Mobile Music Sequencer revisited

Yamaha Mobile Music Sequencer (MMS) is an app that doesn’t seem to get as much love as it deserves. MMS is a rather complete MIDI sequencing tool to create new songs using a phrase-based approach. (Cost: $15.99USD) The MMS user interface has a superficial resemblance to Ableton Live. It has a phrase screen which lets you assemble preset or user phrases into song sections, e.g., phrases that play as a group. Once you have one or more song sections, you then assemble the sections in the linear song screen. You may also create new phrases of your own in a piano roll editor/recorder and you may record solos and such directly into a song track.

MMS includes an XG-architecture sound engine although the voice set is limited to a General MIDI (GM) subset and a collection of MMS-only voices. Voice quality is “just OK” and may be why MMS adoption is slow. However, as I’ve recently discovered, there are a few hidden gems like a Mega Voice clean electric guitar! DSP effects are basic and follow the XG effects architecture. I have summarized the sound set, DSP effects, etc. on my Mobile Music Sequencer Reference page.

Of course, you can mixdown and export full audio songs from MMS. MMS supports SoundCloud, Dropbox, and iTunes file transfer. You can also export a song to a Standard MIDI File (SMF). The SMF has eight parts — one part for each of MMS’s eight song tracks. If you choose one of the supported targets (Tyros 5, Motif XF, MOX, etc.), MMS inserts bank select and program change MIDI events to select an appropriate voice for each track. Unfortunately, MMS doesn’t export volume, pan or effect data, so the resulting SMF is quite naked. Ooops! This is one area where MMS could be and should be drastically improved.

MMS’s voicing for Tyros is not very adventurous. On the up side, SMFs targeted for Tyros should work quite well on other PSRs, too. There is one voicing issue which should be fixed. The MMS clean electric Mega Voice (“Clean Guitar 2”) should be mapped to the good old PSR/Tyros clean guitar mega voice. Right now, it’s mapped to the regular clean guitar voice and the guitar FX sounds are whack.

Yamaha have rather quietly enhanced MMS’s capabilities. MMS is now up to version 3, including chord templates, extraction of chord progressions a la Chord Tracker, and more. The last minor update made MMS compatibile with Apple iOS 11. I hope Yamaha add Genos and Montage support because MMS can communicate directly (via wired MIDI, Bluetooth MIDI or wireless LAN) to its supported synths and arrangers.

Given the amount of kvetching about the shortcomings of the Montage sequencer, I’m surprised that more Montage people haven’t picked up MMS. Same for Genos or PSR, for that matter. Maybe its the lack of direct Montage or Genos support?

Where you from, boy?

Recently, I got the itch to create a few new PSR-compatible styles. I’ve always felt that MMS would make a good base for a style editor. You can quickly slam together phrases into a song section and see if they play well together. (Same as Ableton Live, I might say.) I mix and match phrases into song sections then export the sections to an SMF. Each MMS song section is a PSR style section (MAIN A, MAIN B, etc.) I load the SMF into a DAW where I add style section markers, SysEx set-up data, volume, pan, etc. When satisfied, I add a style CASM section using Jørgen Sørensen’s CASM editor. [Be sure to check out all of Jørgen’s excellent tools.]

Given the content, I can just about do this in my sleep. It’s a fairly mechanical process once you understand it and do it, say, fifty times. 🙂

About that content…

MMS comes with ten styles (i.e., groups of phrases) in the initial download. Please see the table at the end of this article. The ten styles are rock and pop. If you’re looking for R&B, dance, jazz, electronic or hip-hop, you’ll want to buy one of the content packs offered as an in-app purchase. I’ve include a table for these packs, too, at the end of the article. The genre packs are $3.99USD each. Yamaha also offer the multi-genre QY pack ($7.99USD) with phrases taken from the Yamaha QY-70 (QY-100) handheld sequencer. I did a little QY-70 mining myself.

Now for the usual Yamaha archeology…

The “MM” in “MMS” is a little bit ironic. The MMS phrases are lifted from the (infamous) “Mini Mo” mm6 and mm8 keyboards. The Mini Mo touted voices taken from the Motif series, but the mm6 and mm8 didn’t really know if they wanted to be an arranger or a synthesizer. In that regard, the Mini Mo is a unique functional hybrid in Yamaha’s bipolar world. (“You’re either a synth or you’re an arranger.” Digital pianos excepted, of course.)

So, yep, MMS offers almost all of that old (ca. 2006) Mini Mo goodness. You don’t get the fun ethnic patterns (Turkish, African, Indian), tho’.

If you break into your rich neighbor’s house to steal his stereo, you might as well take the TV set, too. The Mini Mo arpeggios are incorporated into the the Yamaha Synth Arp & Drum Pad app. If you still can get the Synth Arp & Drum Pad app, snag it right away. It’s being discontinued.

How does it sound on Genos?

Not bad. Even though the target voices are rather vanilla, an MMS-derived style on Genos sounds pretty darned good.

List of MMS drum kits

Bank MSB Bank LSB Prog# PC# Drum kit
7FH 00H 1 00H Standard Kit
7FH 00H 26 19H Analog T8 Kit
7FH 00H 27 1AH Analog T9 Kit
7FH 00H 28 1BH Dance Kit
7FH 00H 41 28H Brush Kit
7FH 00H 84 53H Break Kit
7FH 00H 85 54H Hip Hop Kit 1
7FH 00H XX xxH Hip Hop Kit 2 (Hip Hop)
7FH 00H XX xxH Hip Hop Kit 3 (Hip Hop)
7FH 00H 88 57H R&B Kit 1 (R&B)
7FH 00H 89 58H R&B Kit 2 (R&B)
3FH 20H 1 00H SFX Kit
3FH 20H 2 01H Percussion Kit
7FH 00H XX xxH Dubstep Kit (Electronic)
7FH 00H XX xxH Elct.Dub Kit 1 (Electronic)
7FH 00H XX xxH Elct.Dub Kit 2 (Dance)
7FH 00H XX xxH Epic FX (Electronic)
7FH 00H XX xxH Gate Drum Kit (Electronic)
7FH 00H XX xxH Short FX (Electronic)
7FH 00H XX xxH New Pop Kit (Dance)
7FH 00H XX xxH Trance FX Menu (Dance)
7FH 00H XX xxH Trance Power Kit (Dance)

List of styles

The following preset styles are installed with Yamaha Mobile Music Sequencer when you buy MMS.

Category: Rock/Pop Jazz/World
BluesRck Funky Jaz
ChartPop JzGroove
ChartRck Reggae
FunkPpRk
HardRock
PianoBld
PowerRck
RkShffle
RockPop
RootRock

Here are the styles included in each optional, in-app purchase pack:

R&B Electronic Dance HipHop
IzzleRB Ambient Dncehall AcidJazz
JazzyRnB Analog Dncfloor Amb Rap
RB Chrt1 Chillout E-Disco ButiqHH
RB Chrt2 Dubstep E-DubPop EastRap
RnB Bld1 ElctDub EleDance HipHopPp
RnB Bld2 Electron ElktPop1 JazRemix
RnB Pop1 Minimal ElktPop2 SouthRap
RnB Pop2 Techno FunkyHse WestRap
RnB Soul Undrgrnd LatinJaz
M-Trance

Copyright © 2018 Paul J. Drongowski

Montage update v2.5

Just when the summer seemed truly boring, Yamaha drops the Montage v2.5 update.

I think Yamaha engineers have heard many user comments and requests. They have continued to beef up legacy (Motif XF) Performance support in Montage, providing all of the original Motif XF Performances as presets. The legacy Performances have Super Knob assignments. Good to see and hear! The release video mentions “512 new Motif XF Performances.” Too soon to know how this breaks down — spiffed up old versus brand new. [Kind of like “new” vs. “new old stock.” 🙂 ]

The Motif XF Performances are a lot of first rate content. Coupled with the new Arpeggiator recording modes, one can use a Montage as a songwriting tool much like the earlier Motif XS/XF and MOX/MOXF.

Another gap between the old and new was the lack of integrated control between Montage and DAW. Montage has a new REMOTE mode, “DAW Remote Control:”

  • Mix your DAW tracks using the MONTAGE faders and knobs
  • Use the MONTAGE transport to start, stop, record, rewind, fast forward and return to zero
  • Select, arm, mute and solo DAW tracks with the MONTAGE right-hand buttons
  • Edit and control virtual instruments
  • Use the MONTAGE Data Wheel as a jog/shuttle wheel
  • Customize the [SCENE] buttons to perform various DAW functions

[Above list quoted from the Yamaha Synth web site.] This is more like the old “AI integration” in Motif. Cubase, ProTools, Logic, and Live are supported.

The Yamaha Synth site reminds everyoe to “BACKUP and SAVE YOUR DATA before updating to OS v2.5!” This is good advice in general. Are you ready for a media failure? A worn out back-up battery?

The update is available today, 31 July 2018. Looks like the team met their quarterly milestone. 🙂

Genos™ people on the PSR Forum want to feel the love, too. Genos and Montage updates are on separate schedules. However, I do hope that Yamaha engineers have been listening as carefully to Genos users. A fair number of us would like to see similar DAW support/integration for Genos along with bug fixes. We are using Genos in our studios and need the same kind of DAW control and VST integration.

Yamaha had to restructure the old Tyros/PSR OS to run on Linux and to interact through the new user interface (UI). I occasionally run into an issue where a setting gets lost when switching “modes,” e.g., going into and out of MIDI song multi record. Or, most recently, the rotary speed control (both front panel and pedal) is lost and becomes unresponsive. This tells me that more “integration level” software testing is needed. Software may be passing its unit tests, but errors are lurking when modules/subsystems interact with each other.

The Yamaha Synth folks have created a “Yamaha Synth” group on IdeaScale.com. The purpose is to collect product ideas and suggestions for the synthesizer product line. Members also cast votes in favor of suggestions made by other people. This has got to be better than the mish-mash of proposals, flames and tirades posted in the forums — and much easier for Yamaha marketing to cull. I’ll be making a suggestions or two myself… One lucky member already won the lottery with the new DAW support in v2.5!

Hope your summer is going well! I’ve been busy with tracks and charts, so there hasn’t been as much new content here. Soon, soon.

Copyright © 2018 Paul J. Drongowski

Insertion effects for MIDI songs

The new Yamaha Genos™ platform greatly expands the number of DSP insertion effects for styles and MIDI songs. No doubt, you would like to put these insertion effects to work in your own styles and MIDI songs. This blog post should help you get started.

There are 28 insertion effect units at your disposal:

  1. Insertion Effect 1 to 19: Keyboard parts (RIGHT1, etc.) and Song channels 1 to 16.
  2. Insertion Effect 20: Microphone and Song channels 1 to 16.
  3. Insertion Effect 21 to 28: Style Parts (except Audio Styles).

Within the constraints of these three groups, any Insertion Effect unit within a group may be assigned to any audio source associated with the group.

I will use the terms “Insertion Effect” and “DSP effect” interchangeably. This is true when you delve into the Yamaha XG parameters, too.

With all this flexibility, effect resource management can easily get out of control. I’ve developed a few personal guidelines to help keep things organized:

  • Genos assigns RIGHT1, RIGHT2, RIGHT3, and LEFT to Insertion Effects 16, 17, 18 and 19. Avoid using these Insertion Effect units in a MIDI Song.
  • Assign the remaining Insertion Effect units on a 1-to-1 corresponding basis: DSP unit 1 to Song part 1, DSP unit 2 to Song part 2, etc.

These simple guidelines make it easier to manage track DSP usage when doing the busy-work of Song editing.

Genos also provides a Variation Effect which can be configured as either a System effect or an Insertion Effect. Let’s not even go there for now. The Variation Effect offers additional opportunities for signal routing and control. Unfortunately, opportunity comes at the cost of complicated configuration.

If you want more information about using the Variation Effect, here’s a pair of blog posts for you: PSR/Tyros XG effects and XG effects: SYSTEM mode.

It’s simple then — each DSP unit (Insertion Effect) corresponds to a single Song part. Each unit and its part have the same identifying number.

If you’re sequencing on the Genos itself, you can assign Insertion Effects to Style and Song parts using the Mixer. Go to the Mixer, touch the “Effect” tab at the Left of the screen, and then touch the “Assign Part Setting” button. Genos displays the insertion effect assignment dialog box where you can make assignments. This dialog box is a good way to check that your MIDI sequence is making the correct assignments, too.

I do my MIDI sequencing and editing in BandLab Technologies SONAR (formerly Cakewalk SONAR). This means configuring DSP effects via System Exclusive (SysEx) MIDI messages. Many people fear SysEx because the messages are encoded in hexadecimal numbers. Fear not! I’m going to give you a head start.

At a minimum, we need to create two SysEx messages for each Insertion Effect:

  1. One message to assign the DSP unit to the Song part, and
  2. One message to select the DSP effect type (e.g., British Legend Blues).

This is enough to assign a DSP effect preset (and its algorithm) to a Song part. Once assigned and the MIDI sequence is loaded, you can edit the effect parameters in the Genos GUI by spinning the faux knobs and such. When you hear a setting that you like, you can translate the settings into additional SysEx messages and incorporate the messages into the sequence using a DAW like SONAR.

First things first. The SysEx message to assign the DSP unit to a Song part has the form:

F0 43 10 4C 03 XX 0C YY F7

where XX is the DSP (Insertion Effect) unit number and YY is the Song part number. The only potential gotcha is MIDI unit and part numbering — it starts from zero instead of one. For example, let’s assign DSP unit 6 to MIDI part 6. (I’m assuming that the MIDI part and channel numbers are the same; the usual default situation.) In this example, XX=5 and YY=5, so the final SysEx message is:

F0 43 10 4C 03 05 0C 05 F7

Straightforward.

You may already be aware that hexadecimal (hex) is a way of counting (i.e., representing numeric quantities) in base sixteen. The hex digits 0 to 9 have their usual meaning. Hex digits A, B, C, D, E, and F represent the numeric quantities 10, 11, 12, 13, 14, and 15, respectively, when those quantities are written in base 10, decimal notation. You’ll need those hex digits when connecting DSP units 10 to 16 and Song Parts 10 to 16.

In case you’re still unsure of yourself, here’s a simple table to help you out:

DSP#  Part#   SysEx message
----  -----   -----------------------------------
   1      1   F0 43 10 4C 03 00 0C 00 F7
   2      2   F0 43 10 4C 03 01 0C 01 F7
   3      3   F0 43 10 4C 03 02 0C 02 F7
   4      4   F0 43 10 4C 03 03 0C 03 F7
   5      5   F0 43 10 4C 03 04 0C 04 F7
   6      6   F0 43 10 4C 03 05 0C 05 F7
   7      7   F0 43 10 4C 03 06 0C 06 F7
   8      8   F0 43 10 4C 03 07 0C 07 F7
   9      9   F0 43 10 4C 03 08 0C 08 F7
  10     10   F0 43 10 4C 03 09 0C 09 F7
  11     11   F0 43 10 4C 03 0A 0C 0A F7
  12     12   F0 43 10 4C 03 0B 0C 0B F7
  13     13   F0 43 10 4C 03 0C 0C 0C F7
  14     14   F0 43 10 4C 03 0D 0C 0D F7
  15     15   F0 43 10 4C 03 0E 0C 0E F7
  16     16   F0 43 10 4C 03 0F 0C 0F F7

Find the row in the table for the Insertion Effect (DSP unit) number and Song Part that you want to configure. The third column is the SysEx message to use.

Once the DSP unit is assigned to the Song Part, you need a SysEx message to choose the DSP effect type (e.g., British Lead Dirty). The SysEx message to accomplish this job has the form:

F0 43 10 4C 03 XX 00 MM LL F7

where XX is the DSP unit number, MM is the MSB of the effect type and LL is the LSB of the effect type. The effect types are listed in the Genos Data List PDF file. Look under the “Variation/Assertion Block” section of the Effect Type List. British Lead Dirty is a distortion effect with MSB=102 and LSB=32.

The next step is to convert the MSB and LSB to hexadecimal. I think this is the part that scares some folks the most. Actually, Yamaha have made it easy. While you’re in the Geno Data List PDF file, go to the first “MIDI Data Format” page. You’ll find a table that converts between decimal, hexadecimal and binary. Look up 102 and 32 in the table. The equivalent hex values are 0x66 and 0x20. (The “0x” is my way of marking hexadecimal values.)

After converting, it’s time to select the DSP effect type for unit 6 (and by way of assignment, Part 6). Plug XX=5, MM=66 and LL=20 into the template message above, producing:

F0 43 10 4C 03 05 00 66 20 F7

This message sets the effect type of DSP (Insertion Effect) 6 to British Lead Dirty.

That’s it. At this point, you’re ready to assign DSP preset effects to any of the Song parts. Style parts work the same way. No calculator involved, just a few easy tables.

Changing the DSP effect parameters via SysEx is a little bit more complicated. I’ll save that topic for another day.

Copyright © 2018 Paul J. Drongowski

Which guitar is which?

I hope my recent post about single coil and double coil guitar tone and amp simulators was helpful. Today, I want to further reduce theory to practice.

A quick recap

Guitar pickups are important to overall guitar tone. There are two main types of pickup: single coil and double coil. Players generally describe the sound of a single coil pickup as bright or thin and describe the sound of a double coil pickup as warm or heavy. Double coil pickups are also called “humbuckers” because the design mitigates pickup noise and hum. Pickup tone tends to favor certain styles of music:

  • Single coil: Blues, funk, soul, pop, surf, light rock and country styles
  • Double coil (Humbucker): Hard rock, metal, punk, blues and jazz styles

Of course, there are no hard and fast rules and exceptions abound!

Fender guitars frequently use single coil pickups while Gibson favors double coil. Three guitar models are favorites and are in wide use:

  • Fender Telecaster (Usually 2 single coil pick-ups): Bright, banjo-like tone, twangy.
  • Fender Stratocaster (3 single coil pick-ups): Bright, cutting tone.
  • Gibson Les Paul (2 humbucker, dual coil pick-ups) Warm tone with sustain.

The Telecaster was originally developed in 1951 for country swing music. It was quickly adopted by early rock and rollers. The Stratocaster appeared in 1954, but is usually associated with 60s rock. It is often used in rock, blues, soul, surf and country music. The darker tone and sustain of the Les Paul make it suitable for hard rock, metal, blues and jazz styles.

These aren’t the only (in)famous guitars around. The Rickenbacker solid and semi-acoustic models are also classic. Think about the chime-y Beatles and Byrds radio hits from the 1960s. Single coil Ricks are not uncommon.

If you would like to hear the difference in raw tone between Fender Telecaster (single coil), Fender Stratocaster (single coil) and Gibson Les Paul (double coil humbucker), cruise over to this comparison video. The demonstrator compares raw tone starting at roughly 7 minutes into the video, ending at about 11 minutes. The first part of the video is the usual yacking and the last part of the video puts the guitars through an overdrive effect with the demonstrator playing over a backing track. The last part is less informative because our ears need to sort out the guitar from the backing track. Plus, once you put a guitar into a distortion effect, all bets are off. Are you hearing the true guitar tone or just an effected, synthesized tone?

Method to the madness

My ultimate goal is to identify and classify synth and arranger guitar voices, single coil vs. double coil, in order to quickly chose an appropriate guitar voice (patch) for MIDI sequencing. I work with Yamaha gear (Genos workstation, PSR-S950 arranger, and MOX6 synthesizer), so the following discussion will focus on Yamaha. However, you should be able to apply the same method (and guesswork about names!) to Korg, Nord, whoever.

Yamaha provides some major clues as to the origin of its guitar samples, but they are quite reticent to use brand names. Arranger (Genos and S950) voice names are especially opaque. Therefore, the best we can do is to use the clues when possible and to always, always use our ears.

Fortunately, the deep voice editing of the MOX6 lets me dive into the guts of a guitar patch to find the base waveform information including waveform name. In order to get the analysis started, I went into the Mega Voice patches to find the underlying waveforms. When Yamaha sample a guitar, they sample multiple articulations (open string, slap, slide, hammer on, etc.). The waveforms for a particular instrument are a family and share the same root name like “60s Clean.” Given the base waveforms, I then can identify regular synth voices which use the same waveforms. The regular voices are more easily played on the keyboard than Mega Voices, making it easier to perform A/B testing.

Mega Voices are a good entry point for analysis because the MOX, Motif and Montage family have roughly equivalent Mega Voices as the S950, Tyros and Genos product family. This allows A/B testing across and within product lines.

Development history is important, too. I took note of new Mega Voices added to each product generation. Each new Mega Voice is a new waveform family. Given a Mega Voice, I look for new Super Articulation (SArt) voices which were also added at the same time and try to find the SArt voices which are based on the Mega Voice. The chosen SArt voices become reference sounds for further A/B testing and starting points for voice selection when sequencing a song.

When A/B testing, all EQ, filter and DSP effects (including reverb and chorus) must be turned OFF. We need to reveal the sound of the underlying raw waveforms (samples). Even so, there may still be sonic differences due to VCF and VCA programming. I found that this kind of critical listening is quite tiring and it’s better to work for 30 minutes, walk away and come back later with fresh ears. Otherwise, everything starts to sound the same!

Breakdown

Enough faffing around, get to the bottom line.

First up is a correspondence table between Montage (Motif, MOX) Mega Voice guiters and Genos (Tyros, PSR S-series) Mega Voice guitars.

       Genos name            Motif/MOX name        Motif/MOX waveform
---------------------------  --------------------  ------------------
8 10 4 60sVintage                                  n/a [Strat]
8 11 4 60sVintageSlap                              n/a [Strat]
8  4 4 50sVintageFinger                            TC Cln Fing *
8  5 4 50sVintageFingerSlap                        TC Cln Fing Slap
8  6 4 50sVintagePick                              TC Cln Pick *
8  7 4 50sVintageSlap                              TC Cln Pick Slap
8  8 4 SlapAmpGuitar       
8  3 4 SingleCoilGuitar      Mega 1coil Old R&R    1Coil *
8  1 4 SolidGuitar1          Mega 60s *            60s Clean *
8  2 4 SolidGuitar2          Mega 60s *            60s Clean *
8  0 4 CleanGuitar           Mega 1coil *          Clean *
8  0 7 JazzGuitar            Mega Jazz Guitar      Jazz *
8  0 5 OverdriveGuitar       Mega Ovdr Fuzz        Overdrive *
8  0 6 DistortionGuitar      Mega Ovdr Distortion  Distortion *

A star (“*”) in the table is a placeholder for all of the voices and variants within a family. Motif/MOX have many variants of “Mega 60s” and “Mega 1coil” voices. They all use the “60s Clean” and “Clean” waveforms in different ways, including different stomp box and amplifier effects. A star in the waveform column denotes a waveform family, i.e., collectively a group of waveforms for all of the articulations sampled from the same instrument.

A few observations. Montage did not add any new guitar Mega Voices. Montage does not have a Stratocaster waveform. [A future upgrade for Montage?] Finally, I couldn’t quite work out where “SlapAmpGuitar” fit into the voice universe.

“Slap,” by the way, is a playing technique borrowed from bass players. The thumb hits a string instead of a pick or finger. Usually the lowest string is slapped because it is the most easily hit by the thumb. The slap may be combined with palm or finger muting to prevent other notes/strings from sounding with the slap.

Beyond Mega Voice

Folks know by now that Mega Voices are for styles and arpeggios. Yamaha never intended them to be played using the keyboard. It’s darn near impossible to play with the kind of precision required to trigger the appropriate articulation (waveform) when needed. They’re good for sequencing (styles, arpeggios) because a sequence can be edited in a DAW with precise control over note velocities.

None the less, musicians wanted to be able to play these great sounding voices and Yamaha responded with Expanded Articulation (Motif XS and later) and Super Articulation (Tyros 2 and later). I won’t dive into Expanded Articulation here. Super Articulation, however, effectively puts a software script in front of a Mega Voice. The script translates each player gesture to one of the several articulation waveforms which comprise a Mega Voice.

This description is notional. I doubt if the software uses an actual Mega Voice as the target. Some gestures like legato technique are handled in the AWM2 engine à la Expanded Articulation.

If you followed my suggestion to audition the Mega Voices without EQ, effects, etc., then you surely know how difficult it is to play a Mega Voice from the keyboard. Should you try this, I recommend setting the touch curve to HARD in order to hit those ultra low key velocities. Or, set RIGHT1, RIGHT2 and RIGHT3 to a fixed velocity. By changing the velocity level, you’ll be able to play a specific waveform within a Mega Voice precisely and reliably. Please refer to the Mega Voice maps in the Data List file to see the correspondence between velocity levels and waveforms.

To audition without Mega Voice and to select Genos (Tyros, S950) voices for sequencing, it’s far easier and fun to play a Super Articulation (SArt) voice. Problem is, with Yamaha’s opaque voice naming, it’s difficult to know the exact waveform family you’re triggering. So, I built a table of SArt reference voices by matching SA voices with their Mega Voice equivalent.

Genos Mega Voice      SArt reference   Waveform
--------------------  ---------------  ------------------------
60sVintage            60sVintageClean  [Strat]
60sVintageSlap        TBD              [Strat]
50sVintageFinger      CleanFingers     TC Cln Fing *
50sVintageFingerSlap  FingerSlapSlide  TC Cln Fing Slap
50sVintagePick        VintageWarm      TC Cln Pick *
50sVintageSlap        TBD              TC Cln Pick Slap
SlapAmpGuitar         TBD              TC Cln Fing Slap Amp/Lin
SingleCoilGuitar      SingleCoilClean  1Coil *
SolidGuitar1          WarmSolid        60s Clean *
SolidGuitar2          WarmSoild        60s Clean *
CleanGuitar           CleanSolid       Clean *
JazzGuitar            JazzClean        Jazz *
OverdriveGuitar       TBD              Overdrive *
DistortionGuitar      HeavyRockGuitar  Distortion *

Single coil vs. double coil? That’s easy. The only double coil guitars are SolidGuitar1, SolidGuitar2, and any SArt voice built on the 60s Clean waveform. All other guitars are single coil.

Hmmm. I’ll bet that a double coil Gibson Les Paul and/or Gibson SG are in the works. Yamaha will eventually fill the gap!

A few entries in the table are TBD, “to be determined.” Definitively identifying slap guitar has eluded me so far. I can hear a difference between non-slap and slap, but finger slap vs. picked slap, my ears aren’t there yet.

All in all, it was a useful exercise to strip away the effects and EQ. It reminds me of the scene in the documentary “It Might Get Loud” in which The Edge demonstrates his effects pedal board. First, the plain tone of the guitar, then the huge sound with all of the effects piled on. Thanks to the tech built into our keyboards, we can be a little bit like The Edge.

Copyright © 2018 Paul J. Drongowski

Single coil, double coil

Today’s exploration is practical even if it is excessively wonk-ish.

Last week, I decided to update MIDI sequences for a few classic tunes by The Alan Parsons Project. Parsons and Eric Woolfson laid down 70s progressive rock tracks with serious groove: “I Wouldn’t Want To Be Like You,” “What Goes Up”, and “Breakdown”. Classic in their own right are the guitar solos by Ian Bairnson. Bairnson contributed electric guitar (and the occasional saxophone!) to the Parsons/Woolfson wonder duo.

I’m striving for authenticity, so one of the first questions to ask is “What guitars and amplifiers did Bairnson use for the I Robot and Pyramid albums?” Fortunately, Ian has a page dedicated to his gear. Very likely, he played a Les Paul Custom through a Marshall 50 head driving a 4×12 Marshall angle-front cabinet. Thanks for posting this information, Ian!

The next hurdle is searching through the many tens (or hundreds) of synth guitar patches, amp simulators and speaker cabinet sims to find the most authentic audio waveforms and signal processing effects. Bang, we run into a practical and wonk-ish problem: Which of these many digital choices are likely candidates and which choices can we ignore? Unfortunately, manufacturers (at the very least, their attorneys) make the search difficult by avoiding any use of brand names (e.g., Gibson, Fender, Les Paul, etc.) in patch and effect names. Sometimes the patch/effect names are suggestive euphemisms, most times not.

For these kinds of sequencing jobs, I’m arranging on Yamaha gear, either PSR-S950 or Genos. Although I love their sound, it’s seems that Yamaha have deliberately gone out of their way to divorce patch/effect names from their real-world, branded counterparts. The number of candidates is small in organ-land, i.e., “Organ flutes,” as Yamaha calls them, mean Hammond B-3. The number of candidates in guitar-land is much, much larger and harder to discern.

Here’s some info that might help you out. Kind of decoder for guitar instrument and amp/cabinet sim names. Even though I looked to authoritative sources, there’s still guesswork involved. So, apologies up front if I’ve led anyone astray.

Single vs. double coil

This is a biggy. Guitarists are ever in pursuit of “tone.” Of course, a big part of tone is the electric guitar at the front-end of the signal chain. In this analysis, I’m concentrating mainly on solid body guitars and I’m ignoring acoustic, hollow-body and semi-hollow instruments.

Some might argue that player style, articulations and dynamics are the true front-end. If you want to argue that point, please go to a guitar forum. 🙂

For solid body, the choice of pick-up is important. If you’re not familiar with electric guitars, the pick-up is the set of wire coils beneath the guitar strings that sense vibrating strings and convert mechanical vibration to electrical vibration. The electrical signal is sent to a volume/tone circuit and then on to a guitar amplifier. A guitar may have more than one pick-up, say, one pick-up by the neck, one under the bridge and one in the middle between the two. The pick-ups may be switched into alternative combinations. Along with the volume/tone controls, the tonal possibilities are nearly endless.

Seems kind of pathetic to rely on only one or a few guitar waveforms (samples), doesn’t it?

There are two main kinds of pick-up: single coil and double coil (humbucker). The humbucker was invented and patented by Gibson as a means of mitigating the noise (hum) present produced by a single coil pickup. The sound of a single coil pick-up is often described with terms like “bright,” “crisp,” “bite,” “attack.” Double coil pick-ups are described as “thick,” “round,” “warm,” “dark,” “heavy.”

Due to parentage, Gibson guitars usually have double coil pick-ups. Fender guitars usually have single coil pick-ups. Naturally, the quest for tone has led to hybrids using both kinds of pick-up, regardless of manufacturer.

Reducing these observations to practice, when Ian Bairnston says he used a Gibson Les Paul Custom for his work with The Alan Parsons Project, we should be looking for samples (waveforms) of a double coil electric guitar, of which the Les Paul is an excellent example. Even if you couldn’t give two wits about synth patch names, use your ears an listen for a thick, round, warm, dark, heavy tone.

Detective work

OK, I’m a wonk and did a little detective work.

Yamaha arranger patch names are obtuse about single vs. double, etc. Worse, the voices are pre-programmed with DSP effects which mask the characteristics of the fundamental waveform. So, step zero is to be aware of the masking and turn off all EQ, DSP, chorus and reverb effects when listening and making comparisons.

Doubly worse is the lack of deep voice editing where we can deep dive a voice and discover the basic waveforms underlying a voice patch, including the waveform names. This is where my trusty Yamaha MOX6 synthesizer comes into play. I use the MOX6 to deep dive its patches and then compare patch elements against candidate voices on the PSR-S950 arranger. This always leads to interesting discoveries.

Although I refer to the MOX specifically, please remember that the MOX is a member of the Motif/MOX family. Comments can be extrapolated to the Motif XS on which the MOX is based, and the Motif XF/MOXF which are a superset of the Motif XS/MOX.

A large number of MOX programs have “Dual Coil” in their name. These programs are based on the “60s Clean” waveforms. Think of “60s Clean” as a family of waveforms with multiple articulations: open strings, slide, slap, FX, etc.

Other MOX programs are “Single Coil”. These programs are based on the “Clean” family of waveforms. If you listen and compare “60s Clean” versus “Clean,” you can hear the difference between single coil and double coil. The voice programming switches between the waveforms depending on key velocity, articulation buttons, and so forth.

The “60s Clean” and “Clean” waveform families make up the “Mega 60s Clean” and “Mega 1coil Clean” MOX megavoices, respectively. Please recall that a MegaVoice uses velocity switching, articulation switches (AF1 and AF2) and note ranges to configure a versatile voice suitable for arpeggio and style sequencing. Given the underlying waveforms, we can conclude that Mega 60s Clean is dual coil and Mega 1coil Clean is single coil.

Mid- and upper-range Yamaha arranger workstations also have MegaVoices, albeit they may have small differences in patch programming. The fundamental waveforms, however, are the same. Yamaha, like all manufacturers, recycle waveforms (samples). It’s not that older waveforms are bad; they provide backward compatibility and legacy support. Ever increasing waveform memory capacity makes it easy and inexpensive to include legacy waveforms and voices.

Given that conceptual basis, I did a little A/B testing between the MOX synth and the S950 arranger. Here is a summary of the correspondence between guitar voices:

    PSR-S950 Voice     MOX6 Voice
    -----------------  ---------------------
    MV CleanGuitar     Mega 1coil Clean

    MV SolidGuitar1    Mega 60s Clean
    MV SolidGuitar2    Mega 60s Clean

    MV SingleCoil      n/a
    MV JazzGuitar      n/a

    MV OverdriveGtr    Mega Ovdr Fuzz
    MV DistortionGtr   Mega Ovdr Distortion

    MV SteelGuitar     Mega Steel
    MV NylonGuitar     Mega Nylon

This is what my ears tell me when all of the EQ, DSP, chorus and reverb effects OFF.

MV SolidGuitar1 and MV SolidGuitar2 are based on the same waveform. The patch programming is different: different EQ, VCF and VCA parameter values. The default DSP effects are different, too.

Naturally, you’re curious about the missing S950 MV SingleCoil and MV JazzGuitar voices in the MOX6 column of the table. The MOX does not have equivalent voices. However, the Motif XF eventually added “Mega 1coil Old R&R” and “Mega Jazz Guitar”, both patches based on new single coil and jazz guitar waveform families. Indeed, the MV SingleCoil is great for that old rock’n’roll twang.

Hey, S950 owners! I’ll bet that you didn’t know that you have a piece of the Motif XF under your fingertips.

[I’m still categorizing SArt voices as single or double coil. Watch this space.]

Amplify this!

That’s it for the front-end of the signal chain. What about amp simulation?

The riddle of amp sim names is difficult to solve. Fortunately, guitarists are positively obsessive about vintage amps and the Web has many informative sites. (Too many, perhaps?) Armed with a few clues from the Yamaha Synth site, I forged out onto the Web and arrived at these educated guesses about amp simulators:

    DSP effect/sim      Real-world
    ------------------  ---------------------------------
    US Combo            Fender (Bassman?)
    Jazz Combo          Roland Jazz Chorus
    US High Gain        Boutique (Mesa Boogie Rectifier?)
    British Lead        Marshall Plexi
    British Combo       Vox (AC30)
    British Legend      Marshall (Bluesbreaker? JCM800?)
    Tweed Guy           Fender 55 Tweed Deluxe
    Boutique DC         Matchless DC30 (Boutique AC30)
    Y-Amp               Yamaha V-Amp
    DISTOMP             Yamaha stomp pedal FX
    80s Small Box       No specific make/model
    Small Stereo Dist   No specific make/model
    MultiFX             No specific make/model

The list compares quite favorably with Guitar World’s 10 most iconic guitar amplifiers:

    Vox AC30 Top Boost (1x12, 2x12)                 1958
    Fender Deluxe (1950s tweed)                     1955-1960
    Mesa/Boogie Dual Rectifier                      1989
    Marshall JCM800                                 1981
    Marshall 1959 Super Lead 100 Watt Plexi (4x12)  1965
    Roland JC-120 Jazz Chorus (2x12)                1975
    Peavey 5150 (2004: 6505)                        1992
    Fender Twin Reverb                              1965-1967
    Fender Bassman (4x10)                           1957-1960
    Hiwatt DR103 (4x12)                             1972

Several of the amp sims include cabinet simulation, too. Here are my guesses:

    DSP Sim  Real-world
    -------  --------------------------------
    BS 4x12  British stack (Marshall)
    AC 2x12  American combo (Fender?)
    AC 1x12  American combo (Fender?)
    AC 4x10  American combo (Fender?)
    BC 2x12  British combo (Vox?)
    AM 4x12  American modern (Mesa Boogie?)
    YC 4x12  Yamaha
    JC 2x12  Roland Jazz Chorus
    OC 2x12  Orange combo
    OC 1x8   Orange combo

The abbreviations “BS” and “AC” are potentially confusing. “AC” suggests the (in)famous AC series of Vox amps. “BS” suggests “Bassman”. However, I don’t recall a Vox AC 4×10, while the Fender 4×10 is iconic. A Yamaha site spelled out “BS” as “British Stack,” so I’m sticking with “A” for American and “B” for “British”.

Back to Bairnson, I’m trying the British Legend amp sim with a BS 4×12 cabinet first, then tweak.

I hope you enjoyed this somewhat wonk-ish walk through synthesizer and simulated guitar-ville. In the end, it’s tone that matters and let the ears decide.

Copyright © 2018 Paul J. Drongowski

Audio Style file format

Yamaha introduced audio styles in the PSR-S950 arranger workstation. Audio styles are both loved and hated. Loved when they sound good, but hated when people try to change or repurpose them in new styles.

The term “audio style” is a bit of an overstatement. Only the percussion track is audio. At least, that’s how audio styles have been developed and used to this day. Yamaha just released the Audio Phraser application for creating and editing the basic skeleton of an audio style, so this situation may change now that people can more freely create, edit and share their own audio styles.

Audio style file internal format

Ever since Yamaha distributed the audio styles for Genos, I’ve been meaning to take a look inside of an audio style file. Here’s a little preliminary information.

An audio style file is an IFF-like container just like a Standard MIDI File (SMF). In fact, an audio style file has the same internal organization as a regular style file which we know to be a Type 0 SMF with extra chunks.

An audio style file has the following chunks (in order):

    Type    Purpose
    ----    ------------------------------------
    MThd    SMF header chunk
    MTrk    SMF track chunk
    CASM    Yamaha CASM chunk
    AASM    Audio assembly (descriptor) chunk
    AFil    Audio file (waveform) chunk
    OTSc    Yamaha OTS chunk

The AASM and AFil chunks are new, additional chunks beyond the known MIDI, CASM and OTS chunks. All chunks have a four byte chunk identifier and a four byte chunk size. The chunk size does not include the identifier or chunk size bytes, as usual.

The AASM chunk is relatively small, about 2,500 bytes. It consists of 15 variable length ASEG subchunks. The ASEG subchunk has a four byte subchunk size. Each ASEG corresponds to a style section; that’s why there are fifteen of them.

An ASEG subchunk has three parts:

    Type    Purpose
    ----    ------------------------------------
    Adec    Identifies the style section
    Atab    Identifies the audio file; other functions unknown
    AMix    Function unknown

The Adec part is variable length, having an explicit four byte size. The Atab and AMix parts appears to be fixed length (101 and 28 bytes, respectively) and do not have an explicit size field.

The Adec part is ASCII text and is a style section name like “Main A” or “Fill In DD”. That is the only information in Adec.

I don’t know exactly what the Atab does. The Atab part contains an ASCII string which identifies the audio file associated with the style section. This string is clearly visible in a dump. (Example below.) All of the Atab and AMix parts in the test audio file have the same values except for the audio file names.

File Offset:       36965
Subchunk type:     'ASEG'
Subchunk size:     151
Section name:      Main D
Atab type:         'Atab'
   0    0    0   97    0   32   32   32 | 00 00 00 61 00 20 20 20 | ...a.
  32   32   32   32   32   41   56   48 | 20 20 20 20 20 29 38 30 |      )80
 115   67   97  110   97  100  105   97 | 73 43 61 6E 61 64 69 61 | sCanadia
 110   82  111   99  107   95   77   97 | 6E 52 6F 63 6B 5F 4D 61 | nRock_Ma
 105  110   32   68    0    0    0    0 | 69 6E 20 44 00 00 00 00 | in D....
   0    0    0    0    0    0    0    0 | 00 00 00 00 00 00 00 00 | ........
   0    0    0    0    0    0    0    0 | 00 00 00 00 00 00 00 00 | ........
   0    0    0    0    0    0    0    0 | 00 00 00 00 00 00 00 00 | ........
   1   15   -1    7   -1   -1   -1   -1 | 01 0F FF 07 FF FF FF FF | ........
   0    0    0  127    0    0    0    0 | 00 00 00 7F 00 00 00 00 | ........
 127    0    0    0    0    0  127    0 | 7F 00 00 00 00 00 7F 00 | ........
   0    0    0    0  127    0    0    0 | 00 00 00 00 7F 00 00 00 | ........
   0    0    0    0    0    0    0    0 | 00 00 00 00 00 00 00 00 | ........
AMix type:         'AMix'
   0    0    0   24    7 -128    0   -1 | 00 00 00 18 07 80 00 FF | ........
  88    4    4    2   24    8    0  -80 | 58 04 04 02 18 08 00 B0 | X.......
   7   71    0   10   64    0   91    0 | 07 47 00 0A 40 00 5B 00 | .G..@.[.
   0   -1   47    0    0    0    0    0 | 00 FF 2F 00 00 00 00 00 | ../.....

Etienne from the PSR Tutorial Forum points out that the AMix subchunk contains MIDI event codes:

AMix : header
00 00 00 18 : length of data
07 80 : 0780 hex = 1920 decimal (PPQN ?)
00 : delta time
FF 58 04 04 02 18 08 : meta event Time signature 4/4
00 : delta time
0B 07 70 : controller volume
00 : delta time
0A 40 : controller Panpot
00 : delta time
5B 00 : Controller Reverb send level
00 : delta time
FF 2F 00 : end of MTrk trunk

Nice catch, Etienne! The AMix content makes sense because something needs to set up the channel volume, pan and reverb level for the audio phrase. Yamaha love to use MIDI events for other purposes (like voice files, OTS, etc.) Why not?

The AFil chunk has substructure, too. The AFil chunk consists of ADSg chunks. As you might guess, the AFil chunk is pretty big because it contains waveform data.

The following table shows the offset and length information for the first ADSg in the example’s AFil:

    AFil     37287  15261858
    ADSg     37295   1219275      Container for an audio file
    ANdc     37303        50      File name
    AWav     37361   1219209      Container for audio waveform
    WAVE     37369       n/a      Marker (no subchunk size)
    Afmt     37373        16      Audio format information
    Sfmt     37397       217      Container for section information
    Sdec     37608         6      Section name, e.g., Main A
    Adat     37622   1218300      Waveform data
    AInf   1255930       640      Container for audio information
    BPnt   1255938       136
    OPnt   1256082       240
    APnt   1256330       232
    ATmp   1256570         0      Empty, subchunk size is 0
    ADSg   1256578                Container for the next audio file
    ....

The container relationships are important because the containers and subchunks are nested:

    AFil contains ADSg
    ADSg contains ANdc, AWav
    AWav contains WAVE, Afmt, Sfmt, Sdec, Adat, AInf
    AInf contains BPnt, OPnt, APnt, ATmp

The nesting is a bit of a pain in the patootie when writing code to parse a style file.

ADSg is the container chunk holding audio waveform (meta-)information. Like ASEG, there are fifteen ADSg chunks — one for each audio file. The ANdc subchunk inside contains the audio file name which matches up with the name in the ASEG. AWav is the container holding the audio waveform data itself.

The audio “file” format is WAV-like, but it is not exactly WAV (Microsoft RIFF). I was able to playback the audio by importing the audio style file as a raw (untyped) audio file. The audio format seems to be 44,100Hz, 16-bit stereo, big endian. No compression or encryption. It isn’t be too hard to dump the audio.

Yamaha Audio Phraser

Now that you know a little bit about what’s inside of an audio style file, here is brief overview of what the Audio Phraser program generates.

Audio Phraser generates an MThd MIDI file header chunk, a single MTrk chunk (Type 0), an ASEG chunk for each audio waveform, an AFil chunk (containing an ADSg subchunk for each audio file) and a CASM chunk.

The MIDI tempo and time signature are the same as the tempo set in Audio Phraser. The MIDI song title is set to “Audio Phraser”.

The MIDI track contains the usual markers at the beginning: SFF2 and SInt. A single SysEx message is generated after SInt: General MIDI System ON (F0 7E 7F 09 01 F7). The key signature is set to C/Am, followed by:

  • SMPTE Offset
  • Sequencer specific metadata: ff 7f 04 43 00 01 00 00

Oddly, MIDI channel 4 has four, whack-looking MIDI OFF events:

    NOTE OFF G#9
    NOTE OFF G5
    NOTE OFF C0
    NOTE OFF C0

A bug? The remaining markers indicate the start of the style sections. The section length corresponds to the length of the audio waveform for the section. Thus, if the audio waveform for “Main A” is 2 bars, then the MIDI section for “Main A” is 2 bars long.

The CASM chunk is minimal and sets NTR/NTT for MIDI channel 9 (Subrhythm). NTR is “Root Fixed” and NTT is “Bypass/Bass Off”. No NTR/NTT is given for channel 10 (rhythm/drums).

Audio Phraser does not generate an OTSc (One Touch Settings) chunk.

Audio Phraser creates an AWI file for each waveform that it imports into an audio style file. The AWI file most likely holds the results of Audio Phraser’s analysis (i.e., beat detection and so forth). It would be interesting and informative to compare the contents of an AWI file against the ASEG and AInf chunks in the resulting audio style file. I’m guessing that the AWI file is the “prototype” for the ASEG and AInf chunks.

Java source code

If you would like to explore audio style files, then download the source code for a simple audio style dump program. The code is relatively brittle and expects to encounter chunks in a certain order and/or quantity. Thus, be prepared to modify the code. This is an experimenter’s kit, after all. 😉

Copyright © 2018 Paul J. Drongowski

Code: Display Genos UVF voice info

February and March have proven to be a very busy months. On top of everything, the weather in the U.S. Northeast has been atrocious and we have suffered through long power outages. One rapidly realizes how dependent we are on electricity for light, heating and even water. Our house has its own well and we lose water, too, when we lose power.

If you read my series of articles about Yamaha Genos™ voice editing with Yamaha Expansion Manager (YEM), you’re aware that Yamaha store voice information in UVF files. “UVF” (most likely) stands for “Universal Voice File” because UVF is able to represent the voice information supporting many kinds of Yamaha synthesis. YEM ships with UVF files for normal, sample-playback voices.

YEM does not display all of the voice information in a UVF file. As we saw in the tutorial series, many voice parameters cannot be seen or modified in YEM.

Since UVF is XML with predefined tags, I wrote a quick and dirty Java program to display the voice information in a UVF file. I meant to clean up and extend the code, but life has just gotten away from me. I’m posting the code here in order to encourage other folks to experiment with UVF.

//
// Display voice information in a Yamaha UVF (XML) file
//

// Author:  P.J. Drongowski
// Version: 0.1
// Date:    9 February 2018
//
// Copyright (c) 2018 Paul J. Drongowski
//               Permission explicitly granted to modify and distribute


import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.w3c.dom.Node;
import org.w3c.dom.Element;
import java.io.File;

public class ShowVoice {

    public static void main(String argv[]) {

	String voiceName ;
	String veNumber ;
	String veName ;
	String veVolume ;
	String vePan ;
	String veNoteShift ;
	String veNoteLimitHi ;
	String veNoteLimitLo ;
	String veVelocityLimitHi ;
	String veVelocityLimitLo ;
	String veWaveform ;

	try {

	    File fXmlFile = new File("Clarinet&Flutes.uvf") ;
	    DocumentBuilderFactory dbFactory = 
		DocumentBuilderFactory.newInstance() ;
	    DocumentBuilder dBuilder = dbFactory.newDocumentBuilder() ;
	    Document doc = dBuilder.parse(fXmlFile) ;

	    // Normalize text nodes
	    doc.getDocumentElement().normalize() ;

	    System.out.println("Root element: " + 
			       doc.getDocumentElement().getNodeName()) ;

	    NodeList vList = doc.getElementsByTagName("information") ;
	    Node vn = vList.item(0) ;
	    Element ve = (Element) vList.item(0) ;
	    voiceName = ve.getElementsByTagName("voiceName").item(0).getTextContent() ;
	    System.out.println("Voice: " + voiceName) ;
	    System.out.println("----------------------------") ;

	    NodeList nList = doc.getElementsByTagName("voiceElement") ;

	    for (int temp = 0; temp < nList.getLength(); temp++) {
		Node n = nList.item(temp) ;

		if (n.getNodeType() == Node.ELEMENT_NODE) {
		    Element e = (Element) n ;

		    veNumber = e.getAttribute("number") ;
		    veName = e.getElementsByTagName("name").item(0).getTextContent() ;
		    veVolume = e.getElementsByTagName("volume").item(0).getTextContent() ;
		    vePan = e.getElementsByTagName("pan").item(0).getTextContent() ;
		    veNoteShift = e.getElementsByTagName("noteShift").item(0).getTextContent() ;
		    veNoteLimitHi = e.getElementsByTagName("noteLimitHi").item(0).getTextContent() ;
		    veNoteLimitLo = e.getElementsByTagName("noteLimitLo").item(0).getTextContent() ;
		    veVelocityLimitHi = e.getElementsByTagName("velocityLimitHi").item(0).getTextContent() ;
		    veVelocityLimitLo = e.getElementsByTagName("velocityLimitLo").item(0).getTextContent() ;

		    Element ew = (Element) e.getElementsByTagName("presetWaveformProduct").item(0) ;
		    veWaveform = ew.getElementsByTagName("number").item(0).getTextContent() ;

		    System.out.println(veNumber + " " +
				       veName + " " + 
				       veVolume + " " +
				       vePan + " " +
				       veNoteShift + " " +
				       veNoteLimitLo + " " + 
				       veNoteLimitHi + " " + 
				       veVelocityLimitLo + " " + 
				       veVelocityLimitHi + " " + 
				       veWaveform) ;
		}
	    }
	} catch (Exception e) {
	    e.printStackTrace() ;
	}
    }
}