Mini review: Korg Module

Korg have extended their summer apps and software sale. Sale is on starting today (June 24) and ending Wednesday, July 15, 2020.

They finally got me with Korg Module Pro. The backstory…

I installed the free version of Module when I assembled the Korg NTS-1, hoping that it would unlock a few extra instruments in Module. For some reason, nothing unlocked and I gave up. I really wanted to assess the five built-in engines before springing for Module Pro.

Well, shucks, sight to the blind. Last week, I cast my gaze across the studio, coming to rest on the MicroKorg XL. Duh! Why didn’t I reach for the MicroKorg to begin with? After wiring up, the MicroKorg unlocked the electric piano, organ, clav, and string engines. Only one patch each, but certainly enough to get a good taste.

Needless to say, the five engines are pretty darned good. I sprang for Korg Module Pro and the Module Performance Expansion pack. The Module Performance Expansion pack adds more voices, MIDI CC learn and the ability to split and layer.

The ability to layer is very handy as I always find Korg’s acoustic instruments to be a little bit raw on their own. Sure, effects help to dress up the voices, but a soft pad adds warmth to strings and so forth. Orchestration 101.

MIDI CC learn is a bit of a necessity, I discovered. Unexpanded Module Pro responds to specific MIDI CC messages. For example, CC#100 controls organ rotary speaker speed, a rather essential element. To my chagrin, I discovered that the Yamaha MODX, which I am using as a controller, does not send CC message higher than CC#95! What the what? MIDI learn allows you to assign a controller to rotary speaker speed or other Module parameter of interest. [Check the update below for the correct solution!]

I connected the Yamaha MODX to the iPad via Apple Camera Connection Kit and an ancient IK Multimedia iRig 5-pin MIDI interface. Why 5-pin? That’s the other gotcha. I initially connected the MODX to the iPad via USB. Module receive the MIDI OK, but somehow the outgoing audio stream was lost with no signal at the 3.5mm headphone output. [See the update!]

I may look for a different audio/MIDI interface solution as I hate using the 3.5mm headphone jack. It’s not mechanically robust and it’s all too easy to get ear-itating scratchy audio. I don’t want to spend a lot of money and don’t want any solution involving powered hubs and such. I might give the Alesis Control Hub a try or maybe Korg’s own plugKEY. The Control Hub is a legacy product and availability is spotty. The plugKEY is a little more expansive, but is purpose-built for iPad software instruments and is Lightning-only. The Control Hub is USB-B class-compliant.

My only remaining nit is also one of my pet peeves. Software vendors should be forthcoming and specific about voices (patches) available at verious tiers. In the case of Kork Module, the free version has only one unlocked engine — acoustic piano and one patch:

    Acoustic Piano       Natural Grand

When the free version is connected to a Korg synth like the MicroKorg, you get five unlocked engines, one patch per engine:

    Acoustic Piano       Natural Grand
Electric Piano Natural Tine EP
Organ Simple Organ
Clav Clav CA
Strings/Choir Strings

The engine beneath Strings/Choir is really a sample-playback engine and it’s not limited to strings!

Korg Module Pro unlocks many additional patches for the five engines:

    Acoustic Piano
Natural Grand Bright Grand
Dark Grand Heavy Touch Grand
Light Touch Grand Damper Reverb Grand
Cinema Piano Mono Attack
Comp Piano Upright Piano
Radio Piano Honky Tonk
Flange Piano Electric Grand
Chorus E.Grand AOR E.Grand
Ac+El Piano Pad Piano
Spacy Piano Strings Piano 1
Strings Piano 2 Choir Piano
Twinkle Piano Stack Piano
Electric Piano
Natural Tine EP Hard Tine EP
Soft Tine EP Tremolo EP
Phaser EP Chorus EP
Boomy Vibe EP Auto Wah EP
Deep Mod EP Distortion EP
Hybrid EP Dark Sine EP
Digital EP Synthetic EP
Pad Tine EP Strings Tine EP
Organ
Simple Organ Dark Organ
Soul Organ Jazz Organ
Memphis Organ Gospel Organ
Clean Organ Bright Organ
Drive Organ 1 Drive Organ 2
Full Organ 1 Full Organ 2
Perc Organ 1 Perc Organ 2
Perc Organ 3 Perc Organ 4
Vox Organ 1 Vox Organ 2
Clav
Clav CA Clav CB
Clav DA Clav DB
Wah Clav Phaser Clav
Distortion Clav Mute Clav
Psychedelic Clav Clav Guitar
Sample-playback
Strings Slow Strings
Strings Pad Analog Strings
Phase Strings Flange Pad
Choir Pad Vocoder Pad
Brass Ens Octave Brass
Funky Sfz Brass Hybrid Brass
Analog Brass Soft Horn
Warm Pad Saw Pad
Ambient Pad Bell Pad
Saw Wave Chiptune Wave
Synth Stab Unison Synth
Saw Synth Soft Synth
Rez Comp Rez Square
Synth Clav Saw Pluck
Square Pop Detune Sine
Digital Bell Ring Bell

The electric piano is quite nice; the patches provide a wide range of Rhodes tone. The rotary organ patches cover a useful range, too, including a pair of VOX combo organ sounds. The clav is up-to-snuff and the patches cover the usual favorites. The sample-playback sounds are strong on ensemble voices, not so much lead tones or solo instruments.

The Module Performance Expansion pack rounds out the sample-playback sound set with guitars, bass, solo instruments, etc.

    Sample-playback
Violin Cello
Pizzicato Chamber Strings
Strings Ensemble Tremolo Strings
Romantique Strings Synth Strings
A Capella Pad Bubble Choir
Solo Trumpet Band Brass
Fanfare Horn Ensemble
Synth Horn Solo Flute
Vibrato Flute Pan Flute
Alto Saxophone Tenor Saxophone
Wind Ensemble Chamber Orchestra
Unison Stab Mono Dark Lead
Mono Synth Lead Detune Saw Lead
Octave Lead Talking Lead
Analog Piano Synth Pad Piano
Velocity Synth Synth Pad
Dark Pad Snow Pad
Aurora Pad Artificial Effect
Filter Motion Air Organ
Vibra-phone Glockenspiel
Celesta Steel Drum
Tubular Bell Mysterious Bell
Vibrato Glass Bell Bell Tower Pad
Foggy Hills
Ac. Guitar Nylon Guitar
Electric Guitar Guitar Dist.
Harp Sitar
Ac. Bass Walking Jazz Bass
Fretless Bass Finger Bass
Mute Pick Bass Slap Bass
Fat Pulse Bass Filter Bass

All of these sounds can be used as layer elements, too. That’s a lot of detail, but it should give you a better sense of the product feature tiers.

Update

After spending more time with Korg Module Pro, I’m happy. The sounds are first rate without much filler or junk. Some of the sounds are inspiring.

Further experiments…

I connected the Yamaha SHS-500 keytar to Korg Module Pro over Bluetooth MIDI. Pairing was a breeze, I couldn’t discern any annoying latency at all. There are a few patches where I dialed up the effect level — par for the course. I can see the SHS-500 plus iPad/Module as a lightweight portable rig. Going wireless would be a real boon for the crazy small spaces that I play in.

I also gave MODX another shot as MIDI controller. Success! The digital audio stream is sent back to MODX on its USB class-compliant audio device. My initial mistake was a head-slapper. Pay attention to the MIDI and audio meters in Module’s upper left corner. At first, I saw MIDI activity and no outgoing audio level. Should have been a big clue. Check and set Module’s OUTPUT LEVEL knob and make sure it’s turned up. Doh!

I resolved the organ rotary speaker speed issue by reading the manual and noting the organ/damper pedal setting. Module receives CC#64 sustain. When the organ/damper pedal setting is “Rotary,” sustain toggles the rotary speaker speed — no MIDI CC learn is necessary.

That’s it! Korg Module Pro 50% off is money well spent.

Copyright © 2020 Paul J. Drongowski

What did you do in self-isolation?

Yes, this site still does music! 🙂

Several weeks ago, I decided to record the church tunes that I enjoy playing. It’s best to start with favorites, as most of you know how you come to detest a track after playing it over, and over, and over again during production. Energy quickly dissipates when micro-editing MIDI events or digital audio…

Before getting into production notes, here are links to the final tracks (all MP3). The goal was to crank out a new tune each week and send it to the folks in our music ministry. Some tunes are a little more polished than others. Please consider them “demo quality.”

Without going too far into the technical weeds, the primary sound source is Yamaha Genos™ and the primary vocalist is my spouse Fran. With the Mill Creek Chorale on hiatus — aren’t we all? — I was happy that she could contribute and have fun, too.

Production notes

So, how did all of this go down?

These demoes show off the Yamaha Genos as a sound source and production tool. I had two main subgoals:

  1. Learn how to record a demo with Genos in either audio or MIDI format.
  2. Learn how to mix down with Steinberg Cubase Artist and try out a few of the freebie plug-ins that I’ve collected.

By and large, Genos and Cubase were the main production tools although I back-slid into SONAR on a few occasions for MIDI editing. Old habits die hard. Workflow was not strictly linear from Genos to Cubase. In a few cases. MIDI and/or audio (stereo 16-bit 44,100 WAV) were slung back and forth between tools.

Yamaha Genos

Genos is the sound source with one big exception: drawbar organ. When you hear B-3, you’re hearing Yamaha MODX through an Electro-Harmonix Lester K. I wanted to hear Lester K in musical context. It sits in a song pretty well and has more guts than the Yamaha MODX Leslie simulator. By itself, though, Lester K has some high-end swirliness in the upper drawbars, but in a track, it seems to mesh. You be the judge.

Emphasis was on speed. Get the tracks down quickly and finish a song each week ASAP. The Beatles used to call this recording “on heat.” Even so, it’s amazing how modern technology will drag you into the dank chasm of production minutiae. Don’t you just love hearing the same three measures fifty times while tweaking and tweezing. Not.

All vocals were recorded directly to Genos using its microphone input. Full backing and raw vocal tracks were exported to Cubase via WAV. Everything was processed and mixed in Cubase. The final mix was exported from Cubase as WAV, and then trimmed and converted to MP3 using Sound Forge Audio Studio.

Our God Is Here This was the first demo in the series and the process doesn’t get any simpler than this. All was recorded into Genos Audio Multi Recording. Find a beat, turn it on, lay down the organ part. Unfortunately, I didn’t plan for the ending, which is quite ragged. The organ is Genos in this case (not MODX). Kinda plain, huh? The bass is an overdub.

Audio Multi Recording is a nicely done sound-on-sound recorder a la Les Paul, minus tape hiss. There are two stereo tracks: main and sub. You can record directly to either main or sub, and bounce (sub+main) to main. There are options for punch in and overdub. Audio Multi Recording provides WAV import and export, functionality which eventually got a true work-out.

Audio Multi Recording keeps digital audio in a persistent project. A project resides in the internal Genos 60GB user solid-state drive and is always ready. The project remembers audio and mix settings without requiring explicit save and load user operations. That makes for a clean workflow. Export is the way to get digital audio into a WAV file and it mixes the main and sub on the way to WAV. In order to export a solo vocal track from sub, one needs to dial down the main and then wait while Genos writes the WAV file in real time. I wish there was a simple, direct fast export to WAV supporting both main to WAV and sub to WAV.

In The Day Of The Lord I quickly realized that I do need to think ahead and assemble a basic skeleton on which I could build a tune. (Duh!) In this case, Toontrack EZDrummer provided the drum patterns which I pulled together in Cubase. Genos played the MIDI drum track while I recorded the flute as a melodic guide and layered in the bass and organ — all recorded as audio. We then did a few vocal takes to Genos. I transferred all of the Genos audio as WAV into Cubase for the final mix. Vocal processing typically was light: a little pitch correction, EQ, and maybe double tracking. A touch of reverb (Cubase Revelation) blends everything together here.

Stop By, Lord This tune makes use of the Genos rhythm accompaniment consisting of main patterns and one-bar fills. I recorded a basic guide track in MIDI using the “BigBandBallad” style as the drummer. This meant switching the main and fill patterns with my left hand while playing the melody with my right hand. I layered in the piano, bass and horns, discarding the guide melody along the way. I added the B-3 organ (MODX through Lester K) in an audio pass. Everything was recorded and produced on Genos since we didn’t record vocals.

Psalm 95 If Today “If Today” makes full use of the Genos arranger features. I played the basic accompaniment track using the “Sunny Reggae” style. Whoever built that style, it must have been a labor of love and it fits this song quite well. I vocoded my voice. Both the accompaniment and vocal tracks where exported to Cubase for final assembly and mix down. I had a lot of fun adding dub effects and tons of reverb, Long live King Tubby!

Rise Up With Him “Rise Up” was recorded to MIDI, again using the Genos rhythm accompaniment as the drummer. The electric piano went down first followed by the bass. The B-3 organ is MODX through Lester K. Backing and vocal audio were exported to Cubase for final mix down. Overall, a pretty simple demo to pull together.

O Sacred Head I recorded the MIDI for this tune a long time ago — in the early 2000s on a Roland XP-60. The guitar picking was carefully edited and assembled (years ago!) from Twiddly Bits. I imported the XP-60 MIDI into Cakewalk, choosing Genos voices and effects. The Genos result versus the original XP-60 is amazing. Fran encouraged me to leave it as an instrumental.

This Is The Day This psalm is long out-of-print. A few years agao, I transfered a scruffy copy of the piano score into Sibelius. So, to kickstart this tune, I exported MIDI from Sibelius, restructured the sections, and humanized the piano as much as possible. I tried to keep the accompaniment simple adding just bass and horns. Once again, the backing and vocal tracks were mixed in Cubase. This demo is a good example of Arturia’s Plate-140 reverb — a freebie that Arturia gave away during the Christmas holiday. I love it.

Lead Me, Lord Another simple turn-on-the-beat-box, sound-on-sound production. Everything was recorded to Genos with the backing and vocal tracks exported to Cubase. (Another example of Plate-140, BTW.) The vocal harmony was generated by a TC Helicon Play Electric added in real time. Recording and production was dirt simple although it took a while to get the TC Helicon configured.

Alleluia! Love Is Alive This was the penultimate demo in the series. The basic track is a stripped down Genos “6-8PopBallad” style. Yamaha tends to over-orchestrate styles, so I kept drum, bass and guitars, tossing the rest. Instead of playing the basic track, I created the accompaniment using chord step-record. This MIDI Multi Recording feature lets a musician enter chords and sections from a lead sheet, quickly creating the song skeleton. You can even try different styles if you haven’t chosen one already. Once the skeleton is set, you expand the chord track into MIDI events, thereby obtaining the full backing track in a Standard MIDI File (SMF).

I added the Celtic violin by playing it into a free MIDI track. Using Sonar, I tweaked the tempo in the full MIDI song in order to add energy as the song progressively builds to the end. Finally, with the MIDI finished, I froze the backing tracking to WAV audio. The backing and vocal tracks were mixed down in Cubase with a little automation here and there to add vocal depth and double tracking.

Conclusions?

The preceding discussion is already a lot to absorb and to process. I’ll take a step back in a future post and try to summarize. All the best to ya.

Copyright © 2020 Paul J. Drongowski

Early wave table and FM synthesis

Discussions about Yamaha Montage/MODX AWM2 and FM-X sent me digging into the past to unearth early AWM and FM implementations in order to get insight into today’s tone generation hardware. Although Yamaha do not publish design information about their proprietary SWP, SWX, SWL, etc. processors, they have published datasheets for their merchant line of LSI products. Yamaha were very active in the mid- to late-1990s when desktop music (Soundblaster, XG, Sondius, etc.) was king.

The Yamaha YMF278B OPL4 was one such LSI component. The OPL4 combines a 2-/4-op FM synthesizer and a wave table synthesizer on a single 80-pin quad flat pack (QFP). The FM synthesizer can:

  • Generate 18 voices in 2-op modes or 15 2-op voices plus five rhythm sounds.
  • Generate 6 voices in 4-op mode with an additional 6 voices in 2-op mode, or 6 voices in 4-op mode with an additional 3 voices in 2-op mode and five rhythm sounds.

The FM synthesizer has eight selectable waveforms and generates a stereo output. The wave table synthesizer can generate 24 voices simultaneously (i.e., 24 voice polyphony) producing stereo output at a 44.1kHz sampling rate with bit depths of 8-, 12- and 16-bits. Wave ROMs up to 32Mbits are supported with up to 512 wave tables.

The OPL4 has six sound channels which can be sent to an external DAC (YAC513) or a digital effects processor (YSS225). Sadly, documentation for the YSS225 cannot be found on-line. The YSS225 is said to perform reverberation, echo, flange and other effects.

The FM and wave table synthesizers are two separate hardware units. I wouldn’t be surprised if this is still the case in the modern day SWP70 Standard Wave Processor. Separation lets the engineers optimize the synthesis hardware for a particular synthesis type.

Wave table synthesis

The OPL4 does not implement AWM2 synthesis. The synthesizer does not have the AWM2 filter hardware. This is not too surprising because in that era, Yamaha regarded AWM2 and its analog-like filter as a special competitive advantage. Why would they give that same advantage to other sound card vendors? It’s a safe bet, however, that the XG-compliant variants are full AWM2.

Nonetheless, a peak inside gives us a look at Yamaha’s wave table machinery. The synthesizer consists of a synthesis core that fetches waveform samples and waveform meta-data from external wave memory.

YMF278B block diagram

Quoting the OPL4 data sheet:

The wave table synthesizer can generate up to 24 sounds simultaneously. Each sound is referred to as a “channel”. The channels are numbered from 1 to 24. These numbers are called “channel numbers”.

Wave table synthesis is controlled by a few hundred registers. The main control CPU writes common and channel-specific synthesis parameters into the registers. The synthesizer reads the registers during each synthesis macro-cycle and produces a new sound sample for each channel. The channel-specific control registers are organized into register groups. Each group consist of 24 registers, i.e., 24 values of a specific synthesis parameter type, one value per channel. A quick glance at the table below clarifies the register organization and the wave table synthesis parameters. Parameters for envelope generation, pan, LFO control, etc. are easily identifiable. (The YMF278B data sheet has the details).

YMF278 wave table synthesis control registers

I conjecture that today’s SWP70 is organized in a similar way. The CPU-SWP70 communication bus is a memory bus that gives the CPU direct access to the SWP70 synthesis control registers. Think about it. With 128 stereo AWM2 channels, there are several hundred (thousand!) synthesis values which must be configured at the hardware level. Software’s job is easier and fast by making the synthesis registers (channel-specific parameter value) directly accessible.

Wave table in external memory

The waveform data and meta-information in external memory cosnsist of two parts: Up to 384 waveform headers and the waveform sample data. Each waveform header is 12 bytes containing:

  • Wave data start address
  • Loop address
  • End address
  • Voice parameters: LFO, VIB, ADSR, etc.

Today’s wave table is probably similar albeit much bigger. Explore Yamaha’s Universal Voice Format (UVF) and you’ll see what I mean.

FM synthesis

The OPL4 supports 2- and 4-op frequency modulation (FM) synthesis. Quoting the data sheet:

The part that generates one sine wave is called an “operator”. A combination of these operators is called an “algorithm”. The first stage operator (see diegram below) is called the “modulator” and the second stage operator is called the “carrier”. The frequency and envelope can be set for each operator. “Feedback FM” is available to generate a wider range of sounds.

Basic FM system
Feedback FM system

Like the wave table synthesizer, the FM synthesizer has a large table of common and channel-specific synthesis parameters. The register table organization is a little more complicated. Quoting:

The OPL4 has 36 circuits that generate a sine wave. A circuit which generates a sine wave is called a “slot”. A sound unit which is generated by combining two or four operators is called a “channel”. There are two kinds of sound generation control registers: registers settable in slot units and registers set in channel units.

In 2-op mode, two slots are used to generate on FM sound. With 36 available slots, 18 channels of sound can be generated. In 4-op mode, four slots are used to generate one FM sound. Six channels are generated using 24 slots.

YMF278 FM synthesis control registers

Whew! Given the two dimensional nature of register organization, addressing a specific parameter value for a specific operator is a complicated matter. (See the data sheet for details.) Without going a deep dive into register addressing, here is an image showing common and channel-specific synthesis parameters.

YMF278 4-op algorithms

Summary

I would say that the overall architecture today (SWPxx) is not unlike the architecture of yesteryear. The number of synthesis parameters, of course, has exploded with new features in the wave table synthesis hardware (filtering!) and FM synthesis hardware. Modern FM can route FM output samples to AWM2 wave table filters, adding many wrinkles to datapath and control design.

The main CPU is responsible for channel allocation as notes are played and for channel deallocation as notes are released and completed. Once a channel is allocated, the main CPU must write the appropriate voice parameters into the channel registers. Then, it’s up to the synthesizer hardware to crank out a new sound sample at a 44.1kHz rate. Of course, the per-channel sound samples must be mixed and routed to the DSP effects processors. I would love to get a look at the mixing and DSP processing.

I hope this trip into the past gives you some insight into present-day AWM2 and FM-X hardware and an appreciation for the complexity and sheer number of details at the 10,000 foot level of digital synthesizer design.

Copyright © 2019 Paul J. Drongowski

Yamaha hold many patents on wave table and FM synthesis techniques. I recommend U.S. Patent 5,250,748 (1993) which describes the digital filter in AWM. For the modern era, I suggest U.S. Patents 8,779,267 (2014), 8,957,295 (2015) and 9,040,800 (2015).

Remie: A Christmas Story

My Yamaha PSS-E30 Remie review promised updates about how Remie works out in the real world with a two year old. Here’s a the first update (and why we moved out west to be with our grandson).

Background: Our grandson attended Kindermusik classes while he was an infant and, man, we can see the effects already. He also hangs with older kids and his big-kid grandfather (me) who all play keys, so playing keys already seems like an every-day activity.

When he comes over to our house, we put on music, or he and I sit down at the Yamaha MODX or Genos, depending on what’s set up and handy. He is in love with the MODX Superknob and the built-in beats, now referring to beat music as “orange music.” Orange is his favorite color and he will literally ask us to play “orange music”. One wonders if he has synesthesia or if he just likes the occasional warm orange glow from the MODX Superknob.

Yamaha PSS-E30 Remie

Well, come Christmas day, he unwrapped Remie and broke into a joyful smile. He quickly started pushing the start/stop button; Do kids understand icons that early? We dropped a few beats and he literally was dancing along. So, I would say the first encounter with Remie was quite successful!

A few minutes later, we caught his mom (a former wind player) trying different features and taking a quiz. Couldn’t have been better. We’ll see how Remie works out in the long run.

Hey, Yamaha! You missed an opportunity, tho’. Kids love the Superknob. Your next keyboard for kids should have a Superknob on it!

Merry Christmas and Happy New Year! (And support art/music education).

Copyright © 2019 Paul J. Drongowski

Musing about Montage VA

There’s been an extended discussion in the YamahaSynth.com Montage Forum about the ability to add Virtual Analog (VA) synthesis to the current Montage and MODX platforms. It’s been a good discussion and it encouraged me to jot down a few musings about the hardware support for AWM2 and FM-X.

In case you don’t visit YamahaSynth.com, I reposted my musings here and added a diagram or two.

Before saying anything, I have to emphasize “Speculatively speaking.” With as much invested in AWM2/FM-X and their implementation in silicon, Yamaha have not published about the internal design. This whole discussion — including my own comments — would be on much sounder footing (no pun intended) if the micro-architecture were published. Yamaha are tight-lipped so “Hah!” to us all. 😀

BTW, we’re lucky that we can speculate at all since Korg, Nord, etc. have largely buttoned up their service manuals.

I’m skeptical

I’m skeptical about adding VA through an update given the current platform because of limitations in the current synthesis pipeline.

Yamaha regard their expertise in large scale integration as a strategically important asset. (Please see their annual financial reports.) The SWP70 is a major investment in the future. It’s a generational step and a design with a long expected life time. A long life is needed in order to recoup Yamaha’s investment. Thus, we haven’t seen all of its potential capabilities as yet.

At some point, the current hardware platforms (Montage and MODX) will limit the features which can be delivered solely through software. That will necessitate a new hardware model in each product line. Speculatively speaking, I’m not sure if the SWP70 is capable of CS-like VA synthesis. The Reface CS (and DX) employ a Yamaha SSP2 (SH-2 CPU core) for synthesis. The mere presence of an SSP2 in the Montage is not significant for VA because it clearly supports UR-like digital audio in the existing design.

Of course, business decisions will take precedence eventually. We all love the free updates and improvements in our instruments. (I certainly do!) Like cellphones, tablets and other high-end electronics which enjoy periodic updates, we will need to buy a new upgraded platform in order to fuel the future. Nobody rides for free forever.

My mental model

I suspect that we nerds (and I mean that as a compliment!) have different architectural models in mind as to the SWP70 internals. One model is the “standard DSP” model — a pipelined single instruction, single data (SISD) CPU. Naturally, there may be enhancements for vector processing instructions and so forth.

An example of such a generic model is the Yamaha SSP2, which consists of an SH-2 DSP core and several effect DSP processors. The SSP2 is the heart of Reface CS with an internal clock of 135.4752MHz (a multiple of 44,100Hz, BTW). Another example would be the DSP56362 in early Nord/Korg modeling keyboards. The Reface CS manages 8 voices of polyphony (using the word “voice” loosely) with the effects handled by the SSP2 effect DSP processors. (The effect DSP processors are mini, small core, reprogrammable processors.)

The architectural model which I think is used in the SWP70 is a SIMD architecture more akin to a GPU. The Montage/MODX DSP RAM and wave work RAM memory clock is 95.9616.MHz, also a multiple of 44,100Hz. The SWP70 pumps out a finished sample every 2,176 memory clock ticks. The internal clock is probably a small multiple (maybe two) of the memory clock. Everything needs to run in a modest power envelope without a heat sink, etc., so it’s not possible to run at GHz rates.

After writing this, I realized that the AWM2/FM-X synthesis core may not have an instruction stream at all. It might be a block of 1 to N dedicated pipelines where each pipeline is, roughly speaking, an AWM voice element.

I image a block of tone generation (TG) cores dedicated to AWM2/FM-X. Part of that “dedication” is a pipeline specifically tailored and tuned to AWM2/FM-X. (I believe this design IP (the basic core design) is re-used in other AWM2 products.) Yamaha are in the AWM2/FM-X business so it makes sense to design hardware specific to these tasks. It’s no simple feat to produce 128 channels of tone generation with low latency and no burps and hiccups.

I don’t know how much flexibility is built into the so-called “oscillator” part of a TG core pipeline. Could Yamaha write a new SIMD program for VA using the existing TG core design? I don’t know and hence, my doubt.

That said, since Yamaha haven’t published a darned thing and my job easier (Hah!), I could be totally wrong. Yamaha are smart engineers, especially at the hardware level.

The choices made for Reface may or may not be revealing. Reface YC/CP use the SWX08 for AWM2/SCM synthesis. The SWX08 — in my imagination — use a similar AWM2 TG core assist. Reface DX/CS use SSP2 and its SH-2 core. Was something missing in the SWX08 TG core which was available later in the advanced SWP70 cores? Did SWP70 become VA capable as well?

Example: Yamaha YMW820

The closest I’ve ever gotten to understanding Yamaha’s approach to AWM2 is by studying the datasheet and MIDI spec for the YMW820 (NSX-1). Admittedly, the YMW820 is a low-end device implementing a large subset of the XG voice architecture with only chorus, reverb and a single variation effect.

YMW820 (NSX-1) block diagram

The YMW820 has a control CPU (dual issue, 32-bit RISC), mixer hardware, DSP for effects, and a “wavetable synthesis core” (Yamaha’s exact terminology). Both the synthesis core and DSP are controlled by the CPU.

The wavetable synthesis core supports 64 channels (polyphony). The YMW820 has a 2MByte wavetable ROM which presumably contains the General MIDI waveforms. It also has a 3 MByte wave RAM which can be loaded with eVocaloid waveforms or Real Acoustic Sound (Articulation Element Modeling).

The 64 channel synthesis core is drawn as a distinct hardware subsystem from the effects DSP. Each channel is what we consider an element: pitch generator, oscillator, digitally controlled filter (DCF), envelope generator (EG), LFO. I suspect that other AWM2-based products have similar wavetable synthesis cores, including the SWP70. [Click image below to enlarge.]

YMW820 (NSX-1) synthesis core and effect DSPs

Of course, the SWP70 synthesis core is the ultimate in the entire AWM2 family. It also has many effect DSPs for system and insertion effects.

Bottom line, Yamaha exploit massive parallelism for AWM2 synthesis where each channel is a wavetable synthesis element. A true DSP processor like the SSP2 is better suited for VA synthesis which is why the SSP2 is deployed in the Reface CS, not an AWM2-oriented SWX processor. (The SWX has an embedded wavetable synthesis core, too.) I believe that Yamaha will need to add another SSP2 (or some such) to the Montage in order to implement VA. There’s a reason why it’s called a “Standard Wave Processor” — it is hardware specifically designed for AMW2, FM-X, AEM, and SCM synthesis. It isn’t a general purpose programmable DSP. Maybe VA can be warped to the existing pipeline(s), maybe not.

BTW, the new VCM MINI FILTER and MINI BOOSTER are DSP effects. The effect DSPs are programmable — the AWM2 channel filters likely are not.

Big DSP vs. little effect DSPs

I tend to think of the internals as a tone generation front end followed by a flock of small DSP units in the mixer/effects back-end. This seems to be the canonical Yamaha pipeline. In Montage/MODX, some of the small DSPs are routed as insert effects and some as system/master effects. (The effect routing in Genos, BTW, is different and probably different in the high-end digital pianos.) I suspect that the data flow is predominantly (solely?) front to back.

I don’t really know if the small effect DSPs are general purpose or not.They are probably small simple cores because an SWP has at least 15 and real estate is limited. (Lower capacity parts like the SWXs and SWLs have far fewer small DSP cores.) A small core may not have much throughput and the front-to-back dataflow might prevent feeding data from the DSP cores back to the filters, etc. in the front-end.

There is also the issue of getting note and controller data to the effect DSPs in the back end. Note and controller data are delivered on the E-bus directly from the key, knob, slider, etc. scanning processor(s) to the tone generation core. Does all E-bus data get back to the small DSP cores? Certain some data gets through as knobs, sliders, etc. can tweak effect parameters in real-time.

Overall, even as a consumer, I would be happier with a dedicated SSP2 for VA. The VA SSP2 would inject its digital output stream into the existing mixer/DSP infrastructure. [The SSP2 vocal harmony processing does something like this in Tyros5.] The VA SSP2 gets its own DSP RAM and NOR flash for program, and the processing is totally out of the way of FM-X and AWM2. It would be possible to implement different VA algorithms without making compromises. Yamaha could periodically offer new engines as updates/upgrades.

If you’re an ARM aficionado, you might be thinking “big.LITTLE”. It’s a similar concept. Engineers need to make best use of limited real estate. Yamaha need lots of little DSPs for insertion effects. The SSP2 itself is organized as a big SH-2 DSP core and several little effect DSPs (plus a digital mixer). The mix of channel strip and guitar effects is limited.

Down memory lane

The discussion took me down memory lane to the venerable AN-200 and PLG150-AN. Both products use Yamaha’s AN (Analog Physical Modeling) daughter card. I love the old AN-200 and keep one handy. It is a pretty decent approximation of a five voice Prophet 5.

The daughter card contains two Yamaha LSI components:

  • YSS-236-F: An enormous 160 pin QFP for analog synthesis
  • YSS-233-F: A merely huge 128 pin QFP for mixing and effects

The 236 is also known as the “VOP3” and the 233 is known as the “MDSP”. The MDSP is deployed in the PLG150-DX daughter card, again in the mixing and effects role. The An1x, by the way, has two of each, implementing ten voice polyphony.

Some sites ascribe synthesis to the Hitachi H8/3002 on the daughter card. This is wrong. The H8/3002 is the microcontroller that issues commands and maintains digital communication with the mothership. The VOP3 does synthesis.

The VOP3 moonlights as the vocal harmony processor in early arranger keyboards like the PSR-9000. The VOP3 is the predecessor to the SSP and SSP2. The SSP and SSP2 subsume the mixing and effect DSP roles of the MDSP. Such is the march of large scale integration (LSI) fabrication technology.

Given this history, I’m not surprised that Yamaha chose the SSP2 for Reface CS.

I like surprises

Watch, Yamaha will come up with something completely different. 😀 Maybe an SWP71. There were different spins of the SWP50 family, so why not? 🙂 From the marketing point of view, demand for VA is sufficiently high that they may require everyone to buy a new platform anyway. Perceived value means “mo’ money.”

Copyright © 2019 Paul J. Drongowski

Just like starting over

I’m playing with a new group of liturgical musicians and am having great fun.

The two biggest challenges when playing with a new group are 1. listening and 2. picking up new music. Both challenges are opportunities for growth.

Listening is always key. As a synth player, I’m a bit of a frustrated orchestrator. Instruments like the Yamaha MODX and Genos offer a wide palette of acoustic and electronic sounds. The challenge is to listen carefully and find the right sound and part in the musical context. The context, of course, is the song and the other players — what the song needs, the instrumentation, what instrumentalists are playing, what singers are singing, dynamics and so forth. My goal is to select an instrument and improvise a part to complement the other instrumentalists while making the song stronger.

My last group was small: piano, acoustic guitar, sometimes drum, and me. That left a lot of musical space including exposed solos, fills, left-hand bass (as long as it didn’t interfere with the pianist) and foundation (e.g., pads, B-3 organ, etc.)

The new group is much larger: piano, guitar, drums, two flutes, viola, trumpet and trombone. There’s a lot going on! I’ve played with woodwinds and strings before; full-on brass is a new situation for me. There is still space, but careful listening is needed in order to find it. Obvious ideas include double reeds (oboe), French horn, woodwind ensemble, ensemble strings, cello, contrabass, pipe organ and B-3 organ (when the music calls for it).

With all of that going on already, it’s important to be part of the blend and to not overemphasize existing parts. Nor do I want to step on anyone’s part! For example, the flutists and viola contribute introductions and musical interludes such as an instrumental verse of a hymn. It’s going to take listening, time and experience to find the find complementary part(s). Conventional wisdom in scoring claims that acoustic instruments make it easier to fool the ear with electronic emulations. Thus, it makes sense to keep the real-deal acoustic instruments front and center.

Last Sunday, we did a rendition of “When the Saints Go Marching In” in remembrance of All Souls Day. Playing with the brass was a genuine kick. Challenge #2 — new music — I’ve never played New Orleans-style traditional jazz before. Although there are a lot of blue notes, the phrasing is unlike the gospel or Chicago-style blues that I’m used to playing.

So, hey, what to play? Clarinet and euphonium. New Orleans jazz is “lead and fill” or “call and response.” I downloaded a MIDI file to study and cop a few clarinet licks. I wrote out a simple clarinet part with a few fills and lines to harmonize what I thought the brass would play, assuming that the trumpet would take the lead. Euphonium-wise, an oom-pah alternating root (1 and 3) and fifth (2 and 3) was good enough to get started.

Try as I might, I just couldn’t get the two parts and hands going at the same time and settled for the clarinet line alone at the gig. Maybe next time… I think I may ditch the harmonization idea and play (around) the melody, too.

Patch-wise, you can’t always get what you want. I practiced the clarinet part on Genos using its Super Articulation 2 (SA2) clarinet which is darned sweet. I programmed a clarinet/eupohonium split on Yamaha MODX, but the MODX clarinet is not in the same league as the SA2. Compared to Genos, it sounds cheap. MODX (Montage) does have a decent euphonium, however, and maybe it’s better to go low than go high next time!

Yamaha, how ’bout a euphonium on Genos and SA2 on MODX?

That won’t stand in the way of the fun. In the meantime, there’s more than enough to keep me busy.

Copyright © 2019 Paul J. Drongowski

Update about the updates

Yamaha Genos V2.0 is on the way

Yamaha have updated their short video about the Genos V2.0 update. The release date is now specific: 15 November 2019. There was considerable squabbling on the forums as to what “Winter 2019” meant. I’m glad that Yamaha has put the question to rest.

The other big tidbit from the new video as to do with the “Genos V2.0 Superior Pack.” The new content will include 50 new styles and 68 voices including Super Articulation 2 voices. I’m not a big style hound, but new voices are always welcome! I’ve still got plenty of room in expansion memory and can’t wait for the new content. I’m looking forward to the Chord Looper, too.

[Update] The Yamaha Europe site has further details. The Genos Version 2.0 Superior Pack includes SArt2 Premium voices such as “Pan Flutes,” “Female Vocals,” and “Trombone.” The page shows thumbnails for the Yamaha Musicsoft Premium Expansion Packs of the same name. This might be a little disappointing to users who already own these packs. I have “Female Vocals” already. Of course, that’s just icing and we still need to taste the whole cake.

Improvements have been made to expansion pack installation (Yamaha Expansion Manager). Yamaha have also improved Genos Style Creator, which was looking rather long in the tooth. Other improvements include new portamento functionality, sorting playlists alphabetically, and an increase in the number of USER effects which can be stored.

Additional improvements flash by near the end of the video. (Look for the flying boxes!) Unfortunately, the English is a little rocky and its hard to tell what some of them actually mean! One useful improvement is the addition of USER voices to FAVORITES. (?) I hope they allow USER styles in chord step record because I didn’t see this mentioned.

Yamaha are listening. They cite user feedback as the source for many of these enhancements.

BTW, some folks have noted an increase in the USA Minimum Advertised Price (MAP). Please remember that all dealers cannot publicly advertise below MAP as part of their dealership agreement with Yamaha. That doesn’t mean selling at MAP because that would be illegal price fixing in the USA. If you want a good deal, be sure to call around, especially smaller focused dealerships like Audioworks CT. The large on-line retailers don’t have as much incentive to negotiate or to offer a better price below MAP. Smaller dealerships are often more flexible.

Yamaha MODX update V2.0 is here

Yay! The MODX V2.0 update has dropped! I’m downloading now and will be installing shortly.

Yamaha have posted a new MODX Supplementary Manual and a new MODX Data List PDF in the downloads section of the MODX Web pages. You’ve probably already seen the list of new features as implemented in the most recent Montage update:

  • New effect types have been added: VCM Midi Filter, VCM Mini Booster, Wave Folder.
  • 52 new Performances have been added.
  • The Pattern Sequencer function has been added.
  • You can now play songs, patterns and audio files from the Live Set display.
  • Super Knob Link has been added to the data that is recorded in the Scene function.
  • Keyboard Control has been added to the data that is recorded in the Scene function.
  • Increased the range of the LFO Speed parameter.
  • You can now connect MIDI equipment via the USB TO DEVICE terminal.
  • The Global Micro Tuning settings have been added.
  • The Audition Loop setting has been added.
  • Improvements have been made to the user interface.
  • The sequencer storage capacity (total User Memory) has been increased from about 130,000 to about 520,000 (for Songs) and about 520,000 (for Patterns).

The new Performances are listed on page 17 of the new Data List PDF (version c0). The new Performances are numbered from 2144 to 2195. Laser Trumpet?

Not going to the gym today… 🙂

Installing the MODX V2.0 update

The first thing to note: This is a major update.

I don’t just mean that as a compliment to Yamaha. The software engineers had to touch many, if not all, of the major internal data structures. You must perform a complete back-up before attempting installation as you will need to initialize all data and then reload your back-up file.

Please read the installation directions before starting. The directions clear state that all of User Memory (Library Data, User Data, etc.) will be initialized. Be sure to do a complete back-up following the directions on pages 60-61 of the Owner’s Manual and pages 201-202 of the Reference Manual. You want to write a back-up file, also known as an “ALL file” or “X8A” file by its extension. A back-up file saves the whole shee-bang including your libraries.

Follow the steps in the installation guide. The installation process takes about 4 to 5 minutes. If everything is successful, you will see messages like:

Searching for the updater ... OK

MODX updater 2.00.1

Preparing ... OK (current version 1.10.0)
Updating ... OK
Verifying ... OK
Finish.
Please turn off.

Turn MODX off, remove the USB drive with the updater, and turn MODX on again. Navigate to the System Settings by pressing [UTILITY] > [Settings] > [System]. I pressed the “Initialize All Settings” screen button first and then pressed the “Initialize All Data” button. (Deep breath.) Yamaha’s installation directions should be a little more specific here as to which buttons to press.

The initialization steps will, of course, wipe everything clean. Next, insert the USB drive with your back-up file. Navigate to the load contents page, i.e., [UTILITY] > [Contents] > [Load] and select the “Backup File” content type. Find your back-up file on the USB drive and re-load your content. If all goes well (modulo power failure, cosmic debris, pulsars, etc.), you should be good to go again.

Copyright © 2019 Paul J. Drongowski (excluding excerpts from Yamaha’s announcements)

Yamaha Montage: Internals revisited

I liked the Genos block diagrams which I posted the other day. The diagrams summarize the Genos main CPU and tone generation subsystems in a compact form.

So, let’s move on to Montage. The diagrams below are taken from the Yamaha Montage Service Manual. I scrubbed non-essential detail (e.g., power rails) in order to focus on the overall digital system organization.

The internal design of mid- and high-end synths and arrangers separates neatly into a main CPU subsystem (running Linux) and a tone generation/digital audio subsystem. Genos, Montage and MODX fit this design pattern.

[Click images to enlarge.]

The Montage main CPU is a Texas Instruments AM3352. Montage has a slightly lower clock rate: 800MHz vs. 1.0GHz (Genos). I don’t think the difference in clock speed is significant because the main CPU generally doesn’t perform compute intensive tasks. (The tone generator circuits and the audio DSP do the heavy lifting.) The main CPU handles sequencing, user interface, the file system, etc.

The AM3352 is an ARM Sitara Cortex-A8 32-bit “system on a chip.” The AM3352 is designed for embedded applications and as such, it has many integrated input/output (I/O) interfaces. The main interfaces are:

  • Primary working memory (EMIF)
  • Touch panel and display (LCD)
  • Bulk memory (MMC0)
  • USB to device interface (USB1)
  • MIDI I/O (UART1)
  • Serial digital audio bus (McASP0)
  • CPU-SWP70 bus (GPMC)
  • Power management (I2C0)
  • General purpose I/O (GPIO)

Having so many interfaces in one integrated circuit (IC) package lowers cost signficantly.

Memory resources are modest. Primary memory is only 256MBytes. Bulk storage is provided by a 4GByte eMMC embedded memory device. Linux and user data (performances, songs, arpeggios, etc.) reside in the eMMC device. Please note that the bulk memory bus (MMC0) has a relatively slow clock speed (52MHz) and width (4 bits). Simply put, this bus cannot support real-time sample streaming for synthesis. [Please stop ranting about this on the Web.] Instead, waveform samples are stored in NAND flash connected to the Master SWP70 tone generator.

Speaking of tone generation, the main CPU is connected to two SWP70 tone generation ICs by the CPU-SWP70 bus. The bus is mediated by a programmable logic device (CPLD). The bus clock is 100MHz. The bus has 19 address bits and the data path is 16 bits wide. The CPU sends control data to the SWP70s through this bus. Also, the main CPU loads samples into NAND flash using this bus. I doubt if this bus could sustain high volume sample streaming in real time.

The CPU-SWP70 bus is organized as an addressable memory bus. (The ARM acronym “GPMC” means “General Purpose Memory Controller.”) Instead of ordinary memory, I believe that the CPU-SWP70 bus provides direct access to thousands of synthesis control registers for AWM2 and FM-X. Check out the huge list of synthesis parameters in the MIDI section of the Montage/MODX Data List PDF. Each parameter controls some aspect of AWM2 or FM-X synthesis. These parameters need to be loaded quickly into the the SWP70 tone generation blocks. Addressable control registers provide the appropriate mechanism.

There are two other major busses in Montage: the EBUS and the serial digital audio bus. (More about the digital audio bus in a second.) The EBUS is driven by an ARM architecture microcontroller (MB9AF141NBPQC) which scans knobs, sliders and switches. The EBUS sends user input to other components, most notably the SWP70s. Thanks to the EBUS, user inputs are quickly acquired and sent to the tone generation process, thereby minimizing latency. This fast path is an important aspect of Yamaha’s design.

On to tone generation and digital audio!

High-end Yamaha synths and arrangers have two SWP70 (“Standard Wave Processor”) tone generation chips. One SWP70 is the Master and the other SWP70 is the Slave. “Master” and “Slave” refer to the communication relationship between the two components. The Master generates the reference clocks for both the Master and Slave, and it generates the clock for the serial audio bus.

In Montage, the Master SWP70 performs AWM2 synthesis and the Slave performs FM-X synthesis. The Master has waveform memory; the Slave does not. Waveform memory isn’t required for FM-X synthesis, apparently.

Both the Master and Slave SWP70s have 16MBytes of DSP RAM apiece. The DSP RAM provides big, fast random access storage for effects processing. Time-based effect algorithms like reverb and delay need a large amount of memory space. The DSP RAM does the job.

The Master SWP70 has two additional kinds of memory: Wave ROM (4GBytes physical capacity) and Wave RAM (32MBytes). [The Genos designers use slightly different terminology for these units, but the functionality is the same.)

Wave ROM is Open NAND Flash Interface (ONFI) compliant. This is the same commodity NAND flash built into PC solid state drives. Instead of using a solid state drive and a SATA bus, Yamaha have built the controller and data cache into the SWP70. This design eliminates the cost, power consumption and delay of a PC solid state drive controller. The Wave RAM is the data cache, holding the currently used samples needed for AWM2 synthesis.

Why a data cache? NAND flash has two major drawbacks. First, writing to NAND flash is slow. Second, random read access to NAND flash is much slower than sequential block access. In fact, random access is too slow for direct streaming into synthesis. The SWP70 pre-fetches blocks of samples into fast Wave RAM which, in turn, provides fast random access to samples. This two-level storage organization supports the high read bandwidth required for 128 lanes of stereo AWM2 synthesis.

The SWP70 has two independent Wave RAM channels. Only one of these channels is populated in Montage. The second Wave RAM unit is not installed and is reserved for a future model. We haven’t seen the full power of the SWP70 generation — yet.

Montage has a power digital audio subsystem which is interconnected by the serial digital audio bus. The CPU, SWP70s and SSP2 chips transfer digital audio on the serial audio bus. These units send audio to the digital-to-analog converters (DACs) and receive audio from the analog-to-digital converters over the bus. The main audio streams are:

  • The main CPU receives audio from the AD INPUT ADC and the Master SWP70.
  • The Master SWP70 receives audio from the main CPU and the AD INPUT ADC.
  • The Slave SWP70 receives audio from the SSP2.
  • The SSP2 receives audio from the Master SWP70 and the Slave SWP70.

The Master SWP70 sends digital audio to the two DACs (assignable output and main output, respectively). The DACs and the ADCs are on a separate circuit board away from the digital electronics (Pure Analog Circuit).

Montage has an SSP2 processor dedicated to USB2.0 audio I/O. It’s like having a mini Steinberg UR interface inside. The SSP2 is the source of Montage’s audio prowess. The SSP2 is a fairly beefy computational engine having an SH-2 CPU core (135.4752MHz internal clock). It is the computational engine in the high-end Steinberg UR series, the Reface DX and the Reface CS. Its role in Montage is like a UR — high speed, multi-channel USB audio. This is why the SSP2 supplies the Montage USB TO HOST interface. Digital USB audio has a direct path to the USB HOST.

The SSP2 gets commands and transfers data with the main CPU over the CPU-SWP70 bus.

I hope you have found this quick tour to be informative and helpful. Yamaha had a few other tricks up its sleeve as we shall see when I discuss MODX specifically. Take care and stay tuned for the MODX update which is about to drop.

Copyright © 2019 Paul J. Drongowski

Diagrams are Copyright Yamaha

Yamaha Genos, Montage, sample compression

Sample compression is a bit of a hot topic among tech heads on the PSR Tutorial Forum and the YamahaSynth.com Forum.

Yamaha recently pre-announced the Yamaha Genos V2.0 update. Features will include:

  • Increased expansion memory from 1.8GBytes to 3.0GBytes
  • Genos V2.0 Superior Pack (50 styles, more than 25 voices including SuperArticulation 2)
  • Chord Looper
  • Style Section Reset
  • Scale Tune Separation

The update will be available during Winter 2019. The scope of the update has caused much excitement as well as a lot of good feeling because Yamaha views Genos as an update-able platform, not a one off. I’m looking forward to the Genos update and the upcoming MODX update, too.

The Superior Pack likely will be an expansion pack containing new styles and voices. Putting the new content in an expansion pack is the easiest way to distribute the content. A user simply puts the expansion pack installation file on a USB drive, inserts the drive into Genos, and runs the on-board Genos installation procedure. The installation process is tried, true and mature.

Of course, this raises the question of expansion memory space and how to make best use of it. Would or should someone install the Superior Pack and always keep it around? Will there be enough space for other packs? Some people are pack rats (pun intended) and want to keep everything loaded. Increasing the expansion memory from 1.8GBytes to 3.0GBytes takes a little pressure off the pack rats.

Naturally, the increase in expansion memory piques the tech heads. How did Yamaha increase the expansion memory space? One cannot snap fingers and add physical memory to Genos. This is a software update, after all.

One theory has to do with sample compression. Yamaha’s expansion packs typically use two sample formats: LINEAR16_FRAME and WXC. WXC is Yamaha’s proprietary sample compression format. WXC is treated like a closely guarded secret. WXC is the way to pack voice waveforms as tightly as possible within the limited physical capacity of wave memory. It’s part of Yamaha’s secret AWM2 sauce.

User samples, on the other hand, are not compressed and are stored in LINEAR16 format. Currently, when Yamaha specifies the size of Genos expansion memory, they mean the ability to store approximately 1.8GBytes of uncompressed user samples in expansion memory. Since users can’t compress their samples via YEM (or whatever), Yamaha doesn’t want to disappoint them by overstating expansion memory capacity and then underdeliver on their spec.

So, is the increase achieved through sample compression, i.e., restating the capacity as 3.0GBytes using the well-known qualifier “when converted to 16 bit linear format?” WXC compression can easily squish 3.0GBytes of samples into 1.8GBytes. Or, have Yamaha found and allocated extra space to user samples? In the latter case, the extra space must be in the NAND flash memory which holds the factory waveforms. This is left-over space and assumes that Yamaha left quite a bit of slack in the 4GBytes holding the factory waveforms.

Now we get to the point of contention among Montage/MODX tech heads. If Yamaha have found a way to support compressed user samples on Genos, can the same technology be ported to Montage and MODX?

The answer partly depends upon the means by which Yamaha provide sample compression itself. (Remember, sample decompression is built into the SWP70 AWM2 hardware.) YEM is an established application in the Genos software eco-system. Yamaha could add the compression algorithm to YEM. In the case of Genos, a user would compress user samples into WXC format when creating a new voice in YEM. The WXC format samples within Yamaha expansion packs would remain untouched by YEM in WXC format and users wouldn’t see any benefits there.

The closest thing to YEM in the Montage (MODX) eco-system is the John Melas tool suite. Perhaps Yamaha will partner with John Melas, who will add sample compression to the tool suite. That’s one possibility. Another possibility is to add WXC compression to SKYLIFE SampleRobot.

If Yamaha wants to protect its secret sauce, they could provide a Web-based service to compress user samples into WXC format. In that case, Yamaha could keep the WXC algorithm hidden from prying eyes (i.e., reverse engineering). The compression service could compress samples for both Genos and Montage voice developers.

A third alternative approach adds the compression capability into the Montage/MODX keyboard firmware. Embedding the algorithm would provide the best security although Linux experts have already plumbed the depths of Montage/MODX update files. Further, Yamaha has shown a reluctance to add low-want or esoteric features to firmware.

Well, this is all quite interesting and highly speculative. We’ll know more when the Genos 2.0 update is released. In the meantime, wadda think?

Copyright © 2019 Paul J. Drongowski

Yamaha Genos: Tone generation

After visiting the Genos CPU complex yesterday, let’s take a look at the two Yamaha SWP70 tone generators in Genos.

The SWP70 is the latest generation, top-of-the-line Yamaha tone generator. We know that the SWP70 is capable of both sample-playback AWM2 synthesis and FM-X synthesis as demonstrated by the Yamaha Montage and MODX.

[Click image to enlarge.]

The two SWP70s are organized as a master and slave pair, each with different connections and dedicated memory units. The SWP70s communicate with the TI AM4376 processor over the CPU-SWP70 bus. The bus is arbitrated by a programmable logic device (CPLD). The data path is 16 bits and there are 19 address bits. Bus clock speed is 100MHz.

The main CPU sends control messages, etc. to the SWP70s through this bus. The main CPU also uses this bus to write waveforms (“samples”) in the SWP70 wave memory. Please note that the 100MHz bus isn’t fast enough to sustain so-called sample streaming from bulk storage. As mentioned in my previous article about the main CPU, the embedded bulk memory devices (eMMC) would not be able to supply samples fast enough for streaming either. Plus, write time to NAND flash is quite slow — another strike against streaming.

The Master SWP70 has extensive connections to the serial digital audio bus that interconnects the main CPU, tone generation, analog to digital converstion (ADC) and digital to analog conversion (DAC). Here’s a few notable connections:

  • The main CPU sends five digital audio streams to the Master SWP70.
  • The Master SWP70 sends one digital audio stream to the main CPU.
  • The Master SWP70 sends the MAIN OUT, SUB 12 and SUB34 streams to their respective DACs.
  • The Master SWP70 receives the AUX IN and MIC IN streams from their respective ADCs.
  • The AUDIO-LOOP stream is a loop-back from the Master SWP70 to the Master SWP70.

Genos serial digital audio resources and capabilities are substantially less than Montage. In short, Montage has a Yamaha SSP2 processor dedicated to digital audio much like a Steinberg UR interface. This version of the Genos hardware will never have the extensive digital audio capabilities of Montage.

Another important interface is the Yamaha EBUS. Genos has an ARM M3 microcontrollers that scan the knobs, sliders, buttons and keys. The microcontroller sends these inputs on the EBUS. The EBUS is a slow-speed, serial I2C bus. User inputs are quickly encoded and are sent directly to tone generation. Nifty. The direct connection decreases latency by keeping the main CPU out of the message path. Montage and MODX have an EBUS, too. It’s an essential feature of Yamaha high-end design.

As Gandolf would say, “On to the Forest of Memories!”

Each SWP70 has two working memories:

  • WAVE SDRAM (light blue)
  • DSP SDRAM (orange)

Both working memories have dedicated address and data paths. The data paths are sixteen bits wide. The required memory capacity is too large to integrate on the SWP70 integrated circuit (IC), so separate commodity memory devices are used instead.

The DSP SDRAM is working memory for DSP computations. Certain kinds of effects are memory intensive — reverb and delay effects, in particular. The DSP SDRAM is a fast read/write working memory for effects processing.

The WAVE SDRAM is the working memory which holds the most recently streamed and used waveform samples. Random access to data in NAND flash is relatively slow. The WAVE SDRAM is a fast random access cache for samples in current use. The SWP70 behaves like the controller and cache within a commodity solid state drive. It streams waveform samples into cache as fast as possible via sequential reads to the WAVE NAND. The incoming samples are stored in the WAVE SDRAM and are played back from WAVE SDRAM.

Yamaha’s architecture is often (unfairly) slagged on two points:

  • Why doesn’t Yamaha stream from a commodity SSD?
  • Why doesn’t Yamaha use a commodity x86 motherboard for tone generation?

Yamaha combined the best parts of a commodity SSD and hardware tone generation in one component (the SWP70). This is a strategic low-latency advantage. The SSD SATA bus is quite unnecessary. The Yamaha architecture lowers power consumption, component count and most importantly, latency.

As to commodity motherboard, see Korg Kronos (big, heavy and hot).

WAVE NAND memory (light green) is implemented using commodity Open NAND Flash Interface (ONFI) devices. This is the same NAND flash employed in commodity, SATA-based SSDs. The Slave SWP70 has four gigabytes (4GBytes) of waveform memory while the Master SWP70 has two gigabytes (2GBytes). Storage is split into upper and lower bytes for a total data path width of 16 bits. The SWP70 accesses the upper and lower bytes in parallel. (Each ONFI channel is 8 bits wide.) Thus, Yamaha double the transfer bandwidth from NAND flash.

Presumably, the Slave WAVE NAND contains the Genos factory preset waveforms and the Master WAVE NAND contains user expansion waveforms. The Genos specifications split polyphony between preset and user voices. Expansion memory is limited to something just shy of 2GBytes. So, this inference is reasonable.

Now that you’ve read this far, you should have solid footing in Yamaha synth and arranger hardware architecture. Of course, there are many additional details about clock speeds, displays, touch panel, etc. However, you should have a better appreciation for and understanding of the basic data flows and storage units.

Copyright © 2019 Paul J. Drongowski

Source: Yamaha Genos Service Manual (Copyright Yamaha)

[Update: 18 October 2019]

Just a quick addendum about the SSP2 chip and the Steinberg URs. The SSP2 is built into the UR242, UR44, UR28M and UR824. Steinberg have a spiffy iOS app, dspMixFx, which exposes the SSP2’s functionality. Quoting Steinberg:

dspMixFx brings the flexibility and sound of Yamaha’s SSP2 DSP chip to your iOS device. Built in Steinberg’s UR824, UR28M, UR44 and UR242 interfaces, this custom-designed DSP chip runs the acclaimed REV-X reverb, Sweet Spot Morphing Channel Strip and Guitar Amp Classics effects. The free dspMixFx app allows you to control all DSP features and create your own latency-free mixes on your iPad and iPhone with effects, ideal for live recording sessions where getting exactly the right sound for performers is paramount. dspMixFx is also compatible with other iOS audio apps, offering full operation when using third-party apps with the DSP-powered interfaces in Steinberg’s UR range.

The REV-X reverb built into the UR824, UR28M, UR44 and UR242 is a complex reverb algorithm developed by Yamaha. Renowned for its high density, richly reverberant sound quality, with smooth attenuation, spread and depth that work together to enhance the original sound, the REV-X features three types of reverb effects: Hall, Room and Plate simulations with reverb time and level control.

Thanks to its SSP2 chip, the Montage provides conversion to and from a DAW roughly on par with a Steinberg UR interface.