Yamaha PSS-A50 Motion Effects

As I mentioned in my PSS-A50 review, the Yamaha PSS-A50 arpeggios date back to the first Motif keyboard (2001). Yamaha — like most manufacturers — recycle content and these arpeggios (arps) have (re-)appeared in several synthesizer and arranger products. The arps even made an appearance in the now unavailable Yamaha Synth Arp and Drum Pad application for Apple iPad.

If you were fortunate enough to buy the Synth Arp and Drum Pad app ($8 USD), don’t throw that joint out the window! As of this writing, the old app still runs on iOS.

The A50 resembles a hardware embodiment of the old arp app. The A50, however, has one trick up its sleeve that the app didn’t have — Motion Effects.

The PSS-A50 Motion Effects add a little animation to performances, arps and playback. There are three kinds of Motion Effects:

  1. Group A: Filter
  2. Group B: Pitch
  3. Group C: Modulation

The filter effects do things like filter sweeps. The pitch group includes pitch bends. The modulation group adds modulation and a little bit of everything else like slicing.

The A50 is an inexpensive little guy with simple synthesis hardware. All of the Motion Effects are implemented through MIDI, keeping hardware cost low. The Motion Effects themselves are based on the MIDI control arpeggios in the original Motif! This bit of recycling keeps development cost ultra-low.

Using a Motion Effect is easy. Select an effect, start playing, and press/hold the MOTION EFFECT button when you want to trigger the effect. The A50 then generates the MIDI needed to make the effect happen. Effects are selected by repeatedly pressing the MOTION EFFECT button while holding SHIFT. (Tip: Hold MOTION EFFECT in order to skip to the next effect group.)

Motion Effect MIDI messages are recorded and transmitted along with note ON/OFF and all the rest of the usual stuff. Thus, the A50 is a bit of an interesting controller as you could use it to add/record pitch bends, etc. to a DAW-based MIDI song or live performance.

Inquiring minds want to know, “How did they do that?” I recorded the MIDI messages produced by each of the Motion Effect types. I simply played a note on the keyboard and hit/held the MOTION EFFECT button. If you would like to hear the results for yourself, here is a ZIP file containing SMFs. Open the SMFs in a DAW and explore.

The filter group sends MIDI CC#74 (continuous control) messages. A09 and A10 toss in modulation (CC#1) for a little extra spice:

Group A FILTER 
A01 Filter 1 CC#74
A02 FIlter 2 CC#74
A03 Filter Wah CC#74
A04 Filter 3 CC#74
A05 Filter 4 CC#74
A06 Filter 5 CC#74
A07 Filter 6 CC#74
A08 Filter 7 CC#74
A09 Filter + Modulation 1 CC#74, CC#1
A10 Filter + Modulation 2 CC#74, CC#1

Since it’s often hard to describe sonic effects in words, here are miniature plots of the MIDI controller data for the filter (Group A) effects. [Click images to enlarge.]

Yamaha PSS-A50 Motion Effects (filter)

The pitch group sends MIDI pitch bend messages:

Group B PITCH 
B01 Pitch Whole-Note Up PB (wheel)
B02 Pitch Half-Note Up PB (wheel)
B03 Pitch Whole-Note Down PB (wheel)
B04 Pitch Half-Note Down PB (wheel)
B05 Choking Up PB (wheel)
B06 Choking Down PB (wheel)
B07 Pitch Down 1 PB (wheel)
B08 Pitch Down 2 PB (wheel)
B09 Pitch Up 1 PB (wheel)
B10 Pitch Up 2 PB (wheel)
B11 Pitch Up + Modulation PB (wheel), CC#1
B12 Pitch Up 3 PB (wheel)

The first several pitch effects implement guitar-like bends. If you have trouble bending notes with a joystick or wheel, you might want to try the A50. You get a perfect bend every time — maybe too perfect. The plots below illustrate the PSS-A50 pitch (group B) effects.

Yamaha PSS-A50 Motion Effects (pitch bend)

The modulation group has some real variety to it. The simple modulation messages change pitch at a fixed rate; you cannot change the “LFO rate.”

Group C MODULATION 
C01 Modulation On 1 CC#1
C02 Modulation On 2 CC#1
C03 Pitch Up + Modulation On 1 PB, CC#1
C04 Pitch Up + Modulation On 2 PB, CC#1
C05 Expression Slice 1 CC#11
C06 Expression Slice 2 CC#11
C07 Expression Slice + Filter 1 CC#11, CC#74
C08 Expression Slice + Filter 2 CC#11, CC#74
C09 Pitch Up + Expression Slice 1 PB, CC#11, CC#74
C10 Pitch Up + Expression Slice 2 PB, CC#11, CC#74
C11 Pitch Up + Expression Slice 3 PB, CC#11
C12 Pitch Up + Expression Slice 4 PB, CC#11, CC#74

Slicing implements stutter-like effects using MIDI CC#11 expression messages (alternating volume ON and OFF). The plots below illustrate the modulation (group C) effects.

PSS-A50 Motion Effects (modulation)

Here’s a quick reference guide to the MIDI message types mentioned above:

  • PB Pitch Bend
  • CC#1 Modulation
  • CC#10 Pan (not supported by PSS-A50)
  • CC#11 Expression
  • CC#71 Harmonic Content (resonance)
  • CC#74 Brightness (cutoff)

If you would like more information about the Yamaha PSS-A50 MIDI implementation, check out the basics and advanced topics.

Copyright © 2021 Paul J. Drongowski

Yamaha PSS-A50 MIDI limitations

My last post about the Yamaha PSS-A50 MIDI implementation covered the basics. Now for a few advanced topics.

First, the bad news. The PSS-A50 does not have a way to save and restore recorded MIDI data. Thus, you can’t save a song and reload it later.

It is possible to SYNC a DAW (like Sonar) to the A50 and record MIDI data played back by the A50. I accomplished this task rather easily in Sonar. The A50 sends MIDI START, STOP and CLOCK. I simply configured Sonar to accept and sync to the A50. I armed the destination Sonar track, hit Sonar’s record button, and pressed the A50’s play button. Sonar recorded all incoming MIDI data to a single track. Sonar’s selective filtering made it easy to separate data in the track by channel.

Even if MIDI data is recorded to Sonar, there isn’t a way to play it back into the A50. The A50 does not recognize MIDI CLOCK, START or STOP.

Next, I tried MIDI bulk dump request messages. The A50 ignores them — no response. I also tried XG MIDI parameter request messages and they are ignored, too. I’m not too surprised because other entry-level arrangers ignore these kinds of messages, too. [The Yamaha SHS-500 Sonogenic is equally silent.]

In a moment of due diligence, I ran Musicsoft Downloader and it is unable to connect to the A50. Well, for $100, you can’t expect everything!

I experimented with reverb- and chorus-related messages. The A50 responds to MIDI CC#91 Reverb Level and CC#93 Chorus Level messages. However, you cannot change either the chorus or reverb type via standard XG parameter change messages. The chorus and reverb are pretty basic and I’m not really surprised.

In terms of quality, the chorus is just OK. The reverb sounds cheap when it is cranked up. As far as future mods are concerned, I’m inclined to beef up reverb and/or spatial enhancement. The Volca Mix’s enhancer made quite a difference in sound quality. Lacking stereo OUTs, the A50 sound doesn’t have much life by itself. (MIDI-wise, it doesn’t recognize CC#10 Pan.)

The PSS-A50 does respond to MIDI identity request:

    F0H 7EH 0nH 06H 01H F7H

In case you’re wondering, identity request and reply are how external software can query and identify external MIDI devices. When the A50 is pinged with an identity request, it responds with:

    F0H 7EH 7FH 06H 02H 43H 00H 41H ddH ddH mmH 00H 00H 7FH F7H 
dd: Device family number/code
mm: Version

F0 7E 7F 06 02 43 00 44 27 1F 00 00 00 7F F7
| | | | |
| | | | Version
| | Model
| Family
Yamaha

Hex 43 is Yamaha’s manufacturer/vendor code. Hex 44 identifies the device family: arrangers. Hex [27,1F] identifies the specific model within the device family.

I’m itching to examine the PSS-A50 motion effects. That’s the next stop.

Copyright © 2021 Paul J. Drongowski

Yamaha PSS-A50 MIDI notes

To learn more about the Yamaha PSS-A50‘s MIDI implementation, I monitored its MIDI output stream using MIDI Ox and Sonar. Here are my notes. They are quite terse!

After inital start-up, the A50 sends MIDI timing clock and active sensing messages.

The default transmit data and channel settings are:

    Assignment              Ch# 
---------------------- ---
Live keyboard: 1 [If OFF, no data is transmitted]
Live arpeggio sequence: 2
Recorded keyboard: 3
Recorded arpeggio seq: 4

Master volume is local. Pressing the Master Volume buttons does not send volume change messages (neither channel volume or MIDI master volume).

Changing Phrase Volume, however, sends channel volume on channel 3 and 4. Legends above keys show setting-related function: what setting, increment and decrement. This is very handy and avoids manual diving. Phrase Volume is changed using the assigned function keys.

Pressing a front panel voice button sends messages on both channel 1 and 2:

    Bank MSB (CC#0) 
Bank LSB (CC#32)
Program Change (PC)
Channel Volume (CC#7)
Reverb Depth (CC#91)
Chorus Depth (CC#93)

Not all voices have chorus applied and Chorus Depth is not sent for voices without chorus.

The keyboard sends note ON and note OFF messages on channel 1. The mini-keyboard is touch sensitive. it’s difficult to send the full 1-127 velocity range with the default touch response level (level 2).

Pressing the Sustain button has the following behavior:

  • Sends new release time when sustain button is pressed.
  • Release time messages are sent on both channel 1 and channel 2.
  • Turning sustain off resets the release time.

Pressing Portamento (SHIFT+SUSTAIN), has the following behavior:

  • Sends portamento time and portamento ON/OFF when SHIFT+PORTAMENTO buttons are pressed.
  • Portamento time and ON/OFF are sent on both channel 1 and 2.
  • Turning portamento off, sends new portamento status on channels 1 and 2.

Pressing ARP ON doesn’t send MIDI messages! Pressing ARP OFF sends messages on channel 2:

    Bank MSB (CC#0) 
Bank LSB (CC#32)
Program Change (PC)
Portamento
Release Time (channel 1 and 2)

It’s like the A50 software assumes that the arp voice is set-up and ready to go when the arpeggiator is turned ON. Then, the software resets certain parameters when the arpeggiator is turned OFF. The arpeggiator sends note ON/OFF on channel 2 (as determined by the MIDI channel assignments).

Pressing PLAY sends the following messages on channel 1 and 2:

    Start (FA) 
All Sound OFF (CC#120)

Pressing STOP sends the following messages:

    Stop (FC) 
GM Reset (System exclusive)
Messages to reset voice settings for channel 3 and 4

You can expect to see the following System Exclusive messages after song playback:

   F0 7E 7F 09 01 F7           GM Reset 
F0 43 10 4C 08 02 0C 40 F7 MULTI-PART Velocity Sense Depth (channel 3)
F0 43 10 4C 08 02 0D 40 F7 MULTI-PART Velocity Sense Offset (channel 3)
F0 43 10 4C 08 03 0C 40 F7 MULTI-PART Velocity Sense Depth (channel 4)
F0 43 10 4C 08 03 0D 40 F7 MULTI-PART Velocity Sense Offset (channel 4)

I’ve seen these XG MULTI-PART messages on other entry-level arrangers supporting the XG Lite conventions.

For Motion Effect A01 Filter 1, Pressing the Motion Effect button sends
these messages on channel 1 and 2:

    Pitch Bend Sensitivity (RPN 0,0)
Harmonic Content (CC#71)
Pitch Bend
Expression (CC#11)
Modulation (CC#1)
Brightness (CC#74)

Harmonic Content (filter resonance is increased to 100). The Brightness (cutoff) messages sweept the filter. Brightness is slowly modulated, i.e., it repeatedly slowly decreases and then increases.

Releasing the Motion Effect button sends messages on channel 1 and 2:

    Pitch bend 
Harmonic Content (CC#71)
Brightness (CC#74)
Modulation (CC#1)
Expression (CC#11)
Pitch Bend Sensitivity (RPN 0,0)

These messages reset the respective parameters to a default value.

For Motion Effect B01 Pitch Whole-Note Up, pressing the Motion Effect button sends these messages on channel 1 and 2:

    Pitch Bend Sensitivity 
Pitch Bend (center)
Expression
Modulation
Pitch Bend (multiple messages)

The Pitch Bend messages sweept the pitch up then down. Releasing the button resets Modulation, etc. to default values.

Pitch bend sensitivity is sent as an RPN (Registered Parameter Number) message:

    RPN (CC 0x64, CC 0x65) 
0,0 Pitch Bend Sensitivity

The Motion Effect feature is similar to something I built into my two-button Arduino-based MIDI controller. It’s a way to add articulation to live playing. I always wanted a way to play perfect pitch bends. 🙂

I was able to save my recorded MIDI data to Sonar. The A50 insists on sending MIDI clock, START and STOP, so I configured Sonar to receive and respond to external clock. The recorded MIDI data is sent on channels 3 and 4. Thanks to Sonar’s channel selection feature (via event filtering), I could separate the channel 3 and 4 data into two tracks. Another possible solution is to write the data as a MIDI Type 0 SMF and then read the SMF into Sonar. Sonar should separate the channel data into different tracks.

Copyright © 2021 Paul J. Drongowski

Summer NAMM 2021

Even though Summer NAMM 2021 is a live event, the global pandemic still has the business world topsy-turvy. The vaccinated parts of the United States are shaking off cob-webs, but large parts of the world remain in the grasp of COVID-19. Japan — a major source for electronic musical instruments — is in near crisis just as the Summer Olympics are due to start.

Thus, I don’t really expect much from Summer NAMM 2021. In the run-up to the show, vendors are mainly announcing product updates and upgrades. Manufacturers are highlighting previously announced instruments like the Korg Wavestate or Yamaha DGX-670 digital piano.

Truly new, is the Boss EV-1-WL wireless MIDI expression pedal. The price ain’t bad, $149USD, and it offers the chance to eliminate yet another cable in your live rig. Although it seems targeted for guitarists — being promoted through the Boss brand — the EV-1-WL might be a boon for keyboard players, too.

Boss EV-1-WL Wireless expression pedal

The EV-1-WL operates on two AA batteries or PSA-series power adapter. It cooks up MIDI three ways: Bluetooth, USB and 3.5mm TRS. Nice to have both wired and wireless options. According to Boss, all three can be used at the same time and are independently configured.

In addition to the rocking expression pedal, the EV-1-WL has a built-in top switch and two external footswitch inputs (1/4 inch TRS). Boss will provide an app to assign MIDI messages [quoting the Boss web page]:

  • Expression pedal with EXP SW on—CC# 1-31/64-95, value 0-127
  • Expression pedal with EXP SW off—CC# 1-31/64-95, value 0-127
  • Toe switch (EXP SW)—CC# 1-31/64-95, value 0-127
  • External footswitch 1 (CTL1)— CC# 1-31/64-95, value 0-127
  • External footswitch 2 (CTL2)— CC# 1-31/64-95, value 0-127
  • MIDI channel—1-16
  • Expression pedal curve—Normal, Slow1, Slow2, or Fast
  • EXP SW/CTL1/CTL2 mode—latch or momentary

I’m a little nervous about the EV-1-WL’s ability to rendezvous (pair) with any old Bluetooth device or interface adaptor. Boss state compatibility with their WM-1 5-pin adaptor and WM-1D USB-A dongle. However, will it interoperate with Yamaha’s MD-BT01, UD-BT01 or in-built Bluetooth MIDI (e.g., SHS-500 Sonogenic)? A 5-pin DIN MIDI cable is brand-agnostic.

The USB and Bluetooth MIDI world is rife with incompatibilities and the inability to make connection. A 5-pin MIDI cable is symmetric. A USB connection has a HOST end and a DEVICE end. Bluetooth has acceptors and initiators which must dance with each other when pairing. A MIDI cable simply connects an IN to OUT (and vice versa). Done.

Anyway, the EV-1-WL has got my attention and I look forward to the user manual and app. Hoping for the best…

Copyright © 2021 Paul J. Drongowski

Review: Yamaha PSS-A50

Before taking a screwdriver and soldering iron to the A50 (Ahem), I’d better write a short review first. 🙂

The Yamaha PSS series keyboards are inexpensive, entry-level instruments which are super lightweight, battery powered, portable and fun. The PSS line is like a small group of fantasy characters where each character has its own super-powers.

  • PSS-E30: A musical game keyboard for younger kids.
  • PSS-F30: “Honey, I shrunk the arranger” keyboard for people who want to play songs with an accompaniment.
  • PSS-A50: A phrase-based music machine which records and speaks MIDI over USB to your DAW or other computer- or table-based music applications.

Last year, I reviewed the Yamaha PSS-E30 Remie and passed it along to our grandson as a Christmas gift. Remie is suitable for young kids, but even Mom and Dad have fun with the musical games.

Yamaha PSS-A50 keyboard [Click to enlarge]

The PSS-A50 (henceforth “A50”) is aimed at people who want more flexibility than the fixed accompaniment styles in the PSS-F30. The A50 has 138 musical phrases — “arpeggios” in Yamaha-speak — that drive an in-built arpeggiator. Twenty-two arpeggios are drum patterns; the rest of the arpeggios are melodic, covering both instrument-specific riffs (strums, bass lines, chord comps) and general purpose phrases like up/down broken chords, etc.

Experienced Yamaha players have seen these arpeggios before. In fact, the A50 reminds me of the Yamaha Synth Arp & Drum Pad iOS application. Without getting into the details, you select a voice, select an arpeggio (“arp”), enable the arp, hit record, and go. If you check out Yamaha’s YouTube tutorials, you’ll see how easy it is to get started.

At this point, I suggest watching Keen On Keys excellent video. It covers all the basics, a brief teardown, and more. I won’t go into such details here. (This chap did a terrific job!) I learned quite a lot from this video including basic “how to use it” information.

Oh, how I long for such reviews in Electronic Music (once Keyboard mag), once again. Ken Hughes, where are you? After reading one of those old product reviews, you actually knew a little about playing the instrument. Now, pfffft!

The sounds

Let’s get down to brass tacks. Like Remie, you won’t get Yamahas top sounds. Shucks, it’s only $100 USD (street price).

Truth be told, even though I regarded the A50 as a candidate for mod projects, I wasn’t too wild about the sounds that I heard in on-line demos. I was hesitant to buy one. Once I got the A50 under my fingers, however, I warmed up.

Basically, the A50 and Remie samples and synth engine are at the same level. The A50 adds touch sensitivity and that, I suspect, makes the difference. Sure, the piano (for example) is uni-dimensional and you can hear it play the same sample louder or softer depending upon strike velocity. The overall effect is more musical, however. Weird how that works?!

The A50 audio OUT is mono. Reverb seems to be the only system effect. Even Yamaha’s cheapest chip implementations have chorus, so it may take a little MIDI magic to unlock that door. The whole sound can be sweetened by out-board effects like maybe a guitar pedal (e.g., TC Electronic Hall of Fame reverb) or a spatializer. I slung an A50 beat through the Korg Volca Mix stereo width and compression effects and got a rather nice result. The Volca Mix Hi/Lo Cut let me isolate the tops and kick, too. I strongly recommend adding external effects.

The A50 motion effects let you juice up your performances. I’m still exploring the motion effects and I’m glad to have them. The motion effects add a way to vary the sound during performance, avoiding a uni-dimensional sound. You get filter fun, pitch bends, slicing and all sorts of sonic mayhem. A few effect types would be good for Hawaiian pedal steel. 🙂 It would be nice to leave the auto wah ON in order to play two-handed funk — a small quibble.

The A50 size, features and price invite comparison against the Yamaha SHS-300 and SHS-500 Sonogenic. Unless you really want the keytar format, I don’t see the value in the SHS-300 versus the A50. I will bet dollars to donuts that the SHS-300 is based on the same chip and samples as the A50. Personally, phrase recording is more fun and creative than a pretend, low-budget, cheap build keytar. Speaker quality is probably a wash between the two and the A50 puts out 1.5W versus 0.7W.

The A50 against the SHS-500 is another story. The SHS-500 voices are definitely better quality. Although the SHS-500 LINE OUT is mono, you can look to its PHONE OUT for stereo. The SHS-500 has PSR E-series DSP effects, three forms of MIDI (USB, 5-pin, and Bluetooth), a General MIDI sound set (available via MIDI only), and jam mode integration with Chord Tracker. The SHS-500 beats the A50 on sound. On the other hand, I prefer the A50’s speaker versus the SHS-500. Of course, the SHS-500 is mainly for playing and doesn’t have an arpeggiator or recorder.

Build quality

One big factor is build quality. The SHS-500 is a solid instrument. The SHS-300 and A50 are cheap. Even though Yamaha specs call out “37 HQ (High Quality) mini keys” for all three keyboards, only the SHS-500 is up to the same quality as the Yamaha Reface series. Yamaha marketing may claim otherwise, but you can feel the difference. The Reface and SHS-500 will stand up to abuse — the SHS-300 and A50, not so much.

As to A50 build quality, the electronic boards and cabling look up to snuff. EMI shielding is absent. Audio quality on battery power or external USB power adapter is good and is reasonably quiet. Powered by my HP desktop, the A50 is susceptible to digital schmutz and produces loud noise through its audio out. One could put blame on the desktop, but nearly all computer switching power supplies are dreadfully noisy. USB powered instruments need better filtering on USB power rails.

In use

I want to use the A50 as a looper: put down a rhythm line and a bass, then jam. It takes a little bit of practice to make glitch-free loops. I wish the A50 applied “measure quantize” to recordings, that is, trim recordings to a clean measure timing boundary. Right now, you have to turn off recording by feel and hope you get it right.

While horsing around with MIDI (another subject for another day), I noticed that the A50 has four parts, each on its own MIDI channel:

  • Keyboard voice: Live, real time performance (Default: channel 1)
  • Arpeggio sequence: Live, real time arpeggiation (Default: channel 2)
  • Recorded keyboard: Recorded keyboard performance (Default: channel 3)
  • Recorded arpeggio sequence: Recorded arpeggio (Default: channel 4)

Hmmm, this makes me wonder if I can layer up to four parts? So far, I can layer 3 distinct musical parts. The fourth part is still elusive.

The main problem is no overdub. It is possible to record two parts at once: arpeggio plus keyboard performance. Thus, you can lay down a drum pattern (arpeggio) and a bass line (by hand). Then, loop the playback and play over the top. Seems like I should be able to add a live arpeggio to the stack.

Anyhow, I found this video (“Yamaha PSS A50 – Jazz Multi Track”) to be instructive. The trick is to get the arpeggio going, select a different instrument, arm record, and play on the first beat. Here is the procedure:

  1. Select drum voice (e.g., voice 39).
  2. Turn the arpeggiator ON.
  3. Select the arpeggio type (e.g., arpeggio 125).
  4. Hold a key to start the arpeggiator.
  5. Press ARP.HOLD to keep the drum pattern running.
  6. Select a bass voice (e.g., voice 14).
  7. Press REC to arm recording.
  8. Play the bass line over the drum pattern. Start playing in time with the drum pattern.
  9. Press REC to stop recording.
  10. Turn the arpeggiator OFF.
  11. Select a piano voice (e.g., voice 2).
  12. Press SHIFT+PLAY to start a looping playback.
  13. Jam over the playback.
  14. Press STOP to stop playback.

Recording doesn’t start until you begin to play the bass line. That locks the bass to the drum pattern. You need to stop recording just before the next loop iteration begins.

If you need some jazzy chords, try: GM7/E, Fm7/B, FM7/D, Em7/A (also notated as Em9, Bm11, Dm9, Am11).

Doggone it, seems like I should be able to layer live arpeggiator into that mix! I’ll keep trying.

Update: Practice makes perfect. Yes, you can get four lines going. I recorded drum and electric piano following the procedure above. With the recorded parts playing, I started a looping bass arpeggio. Finally, I solo’d over the three running parts. Neat, and as complex as you might want for a little practice jam.

Questions

As I begin to explore the A50 MIDI implementation, there are a number of unanswered questions. First and foremost, can I save and restore recorded MIDI data? Does the A50 respond to SysEx messages for reverb and chorus type? Can I drive the A50 with the old Synth Arp and Drum Pad application and make use of its range of arpeggios? Can I load my own simple backing tracks into the A50’s recorder memory?

The final word

After my initial reluctance, I’m glad that I bought the PSS-A50. Apparently, some folks aren’t so happy as A50s turn up as Open Box items quite frequently. Even though $100 is not much, you can save a few extra bucks if you’re willing to buy an open box item. Given the build quality, you might not want to chance it, tho’.

The A50 does not have a full General MIDI sound set. The sound set is close enough for rock and roll, however. Here is an MP3 of the A50 in action (Traffic’s Feelin’ Alright). Wish I could play that piano solo at the end …

Interested in more PSS-A50 content? Check out these posts:

Copyright © 2021 Paul J. Drongowski

Free DJX-II styles: Version 2

I’m happy to announce version 2 of my DJX-II styles for Yamaha Genos, Tyros and PSR arrangers.

These DJ styles are converted from the original Yamaha DJX-II patterns. If you would like to know more about the conversion process, please see: Mining the Yamaha DJX-II.

These are DJ styles, so they only respond to changes in the root note. The chord progressions are cooked into the patterns (just like intros and endings in regular PSR styles). I tried to find the best mapping from DJX-II patterns to style sections. Therefore, some of the DJXII styles have auto-fill, some do not. Longer “fill” patterns are assigned to the intro and ending sections which can play more than one measure.

Feel free to edit, rearrange and customize the styles in order to make them your own. I recommend Jørgen Sørensen’s excellent tools. Jørgen’s site also has documentation and tutorials about styles and style creation to help you along. Please check it out and support his work!

Click on this link to download the ZIP file.

Version 2 includes all of the files in the first collection. Version 2 adds Drum ‘n’ Bass, Disco, House and Trip Hop styles. The ZIP file includes a README.TXT file which should help you get started with the styles. I have also included PDF notation files for people who read music and want to know about the chord progressions, bass lines, and so forth.

Enjoy! The DJX-II style collection is free.

Copyright © 2021 Paul J. Drongowski

Modal Skulpt SE: Review

True to their word, Modal Electronics are shipping the first Skulpt SE virtual analog modules, and I’ve got one. Initial impressions…

Arrival

The Modal Skulpt SE arrives in a neat brown box, well-protected from the strains of travel through the package delivery system. With the pandemic all about, most of us are buying on-line and good packing is important!

Modal electronics Skulpt SE synthesizer

Inside are the Modal Skulpt SE (henceforth, the “SE”), a “UI combinations” card for a quick start, and a moderately short micro USB cable. If you intend to run on battery power, be prepared with six AA cells. A small rear panel slide switch selects USB or battery power. The switch is good enough, but probably won’t stand up to much abuse.

The bad stuff

The bad stuff isn’t so bad, but the SE and I got off to a slightly rocky start.

The SE has a white cover over the front panel. It took a little bit of doing to remove the white cover. I was afraid of bunging the controls… The white cover is a welcome feature, though, as it will protect the front panel going to and from gigs.

The SE’s keyboard and the edge of the side and rear panels are protected with that quasi-adhesive plastic which is meant to be removed before flight. The plastic protects surfaces during manufacturing and is common practice. The (mostly) clear plastic on the keyboard was obviously meant to be removed.

The thin strip of white protective plastic around the edge of the side/back panel had me fooled. I didn’t realize that it was intended to be removed! Thus, when plugging in, “What the?” I didn’t see any legends above the rear panel connectors. “How do they expect us to know where to plug in?” Well, remove the white protective plastic and it’s good to go. Also, the white plastic strip made for the cover’s tight fit. [Redux: minor cover removal issue above.]

The SE puts on a little light show when power is applied. After first boot, I couldn’t get the SE to produce sounds. I removed power and started again — success!

The build

There are plenty of in-depth reviews on-line and in print, so I’m not going to repeat gory details about 32 oscillators, blah, blah. The MusicRadar and Electronic Musician reviews are the best of the lot. (Oddly, Sound On Sound hasn’t reviewed the Skulpt, even the mark one?)

Every review cites the build as “plastic-ky,” etc. Yes, the chassis is made of plastic, but it feels just as robust as the Yamaha MODX. For $199 USD, this is as good as it gets. Build quality is on par with the Korg Volca series. The controls feel a tad light and wobble a little bit. The knobs (endless encoders) and buttons offer enough resistance and tactile feedback for a $199 price.

The keyboard

Reviews also cast shade of the keyboard. Yes, the keyboard stinks for playing chords and seems to play at a fixed velocity level. However, one needs to set expectations appropriately.

It’s not really a keyboard, in my opinion. It’s a group of sixteen function buttons for the sequencer and tone generator. As far as playing is concerned, it’s a “courtesy keyboard” for testing patches and such. (Thanks to Stephen Fortner for that term of trade.) Other low-cost modules provide a courtesy keyboard, but don’t get slagged by reviewers in the same way. Intended usage and criticism don’t rise to mini-key levels (e.g., microKorg, Reface, Keystep, and a plethora of others).

The sound

Well, with these concerns out of the way, Let’s get to the sound!

Electronic Musician ran a mini-synth shoot-out review last Winter. They pegged the mark one Skulpt as a staid, well-behaved sonic pallette — nothing too aggressive. Out of the box, I agree with their assessment and that’s why I bought the SE! I’m not interested in shredding anyone’s ears. I’m looking for temperate pads and leads. If you want aggressive tone, the SE is not the droid you’re looking for.

However the SE does mete out beautiful pads for chill and other modern styles needing laid-back tone. Some of the factory presets have stunning motion and twinkle — truly wonderful. So, sonically, I’m pleased and feel that $199 is money well-spent.

I connected the SE to MODX via MIDI in order to audition the factory presets and I recommend you doing the same. The courtesy keyboard seems to send a fixed MAX velocity level (something I need to verify) and you cannot bring out the nuance of the built-in presets or the full capability of the hardware. Given the usual vagarities of key touch and velocity curves, I had trouble socking the MODX keys and teasing the same sound as produced through the courtesy keyboard. You might want to keep this in mind if you find and test an SE in a brick and mortar store.

Grabbing notes, you will hear note robbing. Oh, yeah, 4 note polyphony. If you want more, buy a second SE and chain it. Note robbing isn’t a big deal, but one must be aware of limitations when playing live. It is what it is.

None of the reviews had much to say about the Spread control which configures and tunes the oscillators. Spread in the range 0 to 64 sets detune. Above 64, the oscillators are spread by interval: major, minor, major 6th, sus 4th, 5th, 5th oct, oct-+5, oct+-, oct–. The ‘+’ and ‘-‘ seem to apply to wave 1 and wave 2 respectively — something which isn’t documented.

The Skulpt SE examples on Modal’s Soundcloud site portray the SE accurately. These sounds may calm your nerves and help you make up your mind when shopping on-line.

The software

Modal provide a software-based Skulpt SE editor for Windows, MacOS and iOS. They even supply a version that executes as a VST3 plug-in so you can modify SE voices while working within a DAW. Modal Electronics distribute six sets of patches: SE Factory bank, Old Factory bank, Stranger Things, Made by Kyle, Skulpt MPE and Skulpt The Mix. You will find the User Manual PDF on the download page, too.

Current firmware is version 2.1. The MODALapp, AKA “the editor,” handles updates. My unit shipped with 2.1 and is up-to-date. [Hint: Check the firmware version on the MODALapp Settings page.]

MODALapp installed easily and immediately recognized the SE. It’s a very convenient way to audition patches, which I am merrily doing as I write this. 🙂 It will be difficult to decide what to keep and what to toss! Patch changes are snappy and holding a note or chord across a patch change produces interesting results, kinda like turning the power off on your Farfisa, only better.

One small niggle — and I do mean small — is the tiny, unreadable size of a few button legends like ‘+’ and ‘-‘. Modal should make these legends bigger.

MODALapp Skulpt SE patch management

A tip or two. If you click on the patch name, MODALapp opens the patch management page. Everything is reasonably intuitive and drag ‘n’ drop. However, I didn’t immediately suss the meaning of the “Local,” “Skulpt Synthesizer” and “Toolbox” sections of the UI. The manual lays it out clearly:

  • Local are patches stored on your PC.
  • Skulpt Synthesizer are patches stored in the SE.
  • Toolbox are scratch patches — a temporary local holding pen for your favorites.

The Toolbox is a convenient and useful idea. It’s a place to put favorites while you cherry pick the factory patches. I wish more tools had a scratchpad like this one. BTW, the Local patch section is preloaded with the old mark 1 Skulpt patches — no need to import them when getting started.

MODALapp Skulpt SE editor

One gets the true measure of the SE’s depth through MODALapp. The modulation matrix is quite large:

  • 8 sources: LFO1, LFO2, MOD-EG, NOTE, VELO, MODW, EXPR, AFTT
  • 34 destinations: CUTOFF, RESO, MORPH, … DIST, DELAY, TIME

The eight virtual knobs in the lower left corner of the editing screen make connect modulation sources and destinations. All major parameters are available, accessible, and easy to find.

How will I use Skulpt SE?

I want to use Skulpt SE as a portable, complementary sound source for Yamaha MODX, Reface and SHS-500 synths. The SE is bigger than I anticipated and is a little too large for a MODX topper. It may have to ride on a soft pad over a few of the rightmost front panel buttons.

Battery operation will help me complete my portable mobile rig. The SHS-500 is a good mate and connects up via 5-pin MIDI. No issues encountered with SHS-500 and Reface YC although I wish the Reface YC transmits MIDI program change messages.

I hope to give the SE’s MPE capabilities a workout. Right now, my only MPE-capable controller is an Artiphon Orba. The Orba does USB and Bluetooth MIDI, so I need to find a way to get the Orba and Skuplt to talk. (A software bridge?) I wish the major players like Yamaha, Korg, Roland, etc. would make Bluetooth MIDI and USB MIDI as easy to connect as 5-pin.

OK, I’m sold and I’m happily rooting for Modal. Based on my experience with Skulpt SE, I would definitely give one of Modal’s full-size offerings a try such as Cobalt or Argon. Modal Electronics are real.

Copyright © 2021 Paul J. Drongowski

littleBits for audio mods?

Here are a few experiments testing littleBits audio post-processing. In the first few cases, audio is produced by a Yamaha SHS-500 synthesizer fed into the LINE IN of a littleBits Microphone module. Outgoing audio is sent through a littleBits Speaker module connected to an external amplified speaker.

I did not draw the littleBits Power module into every example circuit. If you’re experimenting at home, hey, “One, Two, you know what to do…”

The first circuit filters incoming audio:

          PowerSnap 
|
V
Envelope <-- Button <-- PowerSnap
|
V
Mic --> Filter --> Speaker

The Filter modulation input is driven by a littleBits Envelope module. The (audio) input of the Envelope is connected to a littleBits PowerSnap which supplies a constant +5 Volts to the input of the Envelope. A littleBits Button module is connected to the Envelope’s trigger input. (The second PowerSnap assures a full 5 Volt ON signal through the Button.) The Envelope sweeps from 0 to 5 Volts when the Button is pressed. Of course, the Envelope is shaped by its attack and release settings.

The first circuit operates successfully. The audio is filtered according to the Filter’s cut-off and resonance settings. The Filter quacks (a very scientific term!) when the Button is pushed.

The second circuit replaces the Button with a littleBits Pulse module:

          PowerSnap 
|
V
Envelope <-- Pulse <-- PowerSnap
|
V
Mic --> Filter --> Speaker

The Pulse module repeatedly sends a trigger signal to the Envelope module. The triggers cause the Filter to quack correctly. However, there is an audible click when the Pulse module fires — even if no audio is playing. This noise is unacceptible and I don’t know why it is occurring. Power glitches perhaps?

At this point, I began experimenting with the littleBits Threshold module. The (third) simple test circuit below:

    Power --> Dimmer --> Threshold --> Number

demonstrated that my intuition about the Threshold behavior is correct: when the voltage into the Threshold exceeds the threshold setting, the Threshold turns ON and outputs +5 Volts. When the input voltage falls below the threshold setting, the Threshold output turns OFF (0 Volts).

Testing tip: The Number module has a “Voltage” setting in which Number displays the incoming input voltage. You can use a Number module as an in-circuit volt meter.

Given that, I couldn’t determine why the Threshold was not acting like a gate generator when driven by a littleBits audio signal, i.e., driven by the Microphone module in its “Sound” setting. Turns out, the littleBits Microphone module converts the incoming LINE IN signal into its own notion of audio — a signal centered around 2.5 Volts. I connected a Bargraph (or Number) module to the output of Microphone, and indeed, the Microphone sends 2.5 Volts when the audio is silent.

Arg! Once again bitten by the lack of signal documentation! When the Microphone is in its “Other” setting, it converts the input signal to swing from 0 to 5 Volts. Bad news, however. The Speaker module expects audio in the 2.5 Volt centered, littlebits convention and it distorts like a bandit when driven with the “Other” setting.

The 2.5 Volt convention also explains why some folks have observed only a 2.5 Volt sweep in the Envelope output. All of this has serious implications when mixing audio and control signals in littleBits. I need to think about this for a while…

The fourth test circuit demonstrates filtering of regular line level audio:

                              Powered Speaker 
LINE IN
|
Power --> Proto --> Filter --> Proto
|
Synthesizer
LINE OUT

This circuit filters incoming audio. Fortunately, the 2.5 Volt convention does not preclude a simplified signal chain, that is, a chain omitting the littleBits Microphone and Speaker modules. A filter is a filter is a filter, I guess.

Although the Filter module operates on a “regular” audio signal, the Delay module does not. Substituting the Delay module into the fourth test circuit produces nasty noise and a whine. It will process the audio (you can hear repeats, etc.), but the noise/whine is horrible. Screams like a banshee. Bummer.

Bottomline, the littleBits Filter module has potential as an add-in for a PSS-A50 mod (or any other mod) without Microphone and Speaker modules. The littleBits Delay is simply too noisy by itself; one needs the Microphone and Speaker to perform signal conversion. As to the Filter, I need to explore alternatives for modulation. Experiments with using the Oscillator module as an LFO were underwhelming. So far, I haven’t successfully cobbled together an envelope following or audio-trigger envelope. Stay tuned.

Interested in littleBits synth control signals?

Copyright © 2021 Paul J. Drongowski

Combo organ: Top octave emulation

Given the scarcity of combo organ top octave generator ICs, what’s a hack supposed to do? Emulate!

I posed a “bar bet” against myself — can I emulate a top octave generator chip with an Arduino? The Arduino is a bit slow and I wasn’t sure if it would be fast enough for the task. Good thing I didn’t best against it…

If you browse the Web, you’ll find other solutions. I chose Arduino UNO out of laziness — the IDE is already set-up on my PC and the hardware and software are easy to use. Plus, I have UNOs to spare. Ultimately, one can always cobble together a barebones solution consisting of an ATMEGA328P, a 16MHz crystal and a few discrete components, if small size is an issue.

A simple passive volume control

There’s not much ancilliary hardware required. A few jumper wires bring out ground and audio signals from the UNO. I passed the audio through a trim pot volume circuit in order to knock the 5 Volt signal down to something more acceptable for a line level input. The trim pot feeds a Sparkfun 3.5mm phone break-out board which is connected to the LINE IN of a powered speaker.

That’s it for the test rig. The rest is software.

I assigned a “root” pitch to Arduino digital pins D2 to D13:

#define CnatPin 13 
#define BnatPin 12
#define AshpPin 11
#define AnatPin 10
#define GshpPin 9
#define GnatPin 8
#define FshpPin 7
#define FnatPin 6
#define EnatPin 5
#define DshpPin 4
#define DnatPin 3
#define CshpPin 2

Thankfully, the Arduino has just enough available pins to do the job while avoiding pins D1 and D0. D1 (TX) and D0 (RX) carry the serial port signals and it’s best to let them do that job alone.

My basic thought algorithm-wise was to implement 12 divide-down counters (one per root pitch) that decrement during each trip through a non-terminating loop. Each counter is (pre-)loaded with the unique divisor which produces its assigned root pitch. Whenever a counter hits zero, the code flips the corresponding digital output pin. If the loop is fast enough, we should hear an audio frequency square wave at the corresponding digital output. This approach is (probably) similar to the actual guts of the Mostek MK50240 top octave generator chip, except that the MK50240 counters operate in parallel.

Each root pitch needs:

  • A digital output pin
  • A note count variable
  • A divisor
  • A state variable to remember if the output is currently 0 or 1

For the highest pitch, C natural, we need declarations:

    #define CnatPin 13 

byte CnatCount ;

#define CNAT (123)

byte CnatState ;

and count down code to be placed within the loop body:

    if (--CnatCount == 0) { 
digitalWrite(CnatPin, (CnatState ^= 0x01)) ;
CnatCount = CNAT ;
}

These are the basic elements of the solution. The rest of the pitches follow the same pattern.

Now, for the fun — making the loop fast enough to be practical. This was a bit of a journey!

First off, I tried the MK50240 divisor values which require at least 9 bits for representation. Using INT (16-bit) counter variables, everything worked, but the final note frequencies were too low — not much “top” in top octave. I cut the divisor values in two, switched to BYTE (8-bit) counter variables, and doubled the output frequencies. Yes, AVR (Arduino) BYTE arithmetic is roughly twice as fast as INT arithmetic. That was the first lesson learned.

The next lesson had to do with how the counters were stored (register vs. memory). If I were writing the code in assembler language, I would have stored all of the counters in AVR CPU registers. (AVR has 32 CPU registers, after all.) Register storage would provide the fastest counter access and arithmetic. However, this is where C language and the Arduino setup()/loop() structure fight us.

Ultimately, I put all code into setup() and ditched loop(). I declared all twelve counters as register BYTE variables in setup():

    register byte CnatCount ; 
register byte BnatCount ;
register byte AshpCount ;
register byte AnatCount ;
register byte GshpCount ;
register byte GnatCount ;
register byte FshpCount ;
register byte FnatCount ;
register byte EnatCount ;
register byte DshpCount ;
register byte DnatCount ;
register byte CshpCount ;

The compiler allocated the counter variables to AVR CPU registers. This enhancement doubled the output frequencies, again. Now we’re into top octave territory!

The third and final lesson was tuning. The Mostek MK50240 is driven by a crystal-controlled 2000.240 kHz master clock. The emulated “master clock” is determined by the speed of the non-terminating loop (cycling at the so-called “loop frequency”):

    for (;;) { 
if (--CnatCount == 0) {
digitalWrite(CnatPin, (CnatState ^= 0x01)) ;
CnatCount = CNAT ;
}

...

delaySum = delaySum + 1 ;
}

My original plan was to tune all twelve pitches by changing the speed of the non-terminating loop. I discovered that such timing was too sensitive to code generation to be controllable and reliable. The biggest delay that I could add to the non-terminating loop was “delaySum = delaySum + 1 ;“. In the end, I manually tuned the individual note divisors.

A fine point: I chose the divisors to achieve a wide resolution in 8 bits. Eight bits is “close enough for rock and roll,” but not really enough for accurate tuning.

As usual, the path to the solution was zig-zaggy and not straight. Here is a ZIP file with all of the code and my working notes. I included source code for the intermediate experiments so you can re-trace my steps. Have fun!

Copyright © 2021 Paul J. Drongowski

Review: zplane deCoda

A recent thread on the Keyboard Forum (“What was the first song you figured out by ear?”) brought up memories of high school and combo organs. One of the most popular tunes of the time was “Space Rock Part 2” by The Baskerville Hounds. Air play on Ghoulardi was a big boost to its popularity and it really brought people onto the dancefloor. “Space Rock” is pretty much a rip of The Stones’ “2120 South Michigan Avenue,” albeit way up-tempo than the Stones’ version. Sly Stone knocked out his own titled “Buttermilk.” If you’re wanting a modern update, listen to the 2015 Jerry Cortez cover.

The “Space Rock” organ solo was the solo to know as a teen. At the time, I was paying off my Farfisa and didn’t have any money for records, so the old “drop the needle until you got it” method wasn’t for me. My bandmates were always on my back about it and they didn’t accept my “Guys, they’re just jammin'” excuse. I tried to cover the head and then improvise. Oh, well.

I’m pulling together a backing track for “Space Rock/2120” and it seemed like the time to transcribe the solo. Enter zPlane deCoda. In a nutshell, zplace have deployed their time/pitch stretching and DSP expertise to the problem of picking out tunes from audio. (See the Sound On Sound review for more information.) It’s not an audio-to-MIDI converter, so you still need to use your ears and eyes.

First, ya drag (or open) an audio file in deCoda. deCoda gives you two views: a standard (amplitude) waveform view of the audio and a spectrographic plot. The spectrographic plot is like a DAW piano roll. Instead of notes, however, it displays the sonic energy present at each pitch. You can (kind of) see the notes in the song — pitch and duration. I spent most of my time in the spectrographic display.

zplane deCoda in action

Optionally, you can turn on an XY panel (at right in the image above) that lets you focus playback and analysis on a particular “region” of the stereo field and audio frequency spectrum. Thanks to the XY panel, you can eliminate the bass and high-end sibilance. Blobs light up in the XY panel during playback as notes come and go.

deCoda offers a number of playback controls. You can playback at 1/4, 1/2, 3/4 and full speed. You can transpose up and down. You can change the tempo. My recommendation is to get the best mix of key, tempo and XY region before deep diving transcription.

Like Yamaha’s Chord Tracker, deCoda discovers key, tempo, chords and song sections. As mentioned, you can modify deCoda’s decisions. Compared against Chord Tracker, I would give Chord Tracker the edge. (Yamaha have invested a pile ‘o’ cash into music analysis.) Both tools handle simple chords OK, but forget jazz chords (no 11th and 13th chords) or gospel voicings.

After quickly munching “Space Rock”, deCoda had the key right, but half the actual tempo. The Hounds played “Space Rock” at a blistering 156 BPM. deCoda says 78 BPM. That’s OK, but…

One of the coolest deCoda features is the ability to draw notes on top of the spectrographic display. The notes play back through a simple synthesizer (think Casiotone). A mixer controls the relative level of song audio and synthesized tones. Once I got a little more skilled with deCoda, I found myself changing the relative levels quite often in order to A/B the original audio and the drawn notes. I wish deCoda offered a few different synth voices as the simple tones blended with the organ notes making it difficult to sort out the sounds by ear.

With a little practice, you can begin to pick out the notes by sight as well as ear. 1/4 playback is good for checking note start and duration. “Space Rock” is a mono mix and a mess of frequencies with that danged 60’s ring-y reverb. Thus, there are many false positives — places where you think there is an organ note, but it’s actually the frapping guitar. I wish deCoda could color notes according to timbre. Man, that would be quite the time-saver.

To compensate, I found myself playing the notes on keyboard, mainly to check fingering. “Space Rock” is one of those lazy blues tunes where the keyboardist just rocks his or her fingers around in one basic hand position. It’s difficult to read piano roll notes in real-time; I’d love to have even a simple staff viewer.

Now for the “but…”. deCoda can export the notes as a Standard MIDI File (SMF). Very good. deCoda produces MIDI notes that follow the identified tempo. When the SMF is imported into a DAW or notation tool, it arrives with the identified (or tweaked) tempo. Note play back sounds right, but if you change to the correct tempo in the tool, note starts and note durations are off (i.e., half of what they should be). I had to fix the note starts and durations in Sonar, save another SMF and import the modified SMF into Sibelius. Bummer.

I discovered the tempo and note export gotcha downstream. I also found that I wanted to work and play in G Major, not F# Major, AKA “that frapping guitar key.” I had already started a draft in Sibelius and it became a question of how much work I wanted to throw away. It’s better to get these considerations right from the start before export and downstream work.

Speaking of Sibelius, I really longed to have the identified notes in notation form, not piano roll. Under Windows 10, I couldn’t work in Sibelius and deCoda simultaneously. They did not work together — some kind of MIDI or audio system conflict. One or the other tool wouldn’t play when they were both open at the same time. In a few cases, I had to resort to notation paper and pencil to transfer identified notes into Sibelius, exit Sibelius, then re-start deCoda. Painful.

After all is done, I arrived at a decent transcription in Sibelius. (See image below; click to enlarge.) After seeing and playing the solo against a rough backing track, I think deCoda is about an eighth to a quarter note ahead of the beat. I’m not sweating it too much as playing “Space Rock” comes down to feel. However, it might be a factor when an accurate score is needed for chart-driven players.

Space Rock Part 2 (solo)

zplane deCoda is a worthwhile tool. It won’t automatically transcribe, but it is a decent assistant. The note editor and MIDI export are a real boon as I a keep a book of charts for reference. The XY plot is also a worthy mix visualization tool and has been repurposed in zplane peel. I hope that deCoda continues to invest in deCoda as I would love to have timbre coloring. That’s a tough technical problem, but cracking that nut would put zplane way out in front competetively.

Copyright © 2021 Paul J. Drongowski