ChordPro auto-accompaniment: Uses

The ChordPro to Yamaha auto-accompaniment program, cp2mid, translates an extended ChordPro song file to a MIDI file containing Yamaha-compatible auto-accompaniment messages. The MIDI file is compatible with recent mid- and high-end Yamaha arranger workstations like Yamaha Genos™. Once you transfer the MIDI file to the arranger, it plays like any other Standard MIDI File (SMF). Instead of directly playing notes, however, it tells the arranger’s auto-accompaniment engine what to play: the style, the tempo, the chords and the section (intro, main, fill in, or ending). The arranger displays chords and lyrics in sync with play-back.

What can you do with ChordPro auto-accompaniment? Here’s a few ideas.

Play along with a song from the Web

ChordPro is one of the most widely used song formats on the Web. Pros and punters alike use ChordPro as shorthand lead sheets. You’ve probably seen formatted ChordPro songs like:

 G      G7          C         G 
Amazing Grace! (how sweet the sound)
D
That saved a wretch like me!
G G7 C G
I once was lost, but now am found,
Em D G
Was blind, but now I see.

Presumably, a musician is already familiar with the song’s tempo and melody, needing only to follow and change chords in time.

In extended ChordPro, the chords are embedded within the lyric text:

[G]Amazing [G7] Grace! (how [C] sweet the [G] sound) 
That [G] saved a [G]wretch like [D] me! [D]
I [G] once was [G7] lost, but [C] now am [G] found,
Was [Em] blind, but [D] now I [G] see. [G]

Chords are surrounded by square brackets. Here, we assume each chord is held for a single measure. Songs on the Web are very loose (flexible!) about time. Auto-accompaniment, however, is precise. You will probably need to tighten up timing when using a song file from the Web.

You’ll also see ChordPro directives in song files:

{title: Amazing Grace }   
{key: D}
{artist: Munsoncovers}

Directives express song meta-data and control formatting. Extended ChordPro adds a few new directives for auto-accompaniment:

{title: Amazing Grace }   
{key: D}
{artist: Munsoncovers}
{time: 3/4}
{comment: SouthernGospel is stylecode 7812 3/4}
{stylecode: 7812}
{tempo: 90}
{start_accomp}

You’ll want to add the time signature, tempo, stylecode, and start_accomp directives to the song. The stylecode directive selects one of the hundreds of built-in arranger styles. (A convenient list of codes is included in the distribution.)

You can always leave out the stylecode and select the accompaniment style on the arranger keyboard itself. You can choose one of the preset styles or user styles. Thus, you can try out different arrangements or use a style of your own design.

Finally, extended ChordPro allows annotations which select an accompaniment section like an intro, main, fill-in or ending. Here is “Amazing Grace” ready to go:

{title: Amazing Grace }  
{key: D}
{artist: Munsoncovers}
{time: 3/4}
{comment: SouthernGospel is stylecode 7812 3/4}
{stylecode: 7812}
{tempo: 90}
{start_accomp}

# Introduction
[G][*IA]

# Verse
[G][*MA] Amazing [G7] Grace! (how [C] sweet the [G] sound)
That [G] saved a [G]wretch like [D] me! [D][*FA]
I [G][*MA] once was [G7] lost, but [C] now am [G] found,
Was [Em] blind, but [D] now I [G] see. [G][*FA]

# Ending
[G][*EA]

Don’t forget to turn on the Lyric or Score display. Song chords and lyrics are displayed during play-back.

Jam

Auto-accompaniment is a tireless band! Plug in some chords and play along.

Here is a fast blues shuffle. Copy and paste the 12-bar sections as many times as you like. Change the accompaniment sections to build up energy as the tune progresses.

{title: Shuffle Blues}   
{key: C}
{time: 4/4}
# Style: BluesShuffle (3685)
{stylecode: 3685}
{tempo: 120}

{start_accomp}
[C][*IA]

{start_of_instrumental}
[C][*MA] [C] [C] [C7][*FA]
[F][*MA] [F7] [C] [C7][*FA]
[G7][*MA] [F] [C] [G7][*FC]
{end_of_instrumental}

{start_of_instrumental}
[C][*MB] [C] [C] [C7][*FB]
[F][*MB] [F7] [C] [C7][*FB]
[G7][*MB] [F] [C] [G7][*FC]
{end_of_instrumental}

[C7][*EA]

Experiment with different intros: [*IA], [*IB] or [*IC]. Try different endings: [*EA], [*EB] or [*EC]. An intro or ending will follow the preceding chord as if you played it on the keyboard itself. Generally, the A variations are one measure long. Length of the B and C variations depend on the chosen style. You will need to specify the root chord for each measure in order to keep play-back in sync.

Write a song of your own

Why not write a song of your own? Yamaha’s built-in Chord Step Edit is too detailed and clunky for songwriting. Use cp2mid instead.

{title: Minor Blues}   
{key: Cm}
{time: 4/4}
# Style: SlowBlues (7810)
{stylecode: 7810}
{tempo: 90}

{start_accomp}
[Cm7][*IA]

[Cm7][*MA] My baby left me. [Cm7] [Cm7] Now I'm all alone. [Cm7][*FA]
[Fm7][*MA] My baby left me. [Fm7] [Cm7] And I'm all alone. [Cm7][*FA]
[Ab7][*MA] I still love her, [G7] [Cm7] Won't answer the phone. [Cm7][*FC]

[Cm7][*MB] It's about money, [Cm7] [Cm7] I know it's true. [Cm7][*FB]
[Fm7][*MB] It's about money, [Fm7] [Cm7] I know it's true. [Cm7][*FB]
[Ab7b5][*MB] Can't keep a job, [G7] [Cm7] I am so blue. [Cm7][*FC]

[Cm7][*EA]

It’s easy to change the chord progressions and song structure. Plus, the lyrics are all in front of you. Once the song is loaded, you have the freedom to change the tempo and style on the keyboard. Unlike Chord Step Edit, you can manually choose a user style; you aren’t limited to the preset styles.

Turn on Lyric or Score display. You’ll be able to sing and play along with your new song!

Copyright © 2022 Paul J. Drongowski

ChordPro auto-accompaniment: Implementation notes

I’m prep’ing my ChordPro to Yamaha accompaniment program (cp2mid) for distribution. Please check out the demo. In the meantime, here are a few comments about the implementation.

Command line interface

cp2mid doesn’t have a fancy graphical user interface (GUI). A GUI is too much for a simple tool that translates an extended ChordPro file into a Standard MIDI File (Type 0).

I’m distributing both Java source code and a JAR file. The JAR file contains the compiled Java — the Java executable, if you will. “JAR” is an acronym for “Java Archive” and is produced by the Java archive program (jar), which is part of the Java development environment (JDK). JAR is a way to package up a compiled Java program, hiding all of the interior classes, etc. An end user doesn’t really need to know about JAR.

Given the JAR file, enter the following command line to run cp2mid:

    java -jar cp2mid.jar AFile.cho

“AFile.cho” is the name of an extended ChordPro file to be translated. You can hide the cp2mid.jar file within a Windows BAT file or shell file. Here is cp2mid.bat:

    java -jar cp2mid.jar %1

Nothing complicated, here.

cp2mid recognizes the “.cho” file name extension. It does not recognize any other extensions. If you snag a ChordPro file from the Web, you may need to change its extension to “.cho”. cp2mid replaces “.cho” with “.mid” in order to make the MIDI file name. Thus, “AFile.cho” is translated to “AFile.mid”.

During development and testing, you can run cp2mid starting with the compiled classes, e.g., cp2mid.class. Enter the command line:

    java cp2mid AFile.cho

to run cp2mid. The Java interpreter will look for “cp2mid.class” and the rest of the compiled classes needed by cp2mid. These compiled classes must be available in the same directory as cp2mid.class. “cp2mid”, by the way, is the main class in the application. You’ll need to specify the main class when creating a JAR file. Again, these steps are relevant only to developers.

Java classes

cp2mid has five Java classes:

  • cp2mid (cp2mid.java) Main class and driver
  • SongElement (SongElement.java) Basic element (parts) of a Song
  • Song (Song.java) Represents a ChordPro song in terms of SongElements
  • Song2mid (Song2mid.java) Translates the internal song representation to MIDI
  • MidiFile (MidiFile.java) Represents and manipulates a standard MIDI File (SMF)

The MidiFile class was used in an earlier prototype and still contains a bit of unused legacy code. This may change in future versions. The MidiFile class exploits the standard Java MIDI packages and classes. It creates a MIDI file and inserts MIDI messages (meta, SysEx and otherwise) into a MIDI file.

cp2mid is the boss. It calls on the other classes to do their jobs. Processing is broken into five phases:

  1. Check and manipulate file names.
  2. Read the ChordPro file into a String array, one line per array element.
  3. Translate each line into one or more SongElements.
  4. Translate the SongElements into MIDI.
  5. Write the internal MIDI representation to a Type 0 SMF.

The translation phases do the heavy lifting.

Song and song elements

A Song is a list of SongElements. A SongElement represents one of several ChordPro song constituents:

  • Directive
  • Chord
  • Lyric
  • Line
  • Annotation
  • Comment
  • Tab

All SongElements have the same data members. Each SongElement has a tag which identifies its type. The type determines the validity and interpretation of the other data members.

The Song class translates extended ChordPro to a list of SongElements. This is, effectively, the intermediate, internal representation of a ChordPro song.

ChordPro directives begin with ‘{‘ and end with ‘}’. Usually ChordPro directives control song formating. Extended ChordPro uses key, tempo, time signature, style code, start accompaniment and stop accompaniment directives to issue MIDI messages that will control the accompaniment engine when the MIDI file is played back.

ChordPro chords and lyrics are what it’s all about. Chords begin with ‘[‘ and end with ‘]’. Chords are extended by an optional beat count which specifies how long the chord is held. A lyric is text and may be multiple syllables long (i.e., anything up to the next chord, annotation, or end of line.)

A line element is a marker for important end-of-lines. Line elements affect lyric formating.

Normally, a ChordPro annotation is text added to a song when it is displayed. Annotations begin with ‘*[‘ and end with ‘]’. Certain predefined annotations, e.g., [*MA], [*FA], etc. change the accompaniment section during play-back.

Comments are just that. cp2mid saves the text, but doesn’t do anything with it.

A ChordPro song may contain guitar tablature (tab). Right now, cp2mid ignores tablature. This has not been tested. I’m not sure how to handle or translate tablature as yet.

Song to MIDI

The Song2mid class translates the internal intermediate song representation to MIDI messages and adds the MIDI messages to a MIDI sequence. The MidiFile class helper functions create specific types of messages. Base MIDI message and sequence classes belong to the standard Java MIDI package.

The Song2mid class walks the SongElement list from front to back. Based on element type, it dispatches to an element type-specific handler. The handler adds one or more MIDI messages to the sequence.

A separate blog post describes the MIDI messages.

I tried to encapsulate most of the “Yamaha-ness” in the Song2mid and MidiFile classes. ChordPro is very loose and forgiving when it comes to chord syntax. Song2mid recognizes only the 33 or so Yamaha chord types as defined in the Genos Data List PDF. If Song2mid doesn’t recognize a chord, it issues either a major or minor triad.

Example songs

I will distribute 15 example songs in extended ChordPro and MIDI format. Even if you don’t run cp2mid (or look at its implementation), please take a look at the extended ChordPro songs and try the MIDI files on your arranger. All sorts of fun and crazy things happen in real music (key changes, time signature changes, anticipation) and the examples demonstrate how to handle many exceptional situations. I chose certain songs as examples for testing because they are weird. 🙂

I tested the MIDI files on Genos and I’m curious about their behavior on other arranger keyboards. The MIDI files are similar to those generated by Yamaha ChordTracker. If your arranger plays ChordTracker MIDI files, it should play cp2mid MIDI files.

I don’t want to lead you on — it takes a fair bit of effort to take an Internet ChordPro file and whip it into shape. ChordPro as a formating tool is very lenient and forgiving. Accompaniment requires tighter semantics and precision like most “executable” computer stuff. It’s fun to whip a song into shape, but it requires work.

Copyright © 2022 Paul J. Drongowski

ChordPro to MIDI accompaniment: Demo

Work continues on my Java program to translate ChordPro songs to Yamaha accompaniment (SMF). The code is fairly stable and mostly I’ve been writing example songs in ChordPro format for testing. The range and variety of musical craziness is amazing: weird chords (“Superstition”, “Michelle”), changing time signatures (“Two Of Us”), changing key signatures (“My Girl”), unusual time signature (“Everybody Wants To Rule The World”), and more.

Today, I want to give a taste of what to expect. I plan to distribute the Java executable as a “jar” file and will also make the source code available. To keep things simple, the program runs from a command line — no graphical user interface:

    java -jar cp2mid.jar ItsTooLate.cho

The program is named “cp2mid” and “cp2mid.jar” is the Java executable. We need to invoke java explicitly because it is an interpreted language and the executable consists of Java bytecodes.

The above command produces a Type 0 Standard MIDI File (SMF) named “ItsTooLate.mid”. This file must be sent to a Yamaha arranger like Genos™ by whatever means you have at your disposal, i.e., a USB flash drive or Yamaha Musicsoft Downloader.

Here is the first part of “ItsTooLate.cho”. The song begins with set-up directives including “{stylecode: }”, which selects the accompaniment style (“Cool8Beat”). You could leave out key, time, tempo, or stylecode and go with the current panel settings. This flexibility allows experiments with different tempos or different styles, including USER styles.

{t: It's Too Late }   
{key: Am}
{artist:Carole King}
{time: 4/4}
{tempo: 104}
# Style: Cool8Beat
{stylecode: 5635}

{start_accomp}
[Am7][*IA]

# Introduction (intro riff)
{start_of_instrumental}
[Am7][*MA] [D6] [Am7] [D6]
{end_of_instrumental}

{c: Verse 1}
[Am7] Stayed in bed all morning just to [D6] pass the time.
[Am7] There's something wrong here there can [D6] be no denying.
[Am7] One of us is changing
Or [Gm7] maybe we've just stopped [Fmaj7] trying. [Fmaj7][*FA]

{start_of_chorus}
And it's too [Bbmaj7][*MB] late baby now [Fmaj7] it's too late
Though we [Bbmaj7] really did try to [Fmaj7] make it.
[Bbmaj7] Something inside has [Fmaj7] died
And I can't hide [Dm7] and I just can't [Esus4:2][*FB] fake it. [E7#9:2]
{end_of_chorus}

The screenshot above shows the Genos song player with “ItsTooLate.mid” loaded and ready. Choose either the Lyrics or Score display (optional). Then hit play!

The next screenshot shows the Lyrics display. It should look familiar if you have played a Yamaha arranger. The arranger highlights the current lyric syllable or phrase in time with playback. Compare the screenshot with the ChordPro song and you’ll get an idea of what to expect for each ChordPro construct. A lyric phrase is not broken into syllables, but is associated with the chord preceding the phrase.

The following screenshot shows the Score display. It’s a different view of the same song. Lyrics appear below the staff and chords appear above. The time and key signature are displayed on the first page. Follow the bouncing ball during playback.

So, how does it sound? Listen to a quick demo (MP3) with me noodling on top.

That’s a taste of what’s ahead. I hope you will try cp2mid when it’s ready.

Copyright © 2021 Paul J. Drongowski

ChordPro auto-accompaniment: MIDI messages

I’ve made quite a bit of progress with my Java program that translates extended ChordPro songs into a Yamaha-compatible accompaniment MIDI file. This blog post describes the stuff inside the MIDI files produced by the program (cp2mid).

The MIDI file contains MIDI meta and SysEx (System Exclusive) messages which drive the Yamaha accompaniment engine. When the MIDI file is played back on a compatible Yamaha arranger keyboard (e.g., Genos), the keyboard generates an accompaniment as directed by the chord and section change messages in the MIDI file. It may sound odd to hear this, but the MIDI file doesn’t contain a single note ON or note OFF message! It’s all accomplished through control messages and the accompaniment is produced in real-time.

The MIDI file is a Type 0 Standard MIDI File. It starts with a bunch of set-up messages:

  F0 05 7E 7F 09 01 F7                           GM Reset 
F0 08 43 10 4C 00 00 7E 00 F7 XG System ON
FF 58 04 04 02 18 08 Time signature
FF 59 02 02 00 Key signature
FF 51 03 07 EF eb Tempo
F0 0D 43 73 01 51 05 00 03 04 00 00 2C 05 F7 Style code
F0 04 43 60 7A F7 Accompaniment Start

All of these message types are defined in the Yamaha Genos™ Data List PDF document. The messages beginning with “F0” are System Exclusive (SysEx) messages. Messages starting with “FF” are MIDI SMF meta messages. All messages are Yamaha proprietary (code “43”). The trick, of course, is filling in the correct values for the tempo, key, etc.

GM Reset and XG System ON initialize the tone generator. Time signature, key signature and tempo are SMF meta messages which control and arranger’s sequencing engine. The Style Code message selects one of the many built-in accompaniment styles. The Accompaniment Start message tells the accompaniment engine to get busy.

Once set-up is complete, the rest of the MIDI file consists of Chord, Lyric and Section Control messages. Again, these messages are all defined in the Genos Data List PDF document.

Here is a typical chord message:

    F0 08 43 7E 02 37 08 37 7F F7          Chord Bm/B

It tells the accompaniment engine to play a B minor chord (0x37 0x08) with a B bass note (0x37 0x7F). The neatest thing about the ChordPro conversion program? It makes it easy to play and hear difficult to finger chords like slash chords and unusual chord types like Cminmaj7-9.

Lyrics are inserted into the MIDI file using the SMF Lyric meta message:

    FF 05 len [Data]

For example, this Lyric meta message:

    FF 05 04 79 6F 75 20      0x79='y', 0x6F='o', 0x75='u', 0x20=' '

encodes the syllable text “you “.

No attempt is made to separate lyric text into syllables or to assign syllables to individual beats. When a lyric phrase is encountered in the ChordPro file, the phrase is inserted right after the preceding Chord message, i.e., it has the same MIDI timestamp as the preceding Chord message.

A Section Control message selects the current accompaniment section (pattern). The following message:

    F0 06 43 7E 00 09 7F F7               Section Control Main B: ON

selects the “MAIN B” section (0x09 0x7F). Because playback is fully automated, section changes are precise.

The penultimate message stops accompaniment:

    F0 04 43 60 7D F7                     Accompaniment Stop

The final SMF meta message ends the SMF sequencer track:

    FF 2F 00                              End Of Track (mandatory)

Overall, that’s a lot of power with just a few message types! Most of the Java code involves scanning the ChordPro input, book- and time-keeping. Java has a good MIDI library which makes coding easier.

As to time-keeping, all MIDI events (messages) have a timestamp. Messages issued from set-up directives before start_accomp occur in the first song measure. The start_accomp directive advances the MIDI clock to the first beat of the second measure. Thus, the first chord and lyric (if any) occurs at the beginning of the second measure. Thereafter, MIDI time advances in accord with each chord beat count (default: a full measure as determined by the current time signature).

Look here for more information about ChordPro format.

Copyright © 2021 Paul J. Drongowski

And we’re off!

The exploration begins!

Starting in with a new keyboard is like landing on the Moon. What should I explore first?

First stop: Reverb

Effects are critical to good sound. I’ve fallen in love with the Genos™ “Real Small Hall+” effect preset. It just sounds nice to my ears and I want to incorporate it into Performances as I port my MOX voices to MODX. The “Real Small Hall+” preset has a mid-range bump around 700Hz to 800Hz which adds presence.

First off, what the heck is the equivalent effect algorithm on MODX? The Genos “Real Small Hall+” uses the Genos “REAL REVERB” algorithm. Quick comparison between the Genos Reference Manual (RM) and the MODX RM reveals that “HD Hall” is the same as “REAL REVERB”. Frankly, I don’t know why Yamaha names effects differently on different product lines. Slightly bonkers.

MODX provides three presets for “HD Hall”:

  • Large Hall
  • Medium Hall
  • Bright Hall

The “Medium Hall” preset is the closest to “Real Small Hall+”. It’s not the same, so there will be some extra editing ahead. In case you’re wondering, here are the parameter settings for “Real Small Hall+”:

Number Parameter Value
1 Reverb Time 1.3s
3 Initial Delay Time 22.1ms
4 High Damp Frequency 8.0kHz
6 High Ratio 0.8
13 EQ Low Frequency 700Hz
14 EQ Low Gain +6dB
15 EQ High Frequency 800Hz
16 EQ High Gain +4dB
Return Level 64

I would love to make a MODX user effect preset with these specific parameter values. Would sure save a lot of editing…

Of course, I tried these settings and so forth. In the course of investigation, I found it easier to navigate with the MODX cursor keys instead of poking the touch screen. As I mentioned in my last post, the small size of the MODX widgets requires care and precision when tapping the screen. I also noticed that more finger pressure is required than the Genos touch screen. Widgets along the edge of the screen are the most troublesome and maybe I’ll need to re-calibrate the touch panel.

Next step: Rotary speaker effects

One big, lingering question in arranger-land is how to make the PSR/Genos drawbar organ more realistic.

I need to port my B-3 patches, so it made sense to drop into the “All 9 Bars!” Performance. “All 9 Bars!” is a 2-part Performance which marshalls 14 voice elements into a pretty decent B-3 plus Leslie emulation. Part 1 implements the first eight drawbars and part 2 implements the 1′ bar plus some other goodies.

I’ll have more to say about the part programming in another post. In the meantime, here is a screen shot showing the insert effects routing for “All 9 Bars!”. [Click images to enlarge.]

The MODX “Rotary Speaker 1” algorithm is what we could call “the old algorithm.” “Rotary Speaker 2” is the “new algorithm” debuted in Montage. The rotary speaker effect (Insert A) drives the Multi FX (Insert B) algorithm before everything hits the 2-band EQ (flat).

The following screen shot shows the parameters for the “Rotary Speaker 1” effect.

The “Rotary Speaker 1” algorithm includes its own 2-band EQ which gives a kick at 200Hz and 4.5kHz. Thus, the 2-band EQ at the end of the Insert A to Insert B chain is flat.

The next screen shot summarizes the parameter settings for the “Multi FX” effect.

BTW, both the Multi FX and HD Hall reverb were introduced in the Motif XF version 1.50 update. Multi FX is supported in the PSR-S950 (and later) mid-range arrangers, Tyros 5 and, of course, Genos.

The effect routing diagram illustrates one immediate advantage of the Yamaha synth effect architecture over the Genos effect architecture. It is possible to chain two insert effects on Genos, but you need to stand on your head to do it. Also, it’s not easy to chain a distortion effect into the PSR/Tyros “Organ Flutes” mode. These limitations are due to legacy software and the XG voice/effect architecture — and they stick in everyone’s craw like a bad burrito. Yamaha, please?

MODX screen capture

About those screen shots!

Like Montage, the MODX has a double-secret Easter egg for capturing screen shots.

  1. Insert a USB flash drive into the USB TO DEVICE port.
  2. Press and hold the A/D INPUT ON/OFF button.
  3. Press and release the AUDITION button.
  4. Release the A/D INPUT ON/OFF button.

The MODX writes screen shots to the USB flash drive with names such as “DSNAP_0.png”. I don’t know why Yamaha hides this capability. We live in a modern, visual age, after all, and people need to share screen shots through (anti-)social media.

Here’s two tips. 1. To save wear and tear on the USB TO DEVICE port, I plug a short extender cable into the port and then plug the USB flash drive into the extender cable. The cable brings the port to a place where I can easily reach it and it reduces wear on the port connector. 2. The screen capture procedure doesn’t provide any visual indication that the capture was successful or complete. Use a USB flash drive with an activity LED (e.g., the Kingston Data Traveler Elite G2). You should see the drive’s LED flash when the PNG file is written. Naturally, do not remove the drive when it is active!

Copyright © 2018 Paul J. Drongowski

Java note mapper (v0.1)

Here’s a little bit of Java code to brighten your day.

Two weeks ago, I described the additional hi-hat notes in the Yamaha Genos™ Revo drum kits. The hi-hat sounds replace noises like sequence click, etc. in the lowest numbered notes of the MIDI scale. Thus, a Genos factory style wheezes, zings and clicks when it is played on a legacy PSR or Tyros arranger workstation.

Quite a few people would like to try the new Genos styles, but the hi-hat notes pose a major barrier to conversion (i.e., porting a Genos style to legacy PSR/Tyros). Jørgen Sørensen’s Revo Drum Cleaner suppresses these sounds, but does not remap the Genos hi-hat notes to General MIDI (GM) standard notes.

That’s where note remapper comes in. Note remapper is an experimenter’s kit, not a finished tool. Jørgen (and Michael Bedesem) have written many rather nice tools for the PSR/Tyros arranger workstations. Note remapper gets the job done from the command line, so don’t expect a graphical user interface (GUI) or even a nice installer! It’s an experimenter’s kit.

However, what you do get is source code. Here is the ZIP file containing source, precompiled Java classses (executables), map files and examples.

What else can you do with note mapper? Well, note mapper operates on any Standard MIDI File (SMF). Thus, it’s not just a PSR/Tyros utility. Maybe you want to write a Java program of your own. The source code will give you a good starting point. Copy and modify to your heart’s content.

If you are into converting PSR/Tyros styles, take notice (pun) that note mapper changes both the MIDI note number and velocity according to maps in the files keymap.txt and velmap.txt, respectively. Therefore, you can also map to and from Mega Voices.

Interested? Then please read on. The following text is taken from the README files.

Description

This Java program maps the notes in a standard MIDI file according to a key (note number) map and a velocity map. Use it to map the Yamaha Revo hi-hat/drum sounds. Or, use it to map to and from Mega Voice. It’s all up to you and how you design your key and velocity maps.

The note mapper is launched from the command line (no GUI). There are two command line options:

   -v  Verbose flag
   -w  Write default keymap.txt, velmap.txt and hhmap.txt files

The -w option gives the user a quick start by writing a few default map files. Both -v and -w are optional.

The rest of the command line consists of an (optional) MIDI channel number and the name of the MIDI file to be mapped. The channel number must be an integer in the range [1:16]. Only notes in the specified channel are mapped. The default channel is 10 (the GM/XG drum channel).

The note mapper writes a new file named mapped.mid. It’s up to the user to rename or save this file. If the file in not renamed or saved, it will be overwritten when note mapper is run again.

The note mapper assumes there are two files, keymap.txt and velmap.txt, in the working directory where the note mapper is launched. The note mapper reports an error if it cannot read these two files. The default key and velocity maps preserve the input; the input notes are sent to the output without change.

A map file consists of 128 positive integers in the range [0:127]. Each integer defines how its corresponding note or velocity value is mapped to a new value. Essentially, each integer in the file is loaded into a 128 byte map array indexed by either the incoming MIDI note number or the incoming MIDI velocity value.

The hhmap.txt maps the Revo hi-hat note numbers to General MIDI hi-hat note numbers.

    Revo notes        GM notes
    -------------     ----------------
    13 14 15 16   --> 42 Hi-Hat Closed
    21            --> 44 Hi-Hat Pedal
    17 18 19 20   --> 46 Hi-Hat Open
    22            --> 55 Splash Cymbal

The Examples directory contains two example Genos styles. Be sure to read the READ_THIS.TXT file in that directory, too!

Example command lines

Map the notes for channel 10 in the MIDI file named “Mr.Soul_factory.T552.mid”.

    java MapNotes 10 Mr.Soul_factory.T552.mid

Write the default keymap.txt, velmap.txt and hhmap.txt files before mapping:

    java MapNotes -w 10 Mr.Soul_factory.T552.mid

The default keymap.txt and velmap.txt files do not change/map notes, i.e.,
they are the “identity mapping.”

How to use note mapper to change a style

To use the note mapper on a style, you must split the style into its MIDI and non-MIDI parts using Jørgen Sørensen’s Split/Splice tool. Note mapper, like most commercial MIDI tools, does not recognize or retain non-MIDI data. Thus, you need to run the style through Split/Splice to save the non-MIDI information.

After splitting the style, run the style through the note mapper. The note mapper writes a file named “mapped.txt”. Splice mapped.txt with the non-MIDI data produced in the preceding step. Splicing the mapped MIDI data with the non-MIDI data produces a complete style file (MIDI+CASM+OTS).

Transfer the style file to your PSR/Tyros and revoice the style parts, test the style, edit the OTS, and so forth.

If you don’t like how the mapped file sounds, then you can reuse the non-MIDI data and do another map/splice, assuming that you didn’t modify the OTS.

Compiling

The distribution comes with source code (*.java files) and precompiled class files (*.class files).

You can, of course, modify the source code and recompile. You need the Java development kit which includes the Java compiler, package definitions, and so forth. To recompile, just enter:

    javac MapNotes.java
    javac NoteMapper.java

I have included source for a quick and dirty MIDI file dumper:

    javac QuickDumper.java
    javac QuickDump.java

You may prefer to dump MIDI files using one of the much better tools written by Jørgen Sørensen or Michael Bedesem. See:

The Examples directory

The Examples directory contains two example styles: Mr.Soul and SoulSupreme. Each style has several files, so here’s a little guide.

    Mr.Soul_factory.T552.prs    Original Genos factory style
    Mr.Soul_factory.T552.mid    Original Genos MIDI part
    Mr.Soul_factory.T552.nmi    Original Genos non-MIDI part
    Mr.Soul_mapped.T552.mid     MIDI with mapped hi-hats
    Mr.Soul_mapped.T552.sty     New style file with mapped hi-hats

The *.class files are the Java executable files. Example command line:

    java MapNotes 10 Mr.Soul_factory.T552.mid

The note mapper produces a file named “mapped.mid” which you may rename to something else, e.g., Mr.Soul_mapped.T552.mid.

keymap.txt and velmap.txt are the key (note number) and velocity map files needed by note mapper. hhmap.txt is my initial hi-hat note map.

Workflow

The overall workflow is:

               Mr.Soul_factory.T552.prs
                          |
                          |
                          V
              Jørgen's Split/Slice (split)
              |                          |
              |                          |
              V                          V
  Mr.Soul_factory.T552.mid   Mr.Soul_factory.T552.nmi
              |                          |
              |                          |
              V                          |
         Note mapper                     |
              |                          |
              V                          |
      Rename mapped.mid                  |
              |                          |
              V                          |
  Mr.Soul_mapped.T552.mid                |
              |                          |
              |                          |
              V                          V
             Jørgen's Split/Slice  (splice)
                          |
                          |
                          V
               Mr.Soul_mapped.T552.sty

Copyright (c) 2017 Paul J. Drongowski

Genos: First contact (snap review)

Before I dive into Yamaha Genos™, I need to send a big shoutout to Frank Ventresca of Audioworks CT. I tested and bought my PSR-S950 from Audioworks CT. I’m ba-ack, having had a good experience the first time — largely due to Frank’s customer service. If you’re interested in trying and buying an arranger keyboard, I recommend visiting Audioworks CT and/or giving Frank a call.

For me, it’s about 140 miles one way from home to Audioworks CT. Preparations are similar to getting ready for a long day hike — only with sheet music instead of boots. The long car trip means that testing time is limited. I try to hit the driving sweet spot between morning rush on I-495/I-290 near Boston and the afternoon rush from New Haven and Hartford, leaving me about two hours to play.

After arriving at Audioworks CT, I found a three tiered stack: Yamaha Montage, Korg Pa4x and Yamaha Genos, from top to bottom. Thanks to a tip from Stephen on the PSR Tutorial Forum, I expected to see the Pa4x. With that foreknowledge, do I A/B the Genos and the Pa4x? I chose to focus solely on the Genos given the two hour window for testing. Frank, BTW, invited me to stay longer, but I knew that I needed to avoid traffic Hell later in the day.

I warmed up while Frank finished a business meeting. No music stand, so I used the Pa4x as a very expensive music rest. Once Frank was available, he quickly installed the Genos music stand.

I decided to listen through headphones rather than use Audioworks’ house system. It’s a good system, but I decided to go with my usual, lightweight headphones (Roland RH-7A). Headphones also freed up the LINE OUT which I connected to a Roland MicroBR digital recorder. This setup let me hit record, play and forget.

At the time of this writing, I pulled a few snippets among the noodling and posted them here. I’m trying to get my first impressions down fast and don’t want audio production to get in the way of my initial thoughts.

Before recording, I set the Genos EQ to flat and turned off the master compression. Audio is recorded direct to MP3 (192 kbit/sec). Not the best quality, but I was afraid of overrunning the rather small SD card in the MicroBR. After setting initial levels, I tried to forget that the MicroBR was there and that the red light was ON.

It’s humbling to listen to my noodling. Hats off to everyone’s main man Katsunori UJIIE, who seems to rip this stuff effortlessly!

Genos is an instrument

One shouldn’t have to say this, but the Genos is an instrument in the same league as Montage or Kronos. With the limited time available, I concentrated on Genos as a performance instrument first and as an arranger keyboard second. This approach is consistent with my musical priorities: church gig first, fun and possibly one man band (OMB) second.

As a liturgical musician, I play with a pianist on acoustic piano and a 12-string guitar. That’s a lot of rhythmic content right there. Much of what I play complements piano and 12-string guitar. Subconsciously, I fill in and hear these missing parts when practicing. Hopefully, you will fill in this context, too. If and when you hear the audio snippets, I’m playing fuller than I would with the group. There is always a tendency to “be the whole band” when playing alone. Apologies in advance.

The focus is on emulation of acoustic instruments, orchestra and pop. You won’t hear any synth and given the short trial time, you won’t hear many styles (unfortunately).

The FSX keyboard is a more robust keybed than the PSR-S950. The FSX action is heavier. You do get what you pay for. The FSX affords aftertouch; the S950 does not.

The Genos has three front panel articulation buttons to trigger voice articulations. The voice display shows the available articulations for each selected voice. (Nice.) The voice display also shows a drawbar icon for organ flute voices. Touching the drawbar icon brings up the drawbar display. (Extra nice.) I made extensive use of the voice DEMO touch button in order to play and sort through voices quickly.

The user interface is responsive. I didn’t get a sense of lag as reported by other players. I discovered that the MENU front panel button is your special friend. It brings up two pages filled with touch buttons leading to all internal settings. It’s kind of a “site map” for the Genos.

Strings

The Genos is like having a compact orchestral sample library in a portable, immediately playable keyboard. Think Garritan Personal Orchestra.

There are two major options for strings in addition to legacy voices: Kino strings and Seattle strings. The Seattle strings first appeared in the Tyros 5 before they were explicitly identified and advertised in the Montage. The Kino strings have a different character and the violin sections are panned separately left and right. Both options have multiple bowing and playing techniques (legato, spiccato, pizzicato) plus articulations. The options are also broken out into sections as well as the standard ensemble voices.

The Kino strings have more power and are more in your face than the Seattle strings. Dare I say, more bow? Where is Dave Stewart when you need him? (This review would be wittier if written by Dave Stewart, too.)

The voice DEMO feature is really handy when approaching a deep keyboard like Genos for the first time. I quickly settled on the “warm” variation of the Kino strings and Seattle strings. Either choice (Kino Seattle) would work as a bread and butter ensemble patch. I give the edge to Seattle because, well, they would sit better with piano and acoustic guitar, given our repertoire. Tyros 5 people, hold up your heads with pride.

With the loss of our group’s flutist, I’m play a lot of exposed solo lines using violin, oboe and flute. The Genos offers four Super Articulation 2 solo voices: Celtic Violin, Jazz Violin, Classical Cello and Pop Cello. The Celtic Violin is a good fit with our liturgical repertoire. The Genos cellos are quite good, definitely a big cut above the MOX6 that I currently play. I wish that I had more time to check out the cellos.

Meta-comment: Exploiting the Genos, especially its articulations and ensembles — will require practice, practice, practice.

Woodwinds

In the case of woodwinds, I need both ensemble voices (or layers) and solo voices (mainly oboe and flute). The Genos does not disappoint in either category.

I quite easily built and tried a few layers. It wasn’t difficult to create a workable reed plus horn layer — another bread and butter, every Sunday patch. Less is often more. It isn’t necessary to layer up a preset woodwind ensemble with French horn; sometimes a mellow oboe or clarinet will do.

The Genos has two SArt2 oboes (classical and pop) and an SArt “MOR Oboe.” The Classic Oboe is bright and thin, able to cut through strings. For exposed lines, I would prefer the Pop Oboe or MOR Oboe voices that have a warmer, fuller sound.

The SArt2 Classical Bassoon and Pop Bassoon are quite pleasant without moving into comedic territory. (Peter and the Wolf.)

Brass

The Genos has a mess’o’horns and classical brass. Symphony horns are quite useful in liturgy as pads and mid-range filler. Fanfare brass is too much except for the obvious holidays when all sorts of sonic mayhem can be let loose. The Genos has a wide range of horns from mellow to a brighter more open tone.

The brasher instruments (trumpet and trombone) are available solo and in sections. All quite good. Trombones are especially useful due to their wider range and deeper timbre.

The demo phrases for certain brass voices are way hotter level-wise than the strings or woodwinds. I had to adjust the audio record level way down to prevent clipping. Unfortunately, this affected the level for everything else that I recorded during the day. Sorry, I just spaced out and didn’t reset the level. (Argh!) So, you may need to adjust the audio volume at your end.

Drawbar organ

Huh? That’s not classical. Our church means gospel and a little Hispanic music, too.

I enjoyed getting into the Genos drawbar organ. There’s no undiscovered clone killer here, but Yamaha’s drawbar emulation will work in a lot of churches (and stages, too). I’m already quite familiar with Yamaha’s emulation having played both the MOX and PSR-S950.

The physical drawbars are a treat. The knobs are shaped like, er, classic drawbar knobs. The bars can be changed and played in real time, something that I miss on the MOX and to a large extent, the S950. If you select a preset, the physical position of the sliders does not directly relate to the sound, of course. The sliders are not motorized. When a slider is moved, it won’t change the sound until the slider “catches” the current internal bar value. That’s why Martin Harris “warms up” the sliders before playing the bars in his demo videos.

The new rotary speaker simulation is an improvement, but won’t knock the Neo Ventilator from its perch. Here, Yamaha have some work to do immediately:

  • The Drive parameter doesn’t seem to have any effect on the sound. (Thanks to Uli from the PSR Tutorial Forum for pointing this out.) Pushing the Drive to 10 doesn’t add any overdrive.
  • As mentioned in an earlier post, the rotor slow/fast and fast/slow times cannot be adjusted; only the horn (de)acceleration times can be adjusted.

Yamaha needs to fix these divots.

The rotary speaker sim is set too fast out of the box. This gave me a chance to dive into the DSP effect editing menus. I made the changes without too much difficulty and without a manual. Good job. I just wish that I could change the rotor (de)acceleration times, too.

This seems to be a good place to mention that sound programmers universally tend to set the times too fast, especially the ramp times. Players love it when it takes a while for those old, vintage belts and pulleys to spin the rotor/horn up and down. A lot of real B-players habitually hit the half-moon switch to keep the Leslie in its intermediate, changing state. Watching Gregg Allman do this in 1971 was a revelation that stuck with me for a lifetime!

Wot? No pipe organ? Genos carries over the quite excellent handful of pipe organ voices from Tyros 5. They’re good. Move along.

Pop instruments

Now that the main job is done, it’s time for the funk and blues.

You probably noticed by now that I haven’t said anything about the CFX and C7 acoustic pianos. You’re right and you won’t hear another word about them from me. They’re covered elsewhere, everywhere.

I did try the Suitcase Rhodes (oh, why this charade about names?), the Wurlitzer and the Clav. All will do the business. The Suitcase is still waaaay too polite for my taste in fusion. Think the fuzzed out bliss of “Mahavishnu.” That’s a 70’s Rhodes.

The SArt2 Funk Alto Sax and Funk Baritone Sax are welcome additions. I look forward to exploring those. The Jazz Flute sounds good to my ears and has interesting articulations. The Classical Flute can jam, too.

I took a listen to the new Active Bass (Music Man Stingray?) Sweet. Should provide new options when sequencing.

Then there’s the mess’o’guitars. I presume that 50’s is Telecaster and 60’s is Stratocaster? With all the DSP at hand, the electric guitars are instant “tone” with all of the right pedal-board effects dialed in. The jazz guitar sounds good. I often reach for jazz guitar when playing pop. (Need more technique, though. Practice, practice, practice.)

The sax and brass demos start out with the new funk saxes. The rhythm section demo includes Suitcase Rhodes, Wurli, Clav, CP80, Active Bass, electric guitars and jazz guitar.

Styles

At this point in the day, my ears and hands were getting trashed. I was hoping to try the styles that have been getting short shrift in on-line videos. Given the time that was left, all I could hit was “Mr. Soul” and “Soul Supreme” with the old chestnut “Acoustic Jazz” thrown in. All good for a fun-time jam.

Neither style was harmed by playing over them. I did jam quite a bit and got a decent Fishbelly Black organ tone out of the drawbar organ and rotary sim. Oh, happy day!

Workflow

You should be able to sense my time urgency at this point because my comments are getting shorter and shorter.

I played along with a few MIDI and WAV audio songs in order to assess the workflow for OMB. Even without playlists and registrations, the Genos has a much smoother workflow than the Montage in this regard. Montage designers should take note because many Montage players incorporate audio and MIDI tracks into their performances, too.

I botched a chance to try Revo drums with a MIDI file. I brought the USB drive that contains my WAV audio and MIDI backing tracks. I played along with “Just My Imagination,” a track that suffers from extreme “machine gun” drum rolls. Darn, with time pressing, I forgot to re-voice the file with a Revo drums kit! Bummer.

Summary

Genos is waaaaaay too much for two hours. Two weeks, two months, maybe.

There you have it. Genos? Yes, I played one. As you can tell from this quick review, I’m more enthusiastic than ever about Genos.

Need more information about Super Articulation voices? Please look here.

Copyright © 2017 Paul J. Drongowski

Genos: Position and promotion

The first public European demos started over the weekend. I’ve been watching Peter Baartmans and Sander Tournier put the Genos through its paces.

The whole experience has me thinking about how the Genos is being positioned in regional markets, mainly, western Europe versus North America.

First off, the arranger keyboard culture is completely different in Europe than the United States. Arranger demonstrations are big public events. One recent demo had over 500 attendees in the audience. In some venues, audience members buy tickets! This is unimaginable in the United States (except iPhone).

The European demos show off a broader range of styles. In this aspect, I’m comparing the European demos with videos made for American retailers (Guitar Center, Sweetwater, and Kraft Music). The European demos cover everything from jazz to rock to EDM to classical to traditional European pop. For the latter, think outdoor cafes and biergartens where you can spend hours with a few hundred like-minded souls. Not to mention that acquired taste, Schlager. (And that’s not a beer!)

The American demos concentrate on contemporary musical genres and styles. The Genos has new acoustic and pedal steel guitars, so Nashville and country get special emphasis. Martin Harris highlights the Kino strings coming more from a cinematic or singer-songwriter perspective. These are customers that Yamaha hopes to hook in North America. With all of its articulated sounds, the Genos is a mini-library of sampled instruments both pop and orchestral.

The American videos avoid any whiff of cheese. Unfortunately, many American listeners regard (too) many musical styles as “cheese” and the typical Guitar Center clientele are the worst offenders. Thus, you won’t hear traditional European pop in a video targeted for American retailers. In the U.S., arranger keyboards are regarded as the evil spawn of the cha-cha home organ. After playing Montage and hearing the Genos demos, a lot of folks need to adjust their thinking.

Yamaha run a risk, here, because on-line media is world-wide. I’m thinking about the videos for the Dexibell drawbar organ. A few people saw one video which didn’t fit their musical taste and bad-mouthed the Dexibell to high Heaven. They never moved on to the other videos which had some very tasty jazz.

At this point in the Genos launch, it’s a little difficult to dig out the deeper jazz, soul, R&B, and funk possibilities of the Genos. You need to wade through a lot of video to even get a sniff.

The customer base for high-end arranger keyboards is aging. Even the European audiences have a lot of “gray heads.” (I’m getting grayer by the day, too. 🙂 ) Yamaha and its dealers want to entice a younger crowd with arranger keyboards. But, they have a dilemma. A young person today does not have the disposable income for a $5,500 (USD street) keyboard, especially when they can make music with their smart phone, tablet or laptop. The entry price to EDM, for example, is much lower than the price of a Genos.


[Source: Yamaha Easy Product Guide, 2017; Click to enlarge.]

Yamaha led the Genos campaign with EDM. This gave the Genos a youthful cachet, but alienated many people in the historical customer base for high-end arranger product. Folks wondered, “Did they drop the big band styles?” However, let’s say that Yamaha did put a schmaltzy big band tune into the Guitar Center video. Instant turn off. Personally, I wouldn’t mind a big band tune. I grew up listening to Glenn Miller and Benny Goodman, but that was my father’s music. (BTW, I respect that music; I just don’t play it.) Most people can’t look beyond the end of their own musical nose.

So, where do Yamaha find customers with sufficient disposable income and maybe the time and interest? Back to the 80s! The Genos has some excellent styles that allow note-for-note covers of famous 1980s pop and rock, including synth-heavy 80s pop. We all tend to relate emotionally to the music of our teen years and early 20s. Let’s take 1985 as the midpoint, subtract 20 years and look to people born around 1965 or so. They were teens when 80s music was happening. Thus, Yamaha are targeting people in their late 40s and early 50s — old enough to have the disposable income for a high-end arranger while young enough to rebuild the aging customer base.

Well, I hope this ramble has given you a different perspective on Genos and arranger keyboard marketing. The Yamaha demos are carefully designed and scripted to appeal to target market segments. Where do you fit?

Copyright © 2017 Paul J. Drongowski

Creating a Mega Voice in YEM

With all of the Genos™ hoopla, let’s not forget about technique and skills! A few interesting questions popped up on the PSR Tutorial Forum and I’m reposting my answers here.

Today’s blog describes how to create a Mega Voice for PSR/Tyros using Yamaha Expansion Manager (YEM). With this background information in mind, I go on to discuss maximum polyphony in AWM2 and how to count voices against maximum polyphony.

The discussion has a PSR/Tyros focus, but a lot of the information applies to Motif, MOX and Montage, too. If you want to learn more about the Yamaha AWM2 voice architecture, I recommend reading the first chapter of a Motif- or Montage-series reference manual and the corresponding synthesizer parameter manual. (Download these manuals from the Yamaha manual library.)

Creating a Mega Voice in YEM

Regular voices are the usual MIDI voice: 128 velocity levels and only one basic sound. For example, nylon guitar is just the pitched, melodic sound of the notes either louder or softer depending on note velocity.

Mega Voice guitars (and other Mega Voices) are different. Please look at the Mega Voice Map starting on page 16 of the Tyros Data List PDF.

Let’s take a look at the Mega NylonGuitar voice. For MIDI notes B5 and below, the MIDI velocity is broken into eight (8) ranges:

    1- 20 Open soft
   21- 40 Open med
   41- 60 Open hard
   61- 75 Dead
   76- 90 Mute
   91-105 Hammer
  106-120 Slide
  121-127 Harmonics

Each range plays a different kind of sound. So, the MIDI velocity determines which guitar sound. Then, the velocity within that limited range determines how loud it will be.

Example 1: MIDI note A4, velocity 38 makes an Open Med guitar sound which is loud.

Example 2: MIDI note A4, velocity 2 makes an Open Med guitar sound which is quiet.

Example 3: MIDI note A4, velocity 110, makes a Slide guitar sound.

Now, let’s look at the last two columns in the Mega Voice map, again, for the Mega NylonGuitar voice. For MIDI notes between C6 and B7, the Tyros plays a Strum noise. The velocity in this case determines the Strum noise loudness over the full range 1-127.

For MIDI notes above C8, the Tyros plays a Fret noise. The velocity determines the fret noise volume and is full range 1-127.

Example 4: MIDI note D8, velocity 127 plays a very loud fret noise.

Put this knowledge into action with YEM

Now you need to figure out how to do this using the voice editor in Yamaha Expansion Manager (YEM). Each voice has up to eight elements. Think of each element as a mini, controllable synthesizer.

You will need one element for each of the velocity ranges that form the main body of your Mega Voice. In the case of the Mega NylonGuitar voice, that’s eight elements!

In YEM, build one element at a time. Layout the samples for one velocity range of the many body. You may have one waveform or you may have several waveforms. Each waveform occupies a key range. Do not map any waveforms onto the keys C6 and above (yet). These keys are reserved for the noise notes.

When you select a waveform belonging to an element, YEM highlights the color and displays eight resizing dots on the edges of the waveform. Use these dots to resize the waveform. Moving left or right changes the key assignment for the waveform. Moving an edge up or down changes the lower or upper limit of the velocity range to be assigned to the waveform.

If you have a lot of samples, be prepared to do a lot of work! Now you’re learning how much work Yamaha puts into voice development!

Once you have assigned the waveforms (samples) for the main body of your new voice, you can work on the noise notes, that is, any keys C6 and above.

Select the first element. Assign the waveforms for the noise notes to the keys C6 and above. The actual layout is up to you, but you must use only the keys C6 and above.

If your noise notes have only one velocity range, 1 to 127, then you must set the velocity range for only those waveforms (1 to 127). If your noise notes have two or more velocity ranges (not recommended), then you must use more than one element.

So, you can see that YEM has enough editing power to create a Mega Voice. Be prepared to study carefully how Yamaha voices are constructed. Please don’t expect to just jump in, clap your hands, and be finished. I regard Mega Voice development as a fairly advanced, expert job. If you haven’t created a voice before using YEM, then I suggest trying something simple until you understand elements, waveform layout across keys, and velocity ranges.

Counting voices against maximum polyphony

Now that you’re schooled in voice structure, it’s a good time to discuss maximum polyphony and counting voice elements against maximum polyphony.

This has always been a somewhat confusing topic because of the way polyphonic voices are counted.

As I mentioned above, a Tyros or Motif or Montage (AWM2) voice consists of up to 8 elements. Assume that only the RIGHT1 part is enabled and thus, only one Tyros voice is enabled. When a key is struck, the AWM2 engine determines the active elements and assigns each active element to a physical-level, hardware tone generation channel. One or more elements may be active simultaneously for a given note under the assumption.

Assignment and channel use is additive. If RIGHT1 and RIGHT2 are enabled (i.e., two layered voices), then there are one or more active elements from the RIGHT1 voice and one or more active elements from the RIGHT2 voice. This is why layers chew up polyphony.

The number of tone generation channels determines the maximum number of active tones playing at any time — the maximum polyphony.

Be prepared to be confused!

Even if all eight elements are defined in a Mega Voice, not all eight elements may be active at a time. One to eight elements may be active depending upon the incoming MIDI note and the element programming (i.e., the velocity range and note range for each element.) When the synthesis engine gets a MIDI note (consisting of a MIDI note number and velocity), it decides which elements to play. If only one element matches, then only one polyphony voice is used up. If two elements match, then two polyphony voices are used up, and so on.

Thus, depending upon the combination of note ranges and velocity levels, a voice may use anywhere from one to eight voices of polyphony. It all comes down to the particular design (programming) of a user voice.

If you’re not confused yet, hold on, there’s more. In the past, a stereo voice would use two tone generation channels while mono uses one channel. The left waveform is assigned to an element and the right waveform is assigned to its own element. Montage and Genos have the new tone generator, the SWP70. The new tone generation hardware supports 128 mono/stereo voices (channels) of polyphony. That is, stereo elements get mapped to a stereo channel. This is a big deal because it allows greater use of stereo waveforms without cutting too deeply into the available polyphony.

Think like a coder

By now, if you’re a programmer, you’re thinking of pseudo-code somthing like:

    if ((MIDI note number >= lowest key in key range) &&
        (MIDI note number <= highest key in key range) &&
        (MIDI note velocity >= lowest velocity in velocity range) &&
        (MIDI note velcotiy <= highest velocity in velocity range))
    {
        Generate the tone for the MIDI note
    }

This conditional statement summarizes what I discussed earlier.

As usual, there's more.

The AWM2 synthesis engine defines and evaluates other conditions:

  • Detached (non-legato) or legato
  • Articulation button ON or OFF
  • Jump in note interval less than one octave

Motif and Montage people will recognize the first two conditions as Expanded Articulation (XA). PSR and Tyros people will recognize all three conditions as part of Super Articulation (SA). These additional conditions also control element triggering. Think about extending the pseudo-code's condition with other conjunctive terms.

The Motif and Montage voice editors expose the XA conditions. Yamaha Expansion Manager does not expose these conditions. Thus, it's not possible to create Super Articulation voices using YEM.

Copyright © 2017 Paul J. Drongowski

Genos genesis

After fits and starts due to early leaks, Yamaha have launched the Yamaha Genos™ digital workstation. You can check out Yamaha’s content through the Genos concept site or the Genos product pages. [Click images to enlarge.]

There’s no point in regurgitating Yamaha’s on-line content, so I will just summarize highlights here.

  • Size: 48-9/16″W x 5-7/16″H x 17-15/16″D
  • Weight: 28lb, 11oz (13.0kg)
  • 9″ color touch screen (TFT color WVGA 800 x 480 pixels)
  • Live Control display (OLED 589 x 48 pixels)
  • 9 sliders and 6 knobs that are fully assignable
  • 76-key FSX keyboard
  • Joystick with modulation and joystick HOLD
  • Synthesis: AWM2 and Articulation Element Modeling (AEM)
  • Polyphony: 256 (128 for preset voice + 128 for expansion voice)
  • 550 styles total (punchy drums and DSP effects)
  • 1,652 voices + 58 drum/SFX kits
  • 216 arpeggios: instrument arps, e.g., strums and control arps automate Live Control
  • 28 insert effects including VCM effects
  • Vocal Harmony and Synth Vocoder
  • Audio recording: Audio (WAV 44.1kHz, 16-bit, stereo) and MIDI SMF
  • Audio playback: WAV (44.1kHz, 16-bit, stereo) and MP3
  • MultiPads (both audio and MIDI)
  • Internal memory: 58GBytes (approximately)
  • Connectivity
    • S/PDIF digital audio output
    • Three USB TO DEVICE ports (front panel, back panel, bottom)
    • Wireless LAN (IEEE 802.11b/g/n) depending on regional type acceptance
  • 32-bit digital-to-analog converter (DAC)
  • 1.8GBytes user voice expansion memory built-in

The Genos looks to be a nice overhaul of the now staid Tyros product line. If you’re familiar with Tyros — and I’m assuming that you are — then you are not super surprised at some of the features while being pleased (or not) to have a color touch screen, lots of assignable knobs, sliders and buttons, a secondary OLED display to show parameters, doubled polyphony, S/PDIF, wireless LAN (maybe, in your region), and a 32-bit DAC.

Yamaha have chosen to issue only a single 76-key model; no 61, no 88. This gives them interesting options for line extension. Go small and save weight, or feed the world’s almost insatiable hunger for 88-key piano-like objects?

You might also be surprised to not see audio styles. I think the original audio styles confused most users. Can I save them to USB drive? No. Did they fit many tunes other than the “reference” song? No. Handling REX format via the Yamaha Expansion Manager (YEM) should resolve these issues for advanced users. Yamaha punched up the drums to improve the live feel. (Hey, don’t Yamaha actually make drums? Just kidding.)

Featured instruments include:

  • CFX piano
  • C7 grand piano (newly sampled)
  • Kino strings
    • Newly sampled movie orchestra
    • Violins hard-panned left and right
    • Violas, cellos and contrabass center
  • Revo drums (waveform cycling)

If rumors hold true, there should be a new Strat in there somewhere as well as Gibson and Martin steel guitars and a pedal steel guitar. The electric pianos have gotten the ambient noises from the Montage EPs.

The Live Control view is nicely done. Change a knob and the display shows the new assigned parameter value. Change a slide next and the display switches to the slider settings. Good, no button needed to switch displays while playing. The knobs and sliders are integrated with drawbar settings, making the Genos could be a worthy clone competition or a close substitute for a clone. The new rotary speaker effect (from the Montage?) sounds good. But, Yamaha, you left out the chorus (vibrato only). Don’t chuck your Reface YC.

The playlist feature looks to be a very useful addition. The playlist organizes registration banks for quick access. The PSR/Tyros registration concept is a very powerful one and I wish that Montage had a similar capability. I love registrations because, bang, in one button press, I have a song ready to play. (More about this another day.)

Having a USB device port hidden under the unit is a great idea. Ever have a drunken chucklehead at a bar try to pull out your USB drive? Ever be a chucklehead yourself? 🙂 More manufacturers should do this.

A new release of Yamaha Expansion Manager (version 2.5) is planned for November 2017, roughly in sync with first deliveries. YEM will have support for WAV, AIFF, SoundFont and REX formats.

A new release of MegaEnhancer (version 1.5) will be available in November, also. MegaEnhancer changes the MIDI data in a Standard MIDI File (SMF) to use Yamaha’s MegaVoices.

The iPad app SongBook+ is also on the way. SongBook+ organizes songs with lyrics, notation, and other information. A song may also be linked to a registration — a very handy feature for performers who need to home in on the complete set-up for a song during performance. I play with charts; I like this.

The USA manufacturer’s suggested retail price (MSRP) is $6,799 and MAP is expected to be $5499.

From a hardware guy’s point of view, there are a few things to think about. The 32-bit DAC is a first for Yamaha. Even Montage does not sport S/PDIF. No mention of Pure Analog Circuit, so the audio back-end must be new, new, new.

The polyphony spec is très intéressant: 128 for preset voices and 128 for expansion voices. Hmmm, how did Yamaha arrange (pun intended) the SWP70 tone generators and NAND flash memory?

So, Yamaha have 1.8GBytes of flash left over for voice expansion. There simply is not enough information to infer waveform memory size, so we’ll all be waiting for the service manual.

Speaking of manuals, there aren’t any available at the time of this writing. No owner’s manual, reference manual or data list. Nada. The early leaks forced Yamaha’s hand to launch the Genos two weeks early and now we will wait. First deliveries are anticipated for November. Déjà vu all over again.

I am literally weighing the Genos (13kg) versus the Montage (15kg) as my next ax. There is still a huge amount to learn about the Genos as it is revealed. Has the sequencer gotten an overhaul? Does the Genos support deep voice editing? The user interface does look inviting and I look forward to seeing more.

Sometimes a little bit of information just leads to more questions.

Copyright © 2017 Paul J. Drongowski