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

ChordPro for Yamaha accompaniment

Time to take the wrapping paper off my current development project.

It starts with ChordPro. ChordPro Format is perhaps the most popular notation for rock, pop, soul and folk tunes. A ChordPro format song contains lyrics and chords, usually formatted for easy display and reading. Strummers and plinkers everywhere use ChordPro songs as lead sheets.

It ends with Yamaha Genos, Tyros and PSR accompaniment. Genos — and other recent Yamaha arrangers — play MIDI files containing chords and lyrics. Genos displays either a running score or lyrics (plus chords) during playback.

What is missing is the bridge between ChordPro and Genos. My current project is the bridge. It translates an extended ChordPro file to a MIDI file which is compatible with Genos and other mid- to high-end Yamaha arranger keyboards. So far, I have a prototype up-and-running.

I emphasized the word “extended” because ChordPro format by itself is not sufficient for playback. The format does not have a precise notion of time. ChordPro relies on the musician to interpret the song on the fly. It assumes that the musician has heard the song before and knows when to change chords. As usual with computer stuff, playback needs more precise semantics. That’s where the extensions come into play.

Since there are a gazillion ChordPro songs on the Interwebs, I wanted to play back ChordPro files with as few modifications as possible. Thus, the first rule is “Each notated chord is held for one measure.” Of course, many songs change chords within a measure, too. (Even “Louie, Louie”!) Enter the first extension. A notated chord may have an optional beat count which specifies the number of beats to hold the chord, or more precisely, the number of time divisions (quarter notes or eigth notes) to hold the chord.

As I discovered during testing, existing ChordPro song files have a fair number of warts. Sometime the chord progressions are whack. The files often have random playing directions which ChordPro happily snarfs up as lyric text. ChordPro is very forgiving as it is primarily a formatting representation and tool. The initial goal — playing a ChordPro song with just a few additions — is unrealistic; expect to do some clean-ups.

Plain, unchanging accompaniment is pretty boring after a short while. Therefore, I added annotations for section changes, fills and breaks. Certain ChordPro directives are optional, but strongly recommended: key, tempo, and time signature. Tempo and time signature obviously guide playback speed and the interpretation of chord hold time. The key signature will set the arranger’s score display to the appropriate key.

Stylecode is an extension. It is a decimal number that selects the arranger accompaniment style, .e.g., 60sVintageRock, Oldies R&R, etc. A style name would be more convenient, but then I would need to develop a style name to code database for each arranger. Forget it; keep it simple. Besides, the PSR Tutorial site has such spreadsheets — just look up the style code yourself.

Start_accomp and stop_accomp are extensions, too. Start_accomp should (must) appear after all the basic playback settings are made. When the MIDI file is played back, the arranger will start or stop the accompaniment engine as directed. Start_accomp begins playback from the second measure; the first measure is reserved for set-up.

The translation program does not implement every and all ChordPro directive. It ignores formatting related directives and it doesn’t handle tablature (tab).

Let’s put all of this together and look at an example. Here is a snippet of “It’s Too Late” by Carole King.

{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)
[Am7][*MA] [D6] [Am7] [D6]

{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}

Lines beginning with ‘#’ are comments. Lines beginning with ‘{‘ are directives. Each directive must have a closing ‘}’ and consist of one line only. My translation tool supports the following simple directives:

  • title (or ‘t’): Song title
  • key: Song key
  • artist: Performing artist
  • composer: Song composer
  • copyright: Copyright information
  • comment (or ‘c’): Comment to be ignored
  • time: Time signature
  • tempo: Song tempo in BPM
  • stylecode: Yamaha style code (a decimal number)
  • start_accomp, stop_accomp: Starts and stops the accompaniment

As I mentioned, time, tempo and stylecode are optional, but necessary — unless you are willing to roll with the defaults. Start_accomp must be the final directive before the first chord and lyric in the song. Start_accomp generates the magic message needed to start accompaniment.

Chords look like regular ChordPro chords. Chord names are surrounded by square brackets, e.g., “[Am7]”. Nothing looks amiss until the end of the chorus, e.g., “[Esus4:2]” and “[E7#9:2]”. “:2” is a beat count. Each chord is held for two quarter notes — quarter notes because the number of divisions per bar (the “denominator”) of the time signature is four. It’s our job to make sure that the counts add up to a full measure in order to keep everything synchronized to measures.

The translation program (yet unnamed!) is very forgiving when it comes to chord spelling. However, it only recognizes and generates the 34 Yamaha chord types which are supported by Yamaha arrangers:

    Maj        7        min        minMaj      aug      dim 
Maj6 7sus4 min6 minMaj7 aug7 dim7
Maj7 7b5 min7 minMaj7-9
Maj7#11 7-9 min7b5
Maj9 7#11 min9
Maj7-9 7-13 min7-9
Maj6-9 7b9 min7-11
7aug 7aug
8
5
sus2
sus4

If the chord is not recognized, you will get a major or minor triad.

ChordPro allows annotations, that is, constructs beginning with “[*” and ending with “]”. Annotations ordinarily are playing instructions that are displayed in a pretty-printed ChordPro song. Annotations are extended with accompaniment section control commands:

  • Introduction: [*IA] [*IB] [*IC] [*ID]
  • Main section: [*MA] [*MB] [*MC] [*MD]
  • Fill in: [*FA] [*FB] [*FC] [*FD]
  • Break: [*BR]
  • Ending: [*EA] [*EB] [*EC] [*ED]

A section control command usually follows a chord and takes effect at the same time as the chord change.

ChordPro supports paired formatting directives like:

    {start_of_chorus} 
...
{end_of_chorus}

I am currently experimenting with these directives to control lyric and chord formatting. Yamaha’s lyric display allows line breaks and page breaks. Start of chorus (abbreviated “{soc}”) generates a page break. I added a new directive pair for handling long instrumental breaks, e.g.,

    {start_of_instrumental} 
[Cmaj7][*MC] [Fmaj7] [Fmaj7] [Am7] [Gm7] [Fmaj7]
[Dm7] [Esus4:2][*FC] [E7#9:2]
{end_of_instrumental}

Yamaha’s lyric display runs chords together when no lyric text is present. The new directive provides some separation between chords by generating filler lyric text (dashes, to be exact).

That’s the story. Testing continues. I will make the Java source code available as soon as possible. So far, so good. The concept works.

Copyright © 2021 Paul J. Drongowski

Review: The Beatles: Get Back

Well, I’m about half-way through Peter Jackson’s The Beatles: Get Back and I suppose that I should watch all of it before writing a “review.”

You’ll find plenty of fawning reviews on line — this isn’t one of them. As to actual film criticism, the The Guardian review gets it right. This is an over-stuffed Thanksgiving turkey. Yes, it tastes good, but it took too long to cook and has too many leftover bits.

So I won’t be accused of a hatchet job, I must first commend Jackson for boiling Michael Linsey-Hoggs film and mono Nagra sound into eight hours. Genuine kuddos are due because that must have been a herculean task. Audio quality is superb. Beautiful clean-up and machine learning-based extraction. George must be looking on Giles work with fatherly pride.

First, the bait and switch. Last December’s Sneak Peek was total fun. The preview lifted my spirits and gave me the impression that, at least, we could have a fun, light and tight film.

Wrong impression. The newly released film has some very good to great parts — sheer genius in a few cases. However, much of the film reminds me of every teenage (and adult!) garage rehearsal with much faffing about and no real work getting done. Sitting through these parts is reliving every wasted, unproductive, tedious second when you really wanted to be somewhere else.

Watching Get Back is like watching NFL RedZone. I love RedZone. I turn it on at 10am, catch the best bits of my favorite teams, read The New York Time, cook and eat lunch, have a mid-afternoon dessert and cup, and wrap everything with the touchdown montage. However, nobody — self included — actually watches every second of “seven hours of commercial-free football.” Nobody.

There are clearly bits that could have been cut without loss. A BBC radio program from the 1960s? Forget it. Re-litigating personal drama between the group members? Don’t “Let It Be,” let it go instead. Fifty years on, most people don’t really care or shouldn’t.

For the record, I did see the Let It Be documentary in 1970.

I’m still struck by the number of leeches and sycophants surrounding the late-stage Beatles. If you really want to know why they broke up, look to the absolute shafting they endured from Dick James, Allen Klein, Alexis Mardas, and the rest of the self-promoters and music industry white-collar criminals. Nothing attracts flies like a steaming pile of cash. Apple was a managerial and financial disaster.

For example, it’s embarrassing to watch Lindsay-Hogg force his vision of the final concert on the lads. Jackson could have easily spared the man’s dignity and left this out. Lindsay-Hogg comes off as a self-serving, upper-class English twit — an early parody of rock and roll pretensions and excesses to come a la Spinal Tap. As to dignity, why did Jackson humiliate long-gone Peter Sellers? Cutting room.

In contrast, I offer the genuine, warm affection and devotion shown my Mal Evans, stage manager and long-time companion to the band. Ringo is his authentic “all I ever wanted was a paying gig” self. Just blokes and punters like us. Even Ringo is bored with the faffing around. Why should Jackson force the boring stuff on us, too?

As to other quick edits, if a song didn’t make it to the Let It Be album, why bother? Save those songs for another day and another film. [Suggestions to follow.]

In the end, there are three and half movies here. Jackson in his head and heart must know this. I wish he had asserted his own clout and signed a few more deals based on a few more story lines.

When Ringo says “You see, I’d watch an hour of him, just playing piano,” there’s your first movie. McCartney was and is born to make music. Start with the Ringo quote and follow it with all of the solo Paul parts. That would be a fascinating portrait of McCartney as a songwriter at that stage of his career.

For the second film, take the most important rehearsal parts and show how the Beatles worked from inspiration to finished product. The scene where the song “Get Back” spontaneously emanates from Maca and his bass is brilliant. More please. Concentrate on just a few songs, if necessary, in order to keep running time reasonable.

Even George and Ringo knew that riff was the hook. Instantly. That’s the way true hits are born. Not that awful “Maxwell’s Silver Hammer” which the Beatles themselves detested.

Finally, give us the movie which the Sneak Peek promised. Sure, give a small taste of the songwriting and development. George, John and Paul were all at the top of their game in 1969. Maybe create a late-stage version of “A Hard Day’s Night” with people tugging the boys every which way. But, for heaven’s sake, make it a comedy. More Richard Lester, less Maysles and Zwerin.

We all need a good laugh right now. We also need irreverent and rebellious youth to thwart and overthrow today’s authoritarians. Once again, the world is in the grip of controlling neo-fascists who must be taken down.

I fully expect fan-edits to emerge.

Happy watching, but bring a book or two along.

[Update] Another recommended review: ‘The Beatles: Get Back’ Review: Peter Jackson Gets Lost In The Treasure Trove Of Fab Four Footage.

Copyright © 2021 Paul J. Drongowski

Black is back: Software sales

With hardware in short supply — even a liquor shortage! — 2021 could be the biggest year for software Black Friday.

Sales abound! Lately, I’ve focused on pulling together an Apple iPad rig:

If you read some of these articles and wanted to give these apps a try, now is your chance.

Here’s a quick list of soon-to-be-gone bargains{

I could easily go on and on, but these are products that I actively use. Keep your eyes peeled when browsing!

I immediately jumped on the IK Multimedia Hammond B-3X app at half price and encourage you to do the same. One needs to take a deep breath before spending $60USD on an iPad app. However, B-3X is normally $130. If ever you wanted it…

B-3X is a stunning recreation. Although Korg Module’s B-3 organ sounds are good, B-3X has it beat, providing an abundance of live controls and a superb Leslie effect. So far, I’ve encountered only one drawback — B-3X does not merge MIDI messages from two Bluetooth MIDI sources. At any time, B-3X responds only to the Korg Microkey Air keyboard alone or to the Boss EV-1-WL wireless MIDI expression pedal alone. My experiments will continue and I may need to upgrade from midimittr (free) to Audiobus ($9.99).

I’m still hunting for good pipe organ sounds. I started a 7-day trial of the Korg Module Organ and Clavinet collection. If you don’t want to spring for IK B-3X, the Organ and Clav collection is a good bet. Many of the B-3 and Clav sounds really nail “the classics,” e.g., Stevie’s auto-wah clav. The pipe organs leave me wanting. But, hey, at a $9.99 sale price…

As to pipe organs, don’t forget the free Strand Organ and Jeux d’orgues Mini iPad apps. Made with love.

Keep an eye on Toontrack. They run their best sales during the holidays. Patience pays off. When EZKeys MIDI expansion packs are ten bucks a pop, it’s EZ to build a songwriting library.

If new site content is a little skint, I’m deep into a music-related coding project. Hint: it involves ChordPro. Between playing, new iPad apps, coding and the holiday, there’s not much time for writing.

Happy Thanksgiving!

Copyright © 2021 Paul J. Drongowski

Wire Less: Part 3, Boss EV-1-WL wireless MIDI expression pedal

Halleluia, the slow boat from Malaysia arrived and it brought a Boss EV-1-WL wireless expression pedal. The EV-1-WL (henceforth, “EV”) is a compact expression pedal which sends MIDI Continuous Controller (CC) messages over Bluetooth BLE, USB and conventional serial MIDI.

Boss has quite a bit of information on-line, so I won’t repeat too many of the basics here. No doubt, you’re here looking for my value-added.

My first impressions were:

  • Man, this thing is small.
  • Man, this thing is light.
  • This thing is robust.

My point of reference is the Boss FV-500L (FV) which was my mainstay volume and expression pedal for many years. Since my switch away from Roland to Yamaha (2011), I’ve been using the Yamaha FC-7 with MODX and Genos at home and at gigs. The FV-500L is built like a tank — and weighs like a tank. The FC-7 has held up pretty well although it’s not as Sherman-esque as the FV.

Boss EV-1-WL (fore) and Boss FV-500L (back)

Since we’re comparin’, the EV and FV achieve roughly the same angle in the down position. Due to the placement of the pivot point, however, the FV has a wider sweep than the EV. Some people may not like the EV’s relatively short sweep. The FC-7 has the widest sweep of all.

Boss EV-1-WL (fore) and Yamaha FC-7 (back)

Practically, the EV feels comfortable when sitting or standing. The FV is a little less comfortable when standing. The FC-7 is least comfortable for standing play if you absolutely need to reduce pedal position to its minimum point. I’ve had some success with FC-7 angle adjustment although its adjustment plate always seems to work itself loose. After trying the EV, I’m good with its sweep and playing angle.

The EV is ready-to-go right out of the box, including two AA batteries. I’m trying to build a wireless iPad rig:

So, that is my test set-up. I followed the pairing directions to a T and the EV came up in the EV-1-WL configuration app and in Korg Module Pro. [More Bluetooth gymnastics below.]

I recommend the calibration procedure. It works. I checked out the result with MIDI-OX and the EV sends over the full CC value range (0 to 127).

If I have a beef, it’s the amount of force needed to engage the EV’s expression switch. I pressed and pressed with the EV on a carpeted floor and could not get the switch to engage. There are LEDs to indicate the switch state and they just were not coming on. I was able to engage the switch by putting the EV on a table and pressing very firmly with my hand. The app has a sensitivity adjustment and it works. Expect to use it.

I’m not really sure how I would use the expression switch when playing. And now here’s my second beef — the EV-1-WL sends only MIDI continuous controller (CC) messages. No pitch bend, no program change. Worse, it doesn’t cover the full range of CC messages, supporting only CC#1 to CC#31 and CC#64 to CC#95. Somewhat dubious omissions. I really want to send bank select (CC#0 and CC#32) and program change via two external foot switches. Bummer. I hope Roland/Boss add this capability.

So, what else doesn’t mother tell you? As usual, Boss are less than forthcoming about important details hoping to force you into one of their own accessories. Here’s a few helpful details:

  • Power adapter: Boss recommend the PSA-120S adapter: 9V DC, 500mA, tip/center negative. The 1SPOT works just fine.
  • Footswitch break-out cable: Control 1 (CTL1) is tip and Control 2 (CTL2) is ring.
  • 3.5mm MIDI break-out: The 3.5mm MIDI jack (plug) follows the “Korg convention”, which adheres to the current MIDI Association standard.

Serial MIDI works as advertised. I check out both serial MIDI operation and MIDI over USB using MIDI-OX and Windows 10. No special driver required. Please see my post about 3.5mm MIDI conventions.

Bluetooth MIDI

The olympics of the weird always commence with IOS and Bluetooth MIDI. I’m running on IOS 14.8.1.

Over several days of use, the EV consistently could not remember its pairing with my iPad. Turn it on and it flashes the blue LED slowly, suggesting that it awaits the iPad. Whether the iPad’s Bluetooth is initially enabled or disable, the EV just sits there and flashes slow blue. No connection.

The EV does not appear in the list of Bluetooth devices displayed in the IOS Bluetooth settings. The Korg Microkey Air is there, but the EV is AWOL. Right now, I’m not sure who is ghosting whom.

If an app has an explicit rendezvous feature, you can re-pair with the EV by pressing the EV’s pair button. The EV flashes fast blue when it is ready to pair. Standard operating procedure is to pair explicitly when sitting down to play. Korg Module Pro and the Roland/Boss EV-1-WL app will rendezvous with the EV when requested. Once the app connects, I leave the app running in the background even if I move on to SampleTank or iSymphonic. SampleTank does not not have the ability to explicitly rendezvous (initiate pairing) with the EV or any other Bluetooth MIDI device. I wish that all apps had this feature.

I’ve had spotty results with midimittr. midimittr will establish a Bluetooth session, slightly increasing latency. However, I’ve observed occasional bizzarre behavior with the EV through midimittr — huge leaps in volume indicating the presence of a true bottleneck somewhere in the MIDI message chain. Not good.

One other small snag. Be sure the EV is sending the correct CC message as needed by the receiving app. SampleTank IOS does not respond to CC#11 Expression. [Surprise!] I configured the EV for CC#7 Volume and all is well.

Overall, I’m satisfied with the EV-1-WL. The Bluetooth MIDI part is a little quirky and tetchy. I hope Roland/Boss get this ironed out. As Korg have (unfortunately) discovered, chasing Apple updates, etc. is a migraine headache, having had their own share of problems with the Microkey Air and IOS Bluetooth.

Copyright © 2021 Paul J. Drongowski

Critique: Genos™ drawbar organ

I like the Korg Module Pro “GospelOrgan” patch, so I tried to create a sound-alike voice on Yamaha Genos. Genos and MODX share the same waveforms and DSP effects, and I may port the result to MODX, too.

The experience recalled my previous misgivings about the rotary speaker simulation and limitations of the Genos DSP effect implementation. I will amplify those comments here.

Mid- to upper-level Yamaha arranger workstation have long had a drawbar organ feature which Yamaha calls “Organ Flutes.” This feature dates back to 1999, appearing in the PSR-9000 keyboard. Although a few details have changed over the years, Yamaha has not substantially overhauled Organ Flutes. It’s time, Yamaha — the world has moved on. I’d love to see the new YC organ technology in Genos. It’s the flagship of the arranger line and YC organs would definitely differentiate Genos from its lower-cost brethren.

Yamaha Organ Flutes main voice editing screen

The main, tweakable organ parameters are:

  • Nine drawbars
  • Percussion (first note/each note, length)
  • Percussion pitch (4′, 2-2/3′, 2′)
  • Response (onset delay of drawbar and percussion sounds)
  • Vibrato (on/off, depth, speed)
  • Rotary speaker speed (slow/fast)
  • Volume level (1 to 8)
  • DSP effect (e.g., rotary speaker)

For B-3’ers, the 4′ percussion pitch is the 2nd harmonic setting and the 2-2/3′ percussion pitch is the 3rd harmonic setting. The 2′ pitch supports non-Hammond organs which require it.

Compared with a contemporary clonewheel, one immediately notes a few missing features:

  • Vibrato only, no chorus
  • No key click
  • No rotor noise
  • No leakage

Overall, the Genos B-3 is super clean and polite — not vintage. MODX (Montage) provides key click, rotor noise (grit) and rotor whistle waveforms. Why does Genos lag behind? Although MODX is AWM2, not modeling, these extra waveforms are better than nothing at all.

The Genos synthesis engine is also AWM2 sample-playback and AWM2 provides the Organ Flutes vibrato. Organ Flutes does not simulate the one-of-a-kind Hammond vibrato/chorus scanner. The Korg Module “Gospel Organ” voice incorporates C-3 chorus and the AMW2 vibrato just doesn’t cut it (head-to-head comparison). I had to substitute Genos’ V-2 setting and move on.

Simplified, graphical rotary speaker interface

If you want to change the rotary speaker type, you need to dive through the effect setting button at the top of the Organ Flutes screen. After selecting the insertion effect, Genos displays a skeuomorphic (graphical) rotary speaker cabinet with a few knobs. In the screenshot above, we get rotary speed, horn and rotor balance, and microphone left/right angle. Like many (most?) rotary speaker simulations, the rotary effect emulates the sound of a mic’d up, stereo recording of a Leslie, not a horn and rotor moving air in a room.

Additional rotary speaker (DSP) parameters are changed by tapping the “Detail” button in the lower right corner. deep-diving reveals a few more deficiencies:

  • Missing parameters due to a limitation on the number of DSP effect parameters (16 parameters maximum)
  • Only one insert effect (typically the rotary speaker)
  • Volume control is post-effect and does not affect overdrive

Here is a little more information about each issue.

First page of rotary speaker parameters

At heart, the Genos (PSR, Tyros) sound engine implements the Yamaha XG synthesis and effects architecture. The XG architecture allows up to sixteen (!6) parameters per DSP effect unit. Unfortunately, Yamaha’s DSP engineers are creating effect algorithms (AKA “effect types”) with more than sixteen parameters! The MODX ROTARY SPEAKER 2 algorithm has eighteen (18) parameters. The Genos REAL ROTARY effect type is the same algorithm as MODX. However, only 16 parameters are accessible or stored on Genos. The two missing REAL ROTARY parameters are:

  • Slow-Fast Time of Rotor
  • Fast-Slow Time of Rotor

You cannot change these rotor ramp times on Genos, yet, you can change them on MODX.

This issues affects the Genos UNI COMP compressor algorithm (MODX: UNIVERSAL COMPRESSOR DOWN). Dare I mention the inability to specify a side-chain part, too? People are trying to create EDM on arrangers.

The XG architecture allows only one insert effect per part. The Organ Flutes insertion effect is typically a rotary speaker simulator. The MODX effect architecture, on the other hand, allows two insert effects per part. Yamaha synths take advantage of the second insert effect to add overdrive or vintage EQ:

  • Rotary speaker 1 Multi FX (Distortion Solo)
  • Rotary speaker 2 VCM 501 EQ (Flat)
  • Amp Simulator 3 (Tube) VCM 501 (Flat)
  • Amp Simulator 1 (Stack 2) Rotary Speaker 1
  • VCM 501 EQ (Flat) Rotary Speaker 1

The rotary speaker drive alone is not enough to warm up the basic sound nor is it enough to get a sweet, realistic overdrive with guts. I experimented with the Genos REAL ROTARY effect and got some very squirelly results at high drive levels. The algorithm can be pushed in unexpected, undesirable ways while searching for true funk.

Unlike a real Hammond/Leslie combination, the Genos expression pedal controls post-effect part volume. This is like putting the volume control after the Leslie speaker. A Hammond B-3 pedal controls the level into the Leslie pre-amp. Thus, the pre-amp frequency characteristics and overdrive track the Hammond pedal. The Yamaha YC61 modeling gets this right. Putting the volume pedal before the pre-amp lets the player get clean or dirty in the same way a guitarist uses picking and/or the guitar volume knob to distort or clean up their tone.

If the Genos developers must work around the XG architecture, they should consider a new effect algorithm that combines overdrive with the rotary speaker simulation. The algorithm should allow foot pedal control over the Leslie pre-amp input level. Genos and other PSRs allow wah pedal control, so they obviously know how to achieve this capability within the current architecture.

Copyright © 2021 Paul J. Drongowski

SampleTank IOS and Miroslav vs. Korg Module Pro

Just like finding a 20 dollar bill in a drawer full of old socks, it’s a pleasant surprise to discover that you already own a useful iPad music app and simply forgot about it. Thus, I installed IK Multimedia SampleTank IOS on my iPad and gave it a try. (Again) Even better, I restored in-app purchases, finding additional B-3 organs and, ta-da, Miroslav Symphonic Mobile Edition. (Henceforth, “Miroslav”.)

Miroslav goes back a long way to 1994. The mobile edition is a cut-down version of the current, big and improved Miroslav Philharmonic 2 library. The full library is 2.27GB while the Mobile Edition tips in at a modest 532MB.

Miroslav Vitouš, by the way, is one heck of a jazzer. I was well-aware of his work as a leader and as a sideman (Herbie Mann, Chick Corea, Roy Ayers, Larry Coryell, and others) before hearing the original Philharmonic library.

Sonically, Miroslav has always had its own unique character. You either love it or dislike it. I’m on the love side although some of the string sections sound a tad dated. I like the woodwinds and horns best, rating them a notch above the Korg Module Pro voices. As to variety and solo instruments, Miroslav Mobile trounces Module Pro in the orchestra department.

As to B-3 organs, Module Pro wins the contest. Frankly, I am not a fan of SampleTank IOS drawbar organs, which are very rock-oriented. Further, SampleTank IOS does not have a rotary speaker simulation built-in. I can only assume that IK want you to purchase Hammond B-3X for iPad ($130 USD) or AmpliTube Leslie. I found, however, that I can easily switch between Module Pro and SampleTank IOS while keeping the Korg Microkey Air connected over Bluetooth. Problem solved.

As to church organ, I blended SampleTank’s Church Organ Air with Miroslav’s Cathedral Organ. The solution is good enough for basic hymn playing. I still plan to purchase Module’s organ (and clav) expansion pack when it goes on sale. The organ expansion pack includes a few traditional pipe organ voices.

SampleTank IOS plus Miroslav Mobile complements Korg Module Pro rather well. I forgot about dear old Miroslav after moving to our new house and to a new iPad. I’m glad that I remembered! If you need to choose one app, there are differences to be considered in the synth engines. Please read on.

Korg Module Pro

As I mentioned in my review, Module Pro with the performance expansion pack allows two-voice layers and splits. Splits and layers are created and stored within set lists.

Korg Module Pro Set List management

Module’s Set List management screen lets you choose and load a combination (combi). Tapping the keyboard symbol on the right hand side of the selected entry takes you to the screen where you set the mode: Single voice, Layer or Split. There, you can balance levels, shift octaves and set the split point.

If a voice needs tweaking, you can switch to the standard Module instrument screen for voice edits. When finished, you need to switch back to set list mode and save the set list. The set list combi retains any changes. (You need to tap the file icon in the upper left corner to show the appropriate pop-up menu.)

Korg Module Pro edit screen for sample-playback voices

SampleTank IOS

Instead of set lists, SampleTank has its Live mode where you can create multi-voice layers and splits. SampleTank is better-featured that way, allowing up to eight voices to participate in a combi.

SampleTank IOS Live mode screen

In the example above, instruments are split left (two string layers) and right (two flute layers). You can see the split and layer relationships in the pane at the bottom of the screen. Since it’s all touch-based, one slides split points left and right. It’s quite natural. Please note that this example patch is already well-beyond Module Pro’s simple two-level layers and splits. SampleTank IOS also allows overlaps around the split point, eliminating a jarring sonic change when a musical line crosses the split point.

Unlike Module, SampleTank IOS has a strip of control knobs for voice tweaking. Both apps let you change attack, release, cut-off, resonance, effect type and effect levels. This level of basic editing is usually sufficient.

SampleTank IOS level and pan control in Live mode

All four voices in the example are on MIDI channel 1. Thus, all four individual voices sound (modulo splits and layers) when a note is struck on the Korg Microkey Air. In order to set volume and pan levels, one taps the slider icon in the upper middle part of the screen. When mix is enabled, each part box shows a volume and pan knob.

Managing the list of multis

Overall, I give the win to the SampleTank engine. Eight layers/splits is more than enough and there isn’t any need to change modes or screens in order to make voice edits.

Module Pro set lists have mo’ power, however. You can attach audio songs, PDFs and other performance aids to a set list entry. I find the iPad screen too small for most of my charts, so I’m not taking advantage of those particular set list features. Access to performance aids might tip things toward Module Pro, if that’s your thing.

Copyright © 2021 Paul J. Drongowski

Korg Module Pro for church

Over the last several weeks, I’ve been practicing and playing through church tunes. Our liturgical group covers genres from pop, light rock, classical and traditional hymns to gospel. I’m trying to keep up my chops while our group awaits its post-pandemic return.

This has been a good opportunity to wring out any issues with Korg Module Pro (on Apple iPad) and a Korg Microkey Air 49 controller. Both Korg products have been solid and I feel comfortable with the idea of using this combo live in church.

I’ve also been able to evaluate the suitability of Korg Module for our church repertoire. Module’s set-list features are very easy to work letting me build quick-access layers and splits. Set-list features are well thought out and I strongly recommend purchasing the Module Performance Expansion.

Thankfully, set-list combis store patch and effect edit, allowing me to dial in a consistent level across combis and to tweak attack, release and reverb. Just don’t forgot to save the set-list after making edits!

Right off the top, I’m quite happy with Module’s stock Hammond organ sounds. My three favorite patches are Gospel Organ, Simple Organ and Clean Organ. Church music doesn’t require over-the-top distortion. The Korg rotary speaker simulation is very good and the speed transitions (ramps) are realistic — a vital component for gospel music.

The only thing missing organ-wise is a traditional church organ. I have not purchased the Korg Organ and Clav Collection which offers a classic organ. I intend to buy the organ expansion during the next Korg app sale. In the meantime, I’m substituting Simple or Clean organ.

As to other instruments, I need orchestral woodwinds, French horn, and strings. Compared with Miroslav Philharmonik Mobile Edition, Module Pro is a general purpose, all-rounder, not a specialist like Miroslav. The sounds are good enough for live play, but would not please a purist. Nor would they be adequate for mocking up symphonic music.

Korg offer the KA Pro Orchestral Dreams expansion. “KA Pro”, by the way, means Kurt Adler Productions, who sell a full range of orchestral samples. If Korg Module isn’t to your taste, the KA Pro samples are available in the CrudeByte iSymphonic Orchestra (iPad) app. Orchestral Dreams is comprised mainly of full orchestra emulations. The emulations implement multiple velocity levels including percussion. Full orchestra emulations are not suitable for our repertoire (especially the percussion!) and I don’t plan to buy this expansion.

The Korg sounds make for good layers. The Woodwind Ensemble patch is serviceable by itself, but is fuller and warmer when layered with the Horn Ensemble voice. Same for the Solo Flute. By itself, the Solo Flute resembles a Mellotron flute, especially when playing chords or clusters. Horn Ensemble knocks down the tron-y flavor.

Here’s a quick list of my favorite patches: Wind Ensemble, Horn Ensemble, Synth Horn, Romantique Strings, Strings Pad, Solo Flute.

What’s missing? Module has solo violin and cello, but it’s missing most other solo orchestral instruments (including essential double reeds). The violin and cello voices have hard attacks and a lot of bow — difficult to tame. Thus, overall playing is limited to mainly ensemble or pad-like voices. Quite the shame. Korg need to add an orchestral expansion with solo instruments and/or small sections a la Miroslav.

Yes, I auditioned the Triton expansion pack. Having owned a Triton Taktile 49, I’m not satisfied with the Triton orchestral voices, solo voices, in particular. That’s why the Triton Taktile is gone, gone, gone.

Oddly, I have not found a simple synth pad among the plethora of synth patches. I want something very light and plain for layering — a non-fat synth pad without sweeps, sparkles and other tricks.

Functionally, I wish layers could cross-fade (“tilt”) across the keyboard. This would let us overlap (cross-fade) the upper and lower instruments forming a soft split. Hard split points are rather jarring when a right- or left-hand line needs just a note or two past the split point. Examples include Oboe/Bassoon or Oboe/Cello splits where a short blend across the split point is highly desired for continuity.

Overall, Korg Module Pro is a solid, reliable citizen within its limitations. Module is intended to appeal to and serve a wide range of users. If you need good electric piano or high-quality acoustic piano, it’s got ’em, too. I stand by my earlier positive recommendation.

Check out these related blog posts:

Copyright © 2021 Paul J. Drongowski

Review: Future Kit FK651 stereo simulator

The Yamaha PSS-A50 is strictly MONO OUT and needs a little spice. After trying the Haas effect via a Synthrotek Dev Delay, I ordered a Future Kit FK651 Stereo Simulator. Future Kit — also known as “Thai Kits” — offers a range of audio kits including the FK651. I ordered through Amazon with Future Kit in Thailand handling fulfillment. Thanks to the pandemic and global shipping delays, I finally received the FK651 after a few weeks of waiting. Can’t blame Future Kits for the delay. They shipped right away putting the FK651 on the proverbial “slow boat from Thailand.” Thanks, pandemic!

Future Kit FK651 Stereo Simulator (click to enlarge)

The FK651 takes a MONO signal, splits it, and sends each side into a short filter chain. The left and right filter chains have different peak frequencies:

    Right channel 
-------------
32Hz (Note C1)
500Hz (Note C5)
2kHz (Note C7)
Left channel
-------------
64Hz (Note C2)
1kHz (Note C6)
4kHz (Note C8)

The filter chains alter each side of the stereo pair just enough to create the impression of different source signals coming from the right and left channels.

Kit of parts

The FK651 kit is fairly small making it suitable as a PSS-A50 mod. The small board should fit easily within the PSS-A50 even with the A50’s rather large speaker. I tested the FK651 with a 9V battery and it worked well even though 9V is below the suggested 12V supply voltage. I’m hoping to tap power from the A50’s 6V battery supply. Fingers crossed.

Why order one when you can have two?

You’re not seeing double in the picture above. I ordered two FK651 kits. By the time I paid for one kit and shipping, it wasn’t much more to order two just in case I blew up a kit. It’s happened to me before, e.g., horribly destroying a Blokas MIDIboy during assembly.

Part and board quality are good.

Assembly

Assembly is straightforward. Given the number of parts, I assembled the kit in four phases:

  1. Resistors
  2. IC sockets and quad op amps
  3. Capacitors
  4. Wiring

Due to the placement of the power and audio pads, I couldn’t use terminal blocks. I decided not to use the enclosed terminal pins and soldered external connections directly to the printed circuit board (PCB).

Future Kit FK651 Stereo Simulator (assembled)

There were two minor concerns. Although the printed directions are OK, the instructions do not include a resistor color code chart. If you decide to build an FK651 of your own, here’s my look-up chart.

Ohms       Resistor color code 
---- ------------------------
220 Red - Red - Brown
470 Yellow - Violet - Brown
1K Brown - Black - Red
2K Red - Black - Red
4.7K Yellow - Violet - Red
15K Brown - Green - Orange
47K Yellow - Violet - Orange
56K Green - Blue - Orange
100K Brown - Black - Yellow
470K Yellow - Violet - Yellow

The second concern is a single inconsistency between the parts provided, the schematic, and a silk-screened legend on the PCB. [Does anybody use silk-screening anymore?] I found a 4.7K resistor when the PCB called for a 47K resistor. The part placement picture on the paper instructions has it right — “4K7”, the alternative way of writing “4.7K”. The PCB legend says “47K” and is wrong. Otherwise, it’s all pick, place and solder assembly.

The picture above shows the completed board ready for testing. The audio wires come out to 3.5mm jacks with ring, sleeve, tip (RST) terminal blocks. This should make it easy to reconfigure the FK651 during bench experiments.

The power cabling may look unnecessarily complicated, but I decided to experiment in preparation for possible integration with the PSS-A50. The JST connectors should make for plug and play with the A50. The power wires solder into a tiny “distribution board” that I nibbled out of an old proto-board. The result is a tad ugly.

Use

Power up and the FK651 works the first time. 🙂

As to testing, perceived effect depends upon source material. I had reasonable success with a drum loop (WAV demo). The first half of the demo is the direct A50 audio and the second half is FK651 simulated stereo.

I applied the FK651 to a full mix (WAV demo). Again, the first half of the demo (about 10 seconds) is the direct A50 audio and the second half is simulated stereo. With the full mix, there is a clear difference between direct and effected. Whether it’s a stereo effect or not is subjective.

Clearly, the FK651 messes with the distribution of energy across the frequency spectrum. The effected full mix demo audio has less bass. As it is, the FK651 has a profound effect on a mix, maybe an unwanted effect that undoes your hard work balancing and mixing. The FK651 may be best applied to individual instruments, not a full mix.

Full mix direct and effected spectrum (click to enlarge)

I experimented with ways to visualize the FK651 at work. Here is a false-color spectral plot for the full mix demo. The left and right channel plots are identical during the first half when the right and left channels each carry the same signal. During the second half of the demo, the right and left plots show differences due to the different filter chains applied to the left and right signals, respectively.

As to signal gain, boy, there is an abundance of gain! The A50 line OUT is the headphone OUT, which itself is a fairly hot signal. The FK651 adds even more gain. I had to attenuate source signals heavily in order to sample cleanly without distortion. I also had to carefully balance the level of the first and second halves of the demo to avoid the “louder is better” bias of human hearing.

There are still a few more experiments to try. First, it might be helpful to mix a little of the original source signal into both the right and left channels as a way to mitigate loss in specific frequency bands. This may also be a way to control the depth of the simulated stereo effect (dry plus wet). Another trick to try is putting delay on one of the outgoing channels to enhance the Haas effect.

All in all, the Future Kit FK651 Stereo Simulator is an easy build and a fun toy (tool). It’s not a be all or end all solution. The Volca Mix stereo spread effect beats the FK651 hands-down. The FK651, however, is small and inexpensive enough to deploy in a circuit mod as long as you can tame its gain.

Copyright © 2021 Paul J. Drongowski