About pj

Now (mostly) retired, I'm pursing electronics and computing just for the fun of it! I'm a computer scientist and engineer who has worked for AMD, Hewlett Packard and Siemens. I also taught hardware and software development at Case Western Reserve University, Tufts University and Princeton. Hopefully, you will find the information on this site to be helpful. Educators and students are particularly welcome!

Yamaha Extrack app now in the USA

Yamaha have announced the Extrack app in Europe and the USA. As I mentioned in my preview, Extrack is a practice buddy and a stem extraction tool. More from Yamaha itself:

Yamaha Corporation announced today the U.S. and European launch of Extrack, an iOS/Android music app that allows users to practice and play their instruments along with their favorite songs as if they are part of the band, following its successful debut in Japan.

Built by musicians for musicians, Extrack makes it easy and fun for a user to learn, practice and play along with their own library of songs. Extrack uses proprietary stem separation technology to automatically extract individual instrumental parts such as guitar, drums, bass, piano or vocals from the user’s own audio files on a mobile device, making it possible to adjust the volume, mute or isolate individual instruments.

Extrack automatically transcribes chords for guitar and piano, helping users learn their favorite songs with confidence. It also features song structure analysis, allowing users to repeat sections, skip by measure, and adjust playback speed.

Extrack subsumes much of the Yamaha Chord Tracker application.

There are two levels: free and subscription. An Extrack subscription is called “Extrack Pass” and it gives you:

  • Unlimited song analysis (Free: 5 songs per month)
  • Up to 50 favorite songs (Free: 3 favorite songs)
  • Seven instrument separation (Free: 4 instruments)
  • Up to 50 songs in your Extrack Library (Free: 5 songs)
  • Fine tune tempo to two decimal places (Free: One decimal place)

An Extrack Pass subscription is $39.99 USD per year or $5.99 per month. A 7-day free trial is available in either case.

The current USA IOS version is v1.1. I’ve downloaded the app and I’m very curious about the stem separation process and results.

In use

Here are four short stems extracted from Fleetwood Mac’s “Go Your Own Way”. No tweaking and tweezing. Simply import the track from my music library and analyze. The Extrack analysis phase takes a minute or two. Then, I played each stem into Sound Forge.

There are four stems (Vocal, Drum, Bass and Others) because I’m cheap and I’m running the free edition of Extrack. 🙂

Even though I saved the audio to MP3, the MP3 files are a reasonably accurate portrayal of what I heard through the monitors during record. The Vocal, Drum and Others stems have audible artifacts. The Vocal and Drum extractions aren’t too bad although you would want to bury the artifacts in the mix. The Bass stem seems to be missing the low-mids that give an electric bass punch.

Mixing three or four stems together and you get an acceptable music-minus-one practice experience. Extrack gets the job done as a practice buddy. I don’t think pro re-mixers are going to give up their high-end tools for Extrack, however. I should crank “Go Your Own Way” through SpectraLayers and hear what I get. Get what you pay for?

Copyright © 2025 Paul J. Drongowski

Extrack manual

The following images are the embedded Extrack manual (Copyright Yamaha, thank you). Click on an image to enlarge it.

Yamaha Extrack manual (1)

Yamaha Extrack manual (2)

Yamaha Extrack manual (3)

Yamaha Extrack manual (4)

Review: TalentCell 12V battery pack

The wind-up

First, let me explain… Our church was designed and built long before architects anticipated the switch from (pipe) organ to acoustic piano for liturgy. Nor did they ever expect guitars, drums, brass, woodwinds or electronic instruments. To add insult to injury, the original “church organ” — rarely used — consumes a huge amount of real estate. Oh, and forget about storage space for music stands, mic stands, etc. It’s non-existent.

Thus, I play in an insanely small space on a choir riser. No two- or three-tier rig; MODX6 barely fits.

There are two aging electrical outlets (mains) to one side of the choir area. We musicians must fumble over choir members — mere singers! — to access the wall outlets. Set-up is like playing a game of Twister.

The pitch

I’ve tried a number of battery-powered rigs and none have been fully satisfactory — until now. Thanks to two Youtube videos, I sprang for a TalentCell rechargeable 12V 6000mAh lithium ion battery pack. $32 USD and it’s going to the gig with MODX6 and a Yamaha Stagepas 100BTR.

The littlest Stagepas deserves a review of its own someday. Briefly, the Stagepas 100BTR is 100W (Class-D), 120dB SPL, 70Hz-20kHz, and weighs 12.1 pounds. It contains its own rechargeable battery.

The TalentCell has two output ports: +12V (nominal) and +5V USB-A. The +12V connector takes a 5.5mm x 2.1mm jack just like MODX. The 12V port doubles as the charge port. The TalentCell has its own power switch, thank you.

TalentCell 12V 6000mAh battery pack

MODX6 power consumption is 16 Watts at 12V. That puts typical current draw at (16W / 12V) ~ 1.33 Amps. With a 1.33 Amp draw, the TalentCell should be good for (6000mAh / 1333mA) = 4.5 hours. You may or may not get 4.5 hours of power. I would never run a battery to its ragged edge! However, you can, should and will get 2 hours and that is good enough to cover a Sunday service plus rehearsal. I think if I played a four hour gig, I’d buy a second TalentCell and bring it along.

I am definitely not the trusting type, so I’ve been running on battery power while practicing this week. I feel pretty good about achieving a two hour run-time. I have not experienced any power glitches or drop outs. I would not deploy this rig if there was even the hint of unreliability.

If you watch the videos or read reviews, you will hear and see comments about the TalentCell’s nominal 12V output. Fully charged, my digital meter reads 12.1 Volts (unloaded). After two hours use (3 of 5 power LEDs lit), the meter reads 11.3 Volts. Yes, that is a tad less than 12 Volts, but it is also typical behavior for a battery pack.

With a few minor exceptions, the MODX digital (+5V, +3.3V) and analog (+9V) electronics operate on power which is internally regulated. The internal regulators require minimums of 10 Volts (regulated down to 9V) and 8 Volts (regulated down to 5V and 3.3V).

Thus, the slightly lower nominal voltage has not been an issue for the sensitive stuff.

The TalentCell comes with its own 12.6V power adapter and Y-cable in the box. The Y-cable supports charge while in use. The Y-cable is rather short, so I bought a 3 foot 5.5mm x 2.1mm extension cable. With the TalentCell on the floor, the 3 foot extension cable is long enough to reach the MODX6 power input while the MODX6 is resting on its stand. I play sitting, BTW, so you will need a longer extension cable if you play standing and want to leave the TalentCell on the floor.

I feel pretty good about this solution and I hope that my reasoning and analysis are helpful. As always when it comes to power, think thrice. Check voltages, current, operating time and polarity. Don’t leave anything to chance.

The final score

The gig went according to plan with no issues. I played through my trusty Bose SoundLink® Color II speaker — just enough to blend with the voices on this outing.

I ran the MODX6 on the Talentcell battery pack for roughly 90 minutes, start to finish. The pack registered four out of five LEDs capacity-wise. I measured the output voltage at home: 11.3 Volts DC.

I intend to make this my standard set-up. I simply unpacked everything, set the MODX6 on its stand, hook up the cables and play. I don’t have to crawl around looking for outlets and I don’t trip over choir members. I’m taking the win. 🙂

Copyright © 2025 Paul J. Drongowski

Yamaha Extrack playing partner

EXTRACK is a Yamaha app which hasn’t yet broken surface in the United States. It was released in Japan about five months ago. My guess — Yamaha is in the process of “globalizing” the app for international release, including the subscription Extrack Pass service.

In Yamaha’s own words (translated from Japanese):

Extrack is a music app for iOS and Android that lets you practice and jam with your favorite songs, experiencing the immersive experience of playing along with a real artist. The basic features are free with no expiration date. By paying for a subscription, you can enjoy even more features.

Yamaha is always looking for ways to enhance instrument sales. Extrack is a music-minus-one practice partner on steroids.

Yamaha Extrack stem mixing

Extrack uses stem extraction technology to separate an audio song into individual instrument parts, e.g., vocals, guitar, piano, bass, drums and wind instrument. You can adjust the volume of individual parts and remix the song, either enhancing a part to be learned or suppressing a part so you can take over (minus-one). Yamaha also throws in chord analysis, variable playback speed (tempo change), transposition (key change) and partial repeat.

Here’s the Extrack Quick Start video for ya.

Yamaha keeps getting better at IOS integration. You can analyze songs on your phone (tablet), or songs saved on iCloud drive, Google Drive, Dropbox or OneDrive. Extract handles songs encoded in MP3, AAC and FLAC. Songs from streaming services cannot be loaded (restricted rights). Analyzed songs are stored in an “Extrack Library”. The number of songs in the Extrack Library is limited, but the number can be increased through a paid subscription (Extract Pass).

Speaking of which, only basic app functionality is free. The Japanese Extrack Pass subscription service (available through in-app purchase) is ¥7,000 ($47USD) for one year and ¥900 (about $6USD) per month.

Yamaha Extrack chord analysis

Extrack possesses Chord Tracker-like features. You can choose chord symbol, TAB, keyboard, and notation views. Guitarists will appreciate the CAPO feature. There are a few refinements over Chord Tracker such as the ability to shift the beat in order to align chord changes with bars. (Chord Tracker sometimes loses “the one.”) There is a metronome which syncs with playback.

Like Chord Tracker, Extrack identifies song sections (intro, verse, chorus, etc.) You can navigate within a song by section.

On a different front, Yamaha’s piano evoce ß application has dropped from sight. The dedicated web site is nowhere to be found. Here is Yamaha’s brief description of the application:

“piano evoce ß” is an application that analyzes music data and provides a function that plays back vocal parts in sync with the user’s performance. By connecting a keyboard instrument such as an electronic piano or keyboard to your Mac and playing along with the chords displayed on the application screen, the AI ensemble technology will play back the vocal parts in sync with your performance, allowing you to easily enjoy the feeling of playing in an ensemble.

I captured a little bit of information from the initial announcement.

As I’ve said time and again, Yamaha experiments with technologies and tools with no guarantee that any of it will appear in an actual product. Maybe Extrack aced piano evoce ß?

Copyright © 2025 Paul J. Drongowski

Notating with deCoda and Sibelius

Mark Isham is one of my all-time favorite composers and artists. I first heard him play with Group 87 (1980) soon followed by his debut solo album, Vapor Drawings. Since then, he has contributed to many recordings and has composed over 200 scores.

I listen to the local KING-FM classical radio station — the HD2 Calm (“evergreen”) channel, in particular. I need calm, these days. Every now and again, a track from October Sky, AKA “Rocket Boys”, will pop up. October Sky (1999) is one of those 200+ scores by Mark Isham.

Unfortunately, scores or reductions are not available for all of this work, including the “Rocket Boys” cue from October Sky. So, what the heck, let’s put zplane deCoda to work. As I wrote in my review, deCoda is a tool to help learning and notating.

I’ve used deCoda to notate a number of small, simple songs. My review shows one example, Space Rock by the Baskerville Hounds. You might know this tune as 2120 South Michigan Avenue, so we’re not talking high art, here. 🙂

deCoda analyzes an audio song much the same way as Yamaha Chord Tracker. Chord Tracker (and Yamaha Smart Pianist) identifies tempo, measures, structure and chords. I ran Rocket Boys through Chord Tracker, and yep, it found the basic chords in the piece.

Chord Tracker, however, does not extract melody lines. That’s where deCoda comes in. deCoda paints squiggles in a kind of piano-roll chart where time unfolds in the horizontal direction and pitches (notes) are arranged in the vertical direction. The squiggles show the pitch and duration for the various tones found by deCoda’s analysis phase. deCoda identifies chords, too, and displays chord names across the top of the piano-roll.

zplane deCoda and Avid Sibelius

A minute or two into the track, a flute plays the main theme. deCoda has a windowing feature that lets you zoom into a range of pitches and a region of the stereo field. I used this feature to close in around the flute line.

I could have used deCoda’s draw tool to mark the individual notes. These notes can be exported as MIDI. Instead, I decided to draw notes directly into an Avid Sibelius score. I resized the Sibelius window so I could compare the deCoda squiggles against the notation. That technique worked out pretty well!

I entered chord symbols based upon deCoda’s analysis. There is a lot going on in the recording, especially when other instruments and sections are brought into play. deCoda gets a bit more “distracted” than Chord Tracker and one needs to use their ears when notating chords. Chord Tracker forces chord changes to beat boundaries and its chord charts are simpler and, thus, cleaner.

zplane deCoda editing the beat grid

Underscores are often written and/or conducted to picture in order to hit specific images. “Rocket Boys” has a lot of rubato and the tempo shifts throughout the piece. Quite often, the deCoda squiggles did not line up with its beat grid.

The deCoda project panel has a button to edit the beat grid. Press this button and you can draw a measure that aligns the grid with the audio music. Thanks to this feature, I didn’t have to guess note starts, stops and durations. Henceforth, I will make frequent use of beat grid editing!

Overall, this has been a fun afternoon project. The process was good for ear training and I have a very simple lead sheet for “Rocket Boys”. Chalk another win for zplane deCoda (and Sibelius).

Copyright © 2025 Paul J. Drongowski

Yamaha CE20 FM synthesizer (RIP?)

I took a whack at repairing my 1982 Yamaha CE20 FM synthesizer. No joy, I’m afraid. I didn’t spot any obviously bad (fried) components, e.g., leaking electrolytic capacitors. I re-seated two fuses on the main logic (DM) board. Nope.

Well, the next step is to test the output voltage from the three voltage regulators. Fortunately, the regulator leads are exposed and I won’t need to disassemble the DM and symphonic modulator (SA) boards, again.

The CE20 service manual sadly lacks circuit schematics or a concept of operation. A few LEDs light up, but I don’t hear the familiar click of the muting relay. I wish Yamaha had published a schematic or start-up flow-chart. That information would assist signal tracing and diagnosis.

If I can’t find anything easy to fix, I’ll have to give the CE20 a proper burial. 🙂 The Yamaha Reface DX beats the old CE20 in many ways except for the CE20’s aftertouch keyboard, which was a real pleasure to play. Here’s how the CE20 and Reface DX FM implementations stack up:

                         CE20        Reface DX
                     ------------  ------------  
    Keys             49 full size  37 mini keys
    Key response      Vel sense     Vel sense
                      Aftertouch
    Polyphony
        POLY voices       8             8
        MONO voices       1             1
    Patches
        POLY voices       6          32 total
        MONO voices      14
    Ops per voice         2             4
    Effects               1             7
    Display              No            Yes
    Programmable         No            Yes
    MIDI                Nope           Yes
    Pedals           Exp, Sustain    Sustain
    Speakers             No          2 x 3cm
    Battery power        No            Yes

The CE20 voices are preset-only and cannot be reprogrammed. The Reface DX, on the other hand, has a spiffy user interface and 32 patch locations.

Even mentioning MIDI is a bit of a joke (1982!) and USB wasn’t born yet. Aside from the technical challenge, it’s hardly worth the repair. I ain’t gonna spend money on it…

I took pictures of the main DM board and the SA symphonic modulator board. Enjoy! No surface-mount devices inside. The SA board has the muting relay, BTW, in the upper right corner of the picture. Enjoy the view!

Yamaha CE20 main logic (DM) board

Yamaha CE20 symphonic modulator (SA) board

Copyright © 2025 Paul J. Drongowski

Bored ape: Go:keys revisited

All I can remember from grade school religion classes: “Avoid the near occasion of sin.”

Thus, I rolled into my local music store with trepidation. I had to get out of the house. 🙂

First, I want to say a few good words about Kennelly Keys, our local musical instrument chain. They have a decent selection of bread and butter keys on the floor. I always have fun chatting with their staff. Kennelly hires true laid-back PNW types.

I would say, “Go to Patchwerks for synths.” Unfortunately, Patchwerks has closed. Major bummer, that was one sweet store. RIP.

I wanted to check out Roland Go:keys 5 (or 3). When the August dolldrums hit, we go in search of new adventures.

Kennelly has a Go:keys 3 on the floor. The 3 has the same keybed, styling, sounds and patterns as the 5. The 5 adds two passive radiators (better bass), 1/4″ stereo OUT, and microphone IN. The 3 is good enough for me because, today, I just want to touch the keys and hear the tones.

Roland Go:keys 3

Tone-wise, the gen 2 Go:keys does not disappoint. If you want Roland tones, the gen 2 Go:keys delivers them on the cheap (3: $385-ish, 5: $550 USD). The featured acoustic and electric piano voices are quite good for this price range. The patterns (styles?) are relatively hip and current by typical arranger standards. (Yamaha take note.)

The gen 2 keybed is much improved since my close encounter with gen 1 Go:keys. The keys are piano-shaped, but in no way feel like a piano. At this price point, were you expecting linear-graded with escapement? Roland kept the nice texturing. I’m not sure if I could bide the slight sponginess in the long run. Still, the Go:keys keybed is good competition for the Casio CT-S1000V.

The Go:keys 3 and 5 styling is very contemporary. I could see having one in a living room or family room. My only knock is the front panel legends. I tried a turquoise Go:key3 and the legends were very hard to read — not enough contrast. Roland should change the legends to black and save our eyesight.

Well, that was pleasant. I spent a few moments with a Yamaha CK88 and that was pleasant, too. Yamaha have developed two fine instruments in the CK61 and CK88. The CK61 FSB keybed feels better than MODX6. The CK88 GHS felt connected to the main CFX grand piano voice. All good. For their respective price range, I see why the CKs appeal to a lot of players.

Still, I’m awaiting the mark 2 Stage YC61. The CK secondary sounds surpass the current Stage YC series and I hope mark 2 does better. Overall, I wonder if I could live with Live Sets as the sole means to layer/split? The MODX (Montage) Performance organization is far more flexible and satisfying. Also, the CK MIDI implementation seems limited and rigid as far as external control is concerned. I hope Yamaha take note of forum comments and make gen 2 Stage YC MIDI as flexible as possible.

I was struck by the aesthetic difference between Go:keys and CK. Go:keys looks very modern; Yamaha looks industrial. One can accept an all-business look for a professional instrument. However, I hope Yamaha ups its game in the next E-series models for home. The current E-series looks tired next to the Rolands.

Well, I didn’t buy an instrument. I did buy a cool LEGO Ninjago Ice Tank Set (30427) at Bricks and Minifigs. At least I didn’t go home empty-handed. 🙂

Copyright © 2025 Paul J. Drongowski

Reface DX acoustic instruments for ya

One of my long-term projects is to collect and prepare acoustic instrument voices for Yamaha Reface DX. There aren’t as many high-quality acoustic voices as there are tons of bleeps and bloops. Most people associate FM synthesis with aggressive EDM sounds, but even 4-op FM is capable of so much more!

The project has come along pretty well. I’m now in the programming and tweaking phase to see if I can do better. However, the initial set of voices ain’t bad. Here is a table showing the voices and bank layout:

Bank 1

    1-1 Rhodes    1-2 Wurlitzer    1-3 LegendEP   1-4 E. Organ 3
    1-5 P. Organ  1-6 LargePipes   1-7 Cathedral  1-8 GentlePipe

Bank 2

    2-1 WarmPad    2-2 Wash3Strng  2-3 Wood+Horn   2-4 Woodwindy
    2-5 Warm&Cozy  2-6 RealStrngs  2-7 Horn 2 +1   2-8 FluteVoice

Bank 3

    3-1 HornSwell  3-2 SoftBrass   3-3 WoodEns. 4  3-4 Oboe 1 
    3-5 TrumpetMel 3-6 Trombone 2  3-7 Clarinet    3-8 Bassoon

Bank 4

    4-1 Wood EP    4-2 DynaString  4-3 Warm&Cozy   4-4 Violin -1
    4-5 WoodEnsFlt 4-6 Wash3Strng  4-7 HamB3       4-8 Real flute

The “+1” and “-1” are reminders to change the OCTAVE slider before playing. To do: Add and store transpose changes in the voice SysEx (SYX). Next version!

The first three banks are relatively stable. Bank four voices are experiments in progress, back-ups or patches that I don’t want to lose. To do: I need to collect and tweak a few solid Hammond-ish B-3 sounds.

I drew on multiple sources. Many voices come from Yamaha Soundmondo and the Reface DX Legacy Project. If you’re looking for raw material to start patches of your own, I recommend the converted YS200 voices at the Legacy Project.

The DX11 conversions seem to have a few issues, i.e., strings don’t sound like strings (even remotely). Fortunately, the YS200 and DX11 are based on the same synthesis engine (Yamaha YM2414). Go for the YS200 first.

Here is a link to a ZIP file with Reface DX acoustic instrument patches. Each voice is a separate SYX file, i.e., a file containing one or more MIDI System Exclusive dump messages. I use MIDI-OX to download patches to Reface DX. If I like a patch, I hit the Reface STORE button, choose a target voice slot, and confirm the store operation.

Have fun!

Interested in Reface DX? Here are a few more links:

Copyright © 2025 Paul J. Drongowski

Everybody likes new stuff

Everybody likes new stuff. Unfortunately, the pickins have been slim as of late. I suspect that the global tariff situation has made manufacturers cautious. It’s tough to price products in a dynamic, uncertain business climate.

Here’s a couple of new products that caught my attention.

Boss RT-2 Rotary Ensemble

Boss (Roland) have announced the Boss RT-2 Rotary Ensemble — “authentic spinning speaker effect” in a compact pedal. It has three tones (modes): 1. vintage (warm Leslie 122), 2. wide frequency response, and 3. aggressive spin (presence) with increased drive. Sample rate is 48kHz and conversion is 24 bits.

Boss RT-2 Rotary speaker pedal

The RT-2 has a few cool features. In addition to concentric level and drive knobs, concentric knobs control SLOW to FAST and FAST to SLOW transition times. There is a SPEED jack which takes either a foot switch or an expression pedal (e.g., EV-30 or EV-5). The treadle switch is over-loaded with four different kinds of effect ON/OFF and SPEED control configurations. Switches on the back further tune the transition time and drive balance.

Visual feedback (animation) is provided by a multi-color LED-based display, AKA the “Virtual Rotor”. The red LED animates the treble/horn while the blue LED animates the bass/drum.

The pedal has stereo INs and OUTs with the usual one lead mix-down to MONO. The RT-2 can send Wet and Dry independently (phase-corrected) to outputs A and B, respectively. Having independent Wet and Dry can be handy.

You can power the RT-2 with a standard 9V battery! Access to the battery compartment is reminiscent of Behringer’s low-end, plastic fantastic pedal line. Current draw is 115mA and alkaline battery life is approximately 2.5 hours.

No doubt, Roland want to sell this pedal to guitar players. But, hold on! The promotional video shows the RT-2 in use with a Fantom 07. Will miracles ever cease? Check the Boss article about effect pedals for keyboards.

If you want the inside dope, Boss/Roland published an interview with the RT-2 development lead, Takeshi Mitsuhashi. The RT-2 supersedes the 2005 RT-20.

To enhance the RT-2’s three-dimensional stereo sound, we modeled a Leslie 122 in our anechoic chamber at the Roland headquarters using a pair of high-quality, flat-response microphones. We experimented with various angles and set them at the position that captured the best dynamics. [Takeshi Mitsuhashi]

The Boss RT-2 is available for pre-order at $239.99 USD. At that price, if the sound is truly “authentic,” the RT-2 will give the Neo Instruments Vent a run for the money.

Sonicware Liven Evoke

The Sonicware Liven Evoke mines the ambient music space. The Evoke complements its sister, the Liven Ambient 0, with more natural, acoustically-rooted sounds. The Ambient 0 tilts synthetic. Between the pair, I’d choose the Liven Evoke.

Sonicware Liven Evoke

It features the Back to the Future Acoustronic Flux Oscillator. Check out Dr. Endo at the controls: EXPR Residue, RISE Again, Tear, and his how to make cinematic ambient music video.

And, it looks like I am not alone in liking the Evoke. [I have friends everywhere.] Sonicware has sold out the third production run!

Quite frankly, I don’t know how Dr. Endo and company can develop and manufacture a nifty box like the Liven Evoke for $239 USD. The hardware is made in Malaysia and I don’t know how the USA tariff situation will affect the price or the import duty.

It’s not just a groove box, it’s a relaxation machine.

Copyright © Paul J. Drongowski

Adafruit Feather: Megavoice key switching

More experiments and I have the initial cut of a simple key switching program for Yamaha MODX and Genos/PSR guitar Megavoices. The program is written in CircuitPython and runs on an AdaFruit Feather M4 Express. Here is a link to the ZIP file with the code.

Megavoice: Background information

MODX, Genos and mid-range PSR keyboards have Yamaha Megavoices. Megavoices combine several waveforms into a single voice (assigned to a single MIDI channel). They are intended mainly for arpeggios (Montage/MODX) and styles (Genos and PSR).

Generally, a Megavoice uses velocity switching to trigger waveforms. Some of the waveforms play ordinary notes, some play articulation notes, and others plays special instrument effects. Let’s take a look at the Nylon Guitar voice, which is implemented on both MODX and Genos. [Megavoice technology dates back to the early Motif and Tyros era, so I won’t be listing all of the models with Megavoice!] Many other guitar Megavoices (e.g., Concert Guitar, Clean Guitar) have the same velocity layout. Megavoice Nylon Guitar has the following velocity layers:

    Vel Lo  Vel Hi  Waveform      Key range
    ------  ------  ------------  -------------
       1      20    Open soft     C6 and below
      21      40    Open medium   C6 and below
      41      60    Open hard     C6 and below
      61      75    Dead          C6 and below
      76      90    Mute          C6 and below
      91     105    Hammer        C6 and below
     106     120    Slide         C6 and below
     121     127    Harmonics     C6 and below
       1     127    Strum noise   Above C6
       1     127    Fret noise    Above C8

MIDI note numbers 0 (C-2) to 96 (C6) comprise “playable” notes. Note numbers above 96 are instrumental effects: strum and fret noise. The strum and fret noises include the sound of a pick crossing the strings, body knocks, and sleeve noise (fingers sliding on strings).

As you can tell from the layout, if you try to play a Megavoice from the keyboard, you’ll have an interesting and maybe frustrating experience. No one really has the skill to control their key touch to reliably play an open hard note versus a dead note, etc. However, a sound designer can program different sounds into a MIDI track with precision, thereby making an expressive, realistic guitar part in a style or arpeggio. [Historical note: Many of the Motif ES/XS arpeggios were taken from PSR Megavoice styles!]

Genos, Tyros and PSR have a way of making the base waveforms playable: Super Articulation (SArt). The SArt engine monitors the incoming key strikes and, in real-time, chooses a destination waveform for each note. If you play in a detached manner, SArt triggers one of the open string waveforms (depending upon your strike velocity). If a second note occurs within a fourth with a slightly higher velocity, SArt plays a slide (up). SArt plays a body knock in response to the ART.1 and ART.2 buttons.

Clavinova CSP and CVP do not have articulation buttons. However, you can still join the fun. Select an S.Art guitar voice and tromp on the foot pedals!

Montage and MODX have Expanded Articulation (XA). It plays open notes as expected and relies on the ASSIGN 1 and ASSIGN 2 buttons to bring in an articulation like Slide or Harmonics. (Element programming allows more flexibility than this simple example, BTW.)

Feather MIDI event processor

In order to implement key switching, we need to break into the path from keyboard to tone generator. We want a chance to respond to incoming notes (key strokes) before the notes go to the tone generator (TG).

We can’t hack the hardware in MODX or Genos, but we can send MIDI messages from the keyboard (e.g., MODX MIDI OUT) to an external MIDI event processor which sends a modified MIDI message stream back to the instrument (e.g., MODX MIDI IN).

I described the hardware for an AdaFruit Feather-based MIDI event processor in an earlier post. The event processor consists of an AdaFruit M4 Express processor, MIDI I/O FeatherWing, OLED FeatherWing and Joystick FeatherWing. Up to this point, I haven’t exploited the OLED or joystick, so you could get away with a very tiny Processor plus MIDI I/O combination. It’s small and efficient enough to be powered by a LiPo battery!

The hook-up looks like this:

    ----------------         --------------       --------------
   |                |       |              |     |              |
   |         MIDI OUT ----> MIDI IN        ----> RX             |
   | MODX6          |       |  FeatherWing |     |  Feather M4  |
   |          MIDI IN ----> MIDI OUT       ----> TX             |
   |                |       |              |     |              |
    ----------------         --------------       --------------

The MIDI FeatherWing communicates with the Feather M4 Express over the serial I/O RX and TX ports. The Feather M4 Express communicates with the Mu editor and development environment on a Windows PC (not shown). Code is written in CircuitPython which is loaded into the Feather M4 from the PC over a USB communication link. The code can print status information via USB to the Mu environment — very handy when debugging.

Since this is a prototype, I’m trying to keep things simple. The MODX6 requires a little bit of manual configuration:

  • MIDI I/O directed to/from the 5-pin DIN connectors
  • MIDI LOCAL OFF (i.e., key events are not sent directly to the TG)
  • Nylon Guitar or other compatible guitar Megavoice selected on Part 1

That’s not too much to ask.

Key switching

It may be said that neither SArt or XA bring together all of the available articulation waveforms in a factory preset single voice (part). That’s where key switching can play a role.

Basically, I want to assign a range of keys to switch between articulations and sounds. For my initial experiments, I assigned MIDI notes 36 to 47 to key switching duties. On MODX6 (61 keys), this key range covers the lowest octave of physical keys (the power-up default, without internal octave switching enabled). Articulations are assigned to keys as shown below.

Assigned key switch articulations

For now, I’m holding the black keys and B1 in reserve. One possibility, for example, is to assign body knocks to F#1, G#1 and A#1. We’ll see!

The articulation keys enable the assigned articulation. All keys from C2 and above play notes using the selected articulation. The articulation keys latch. So, if I strike E1 (Mute) and then strike a key in the play range, a muted guitar note will sound. All subsequent notes will be mute notes until I strike C1 (Open) and return to playing open strings.

I spent some time experimenting with Genos SArt voices in order to get ideas for enhancements. I will summarize my notes in a future post. Suffice it to say, Yamaha have some good ideas! It’s all a matter of code. 🙂

Copyright © 2025 Paul J. Drongowski

MIDI Event Processor — Round 2

I’ve got a stable MIDI event framework up and running. Time to summarize a few lessons learned.

CircuitPython

The CircuitPython libraries are pretty decent overall. AdaFruit did a good job with on-line documentation and I can usually find a helpful example to copy, paste and modify.

Python itself is a PITA. I don’t know why or how anyone calls it a “beginner’s language”. Three big bug-a-boos jump out:

  • Spacing. Zealots say, “Oh, you don’t need brackets; indentation handles everything.” I haven’t seen such idiotic enforcement of spacing rules since 1960s FORTRAN. Give me brackets, give me free-form layout.
  • Run-time type checking. Python does not do a lot of compile-time type checking. So, you’ll get a clean compile and then stumble on a type compatibility issue during the first run.
  • Type conversion. Type conversion can be very weird. Thanks to run-time type checking, it might take several runs to get conversion right.

I’m going to finish the job in CircuitPython out of a spirit of self-discipline. Please teachers, do not inflict this language on new programmers.

AdaFruit hardware

The AdaFruit Feather hardware is solid. No complaints. The AdaFruit Feather M4 Express is a speedy little bugger compared to Arduino UNO! The OLED display is bright and clear. The MIDI ports work. Other than testing, the joystick FeatherWing hasn’t gotten much use yet.

MIDI library

I wanted to love the MIDI library. It offers pre-defined MIDI message types (classes) and necessary send/receive operations. All good.

Unfortunately, I don’t think the MIDI library was tested with a real-world synth. I’m using Yamaha MODX6 for testing. Yamaha uses MIDI running status extensively. Hit and release a key, and MODX sends a NOTE ON status byte followed by two key/velocity pairs:

    0x90 0x48 0x73 0x48 0x00

The first pair is NOTE ON and the second pair is effectively NOTE OFF (i.e., velocity is 0x00).

That’s not so bad in itself. However, MODX sends real-time Active Sensing messages (MIDI status byte 0xFE) and Active Sensing may appear in the middle of a MIDI message, running status or not.

Using the MIDI library, notes and controller events were getting dropped everywhere. At first, I thought CircuitPython was too slow to keep up with the incoming MIDI. Nope. When I switched to reading and dispatching bytes from the UART, I could handle everything without straining processor resources.

Bottom line: Bag the MIDI library as it could have bugs with running status.

OLED display and REPL

The OLED display and CircuitPython REPL have been very handy for debugging. The UART implements the MIDI IN/OUT ports leaving USB serial I/O available for debugging. (You need Arduino Leonardo to get separate UART and USB serial I/O.) I like to drop in the occasional “print” statement until I’m sure of the control flow and internal values.

Example: Knowing what the MODX is sending. It is easy to whip up a MIDI monitor sending byte values to either the OLED or the Mu Editor REPL. Knowing that I had to handle Active Sensing and running status together, made the task clear.

The task

Now I realize that the event processing application needs to map note ON/OFF events and to echo all other events (messages) unmodified. My current message processing framework reflects this simplicity. It took a few experiments to get here.

Initial code

If you need a quick start for your own Feather-based MIDI event processor, here is a ZIP file with my initial CircuitPython code. It doesn’t handle complete SysEx messages. The code framework will probably change in the next version.

Copyright © 2025 Paul J. Drongowski