FreePlay style deconstructed

Yamaha FreePlay styles for PSR and Tyros are terrific for music without rhythm instruments and strong rubato (variation in tempo to achieve a musical or emotional effect).

I’m customizing a few FreePlay styles with the intention of using them for liturgical music. In the first pass, I’m changing the OTS voice settings and I’m making a registration that calls up my go-to voices for traditional and contemporary church music.

Of course, my curiosity took over and I had to take a look inside of a FreePlay style or two using a DAW and Michael B’s StyleDump program. I have attached a text file with my working notes. The notes may be too much detail for most readers, so here is a quick summary of what I found. I’ve looked at only two styles so far: EtherealHymn (taken from the CVP-609) and OrganPlay1 (taken from the Church Organ expansion pack).

First off, how does it sound and feel to play a FreePlay style? The accompaniment is triggered and guided by the left hand as usual. (I haven’t tried FreePlay with AI fingering, etc. yet.) The accompaniment plays a gentle pad-like chord and a simple bass. The simplicity provides a blank canvas on which you can embellish to your heart’s content.

You might guess that the MAIN and FILL IN sections are quite simple and you would be right. The MAIN sections in the OrganPlay1 and EtherealHymn styles hold notes for 8 and 32 measures, respectively. The chord source in each case is CMaj7. The BASS track holds a single note (e.g., C2) through the entire section. The chord or pad tracks hold the rest of the notes that make up the CMaj7 chord: E, G and B. Harmony-wise, that’s it!

The FILL IN sections are similar and hold notes for just one measure because FILL IN sections are only one MIDI bar long.

Without a rhythm track, those looooooooong notes have a timeless quality. A musician would rarily — if ever — hold a chord that long. Thus, MAIN sections typically do not re-trigger.

Yamaha’s genuine contribution lies in the INTRO/ENDING sections and the fun MIDI stuff that happens during the MAIN sections. The INTRO and ENDING sections have more “orchestration” and consist of style appropriate introductory and ending phrases. For my own purposes, I will probably stick to the simple INTRO A and ENDING A sections as it’s generally hard to match up more complicated musical phrases with the main theme itself.

The “MIDI stuff” must have been fun to program. The EtherealHymn style has string and choir tracks. The string track has MIDI expression data (Control Change 11 or “CC11″) that repeatedly ramps up for two measures and down for two measures. The ramp pattern creates alternating string swells up and swells down. Other control change patterns are rather unusual and I’ll leave that for you to explore with a DAW! (All you need to do is to change the “.STY” or “.FPS” extension to “.MID” and import the renamed file into a DAW.)

One could create a basic FreePlay style from scratch. The MIDI notes in the MAIN and FILL IN sections are dirt simple. The fun part would be selecting instrument voices and effects with dynamic elements that give life to the accompaniment. Then there is the creative aspect of driving the voices and effects with MIDI controller data. For INTRO and ENDING sections, a little Bach or Mozart would do.

Hmmm, sounds like a fun wintertime project!

Review: MIDIPLUS miniEngine USB

First, I must apologize to the folks who drop in regularly to see what’s up. Between the holidays, new music, and final preparations for winter, there hasn’t been a a heck of a lot of time to blog.

That doesn’t mean that there aren’t new toys around the house!

One of these little gems is the MIDIPLUS miniEngine USB. The miniEngine is a General MIDI engine in a small blue box (approximately 3″ by 4″ by 1″). It has a bright blue three digit LED display, three buttons and a data wheel. Connectivity includes:

  • 3.5mm headphone jack
  • 3.5mm MIDI IN
  • USB Host (type A) port for MIDI-over-USB communications
  • USB mini-B connector for charging and power

The miniEngine comes with a short 5-pin DIN to 3.5mm adapter, allowing you to connect the miniEngine to a standard 5-pin MIDI OUT jack. The miniEngine has a built-in rechargeable battery (2500 mAh capacity).

miniengine

The USB Host jack should have raised your eyebrows. Most MIDI modules are USB “devices” with a type-B jack, which is intended to facilitate communication with a USB host computer.

The midiEngine is a USB HOST. That means you can connect a typical MIDI controller (with a USB type-B port) to the miniEngine and jam away. The midiEngine provides power to the MIDI controller, too! For testing, I tried the miniEngine with an M-Audio Keystation mini 32 and everything worked like a charm. I also drove the miniEngine using a Nord Electro 2 with success.

I didn’t have much success driving the miniEngine from a personal computer running Sonar. In this case, I connected the miniEngine to the PC over 5-pin MIDI. The miniEngine received MIDI data (i.e., its MIDI indicator flashes), but I wasn’t able to play back a standard MIDI file (SMF). Somewhere down the line — during the doldrums of February — I’ll try again.

So, how does it sound? Not bad! The audio output is relatively clean (no hums, pops or crackles). Some of the sounds like electric pianos, strings, and horns are quite usable. Don’t throw away your copy of Hans Zimmer Piano (211GBytes), however. As usual, a few of the voices are naff.

The three buttons choose the kind of data to be set by the wheel: VOLUME level, PROGRAM change, REVERB level. The miniEngine responds to the cooresponding MIDI messages when sent by the controller. Thus,

    miniEngine + controller = General MIDI synthesizer

The data wheel is the only downer; it feels and is pretty cheap. Otherwise, everything works as advertised.

But, wait! There’s more. While researching the miniEngine, I came across a customer comment stating that the miniEngine is based on the DREAM 2553. I pulled out a screwdriver and opened the case. Unfortunately, I’m not able to confirm that claim as I chickened out and didn’t remove the circuit board within. The data wheel is just so cheap that I didn’t want to screw up the miniEngine. (At least not yet.)

I did download the data sheet for the DREAM SAM2695 chip and tried many of the MIDI messages supported by the SAM2695. The miniEngine responded to the DREAM-specific CC80 and CC81 messages that change the REVERB and CHORUS type. So, the miniEngine is almost certainly DREAM-based. I verfied the following MIDI continuous controller (CC) messages:

    CC01 Modulation wheel
    CC07 Volume
    CC10 Pan
    CC11 Expression
    CC80 REVERB program (DREAM)
    CC81 CHORUS program (DREAM)
    CC91 Reverb send level
    CC93 Chorus send level

There are also a bunch of DREAM SysEx and NRPN messages. The NRPNs can control synthy parameters like vibrato, filter cutoff/resonance and envelope times. If you get a miniEngine, be sure to download the data sheet and try these messages!

So, hey, who are these DREAM guys? Check out the DREAM web site. DREAM design and sell DSP chips for synthesis and audio processing. They’ve been doing that since 1987. If you’re not a big hitter like Yamaha or Roland, you might turn to DREAM for a synth engine.

I got my miniEngine on an ebay close-out for $40. Prices seem to have risen to about $80 or $90. For a stand-alone MIDI expander, it’s still worth the money.

The long view

Here’s some information attributed to Martin Harris from Yamaha. Martin is one of the key sound developers at Yamaha:

  • Better Pianos
  • New Strings – 70 piece Seattle Symphony Orchestra Mega
  • New Orchestral Brass – highly dynamic
  • New Tuned Percussion – Glock, Xylo, Marimba and Vibes (with motor on)
  • New Mega guitars – Telecaster with Finger and Plectrum
  • SA2 Celtic Violin
  • New Synth Voices
  • New Classical Choir – Cathedral ambience
  • New Gospel Choir – Various articulations and Ad libs
  • New Pop Vocals – 4 session singers, 2 male and 2 female
  • Singing many dynamics and many articulations (wave cycling)

Montage? No, Tyros 4. The “SA2″ should be a clue as the Montage does not provide Super Articulation 2 (SA2) voices.

My purpose here is not to be tricky, but to make the case that sample-based workstations or synthesizers draw from the sound pool that is available at development time, much the same way that hardware designers draw on the pool of available components. Products cannot be composed of imaginary circuits (“sand”), software, and sounds, after all.

To better illustrate this point, here is a rough timeline for the Tyros and Motif product lines with a few mid-range products (S9xx and MOX) thrown in:

             Tyros                        Motif/Montage
----   ------------------  ------------------------------------------
Year   Model     Physical  Model     Physical  Uncompressed waveforms
----   ------------------  ------------------------------------------
2001                       Motif      48MB     84MB 1,309 waveforms
2002   Tyros      96MB
2003                       Motif ES   96MB     175MB 1,859 waveforms
2004
2005   Tyros 2   192MB
2006
2007                       Motif XS  128MB     355MB 2,670 waveforms
2008   Tyros 3   256MB
2009
2010   Tyros 4   512MB     Motif XF  256MB     741MB 3,977 waveforms
2011                       MOX       128MB     355MB 2,670 waveforms
2012   PSR-S950  256MB
2013   Tyros 5   768MB     MOXF      256MB     741MB 3,977 waveforms
2014
2015   PSR-S970    2GB
2016                       Montage     4GB     5.67GB 6,347 waveforms

I included physical wave memory size for each product. I also included the uncompressed total sample size and number of waveforms for each member of the Motif/Montage line.

Clearly, Yamaha know how to ride the memory technology curve. Memory technology has progressed to the point where it is no longer a significant hardware design factor. Rather, the amount of wave memory in a product depends more upon the ability of the sound designers to fill it with quality content and mid- versus premium-product grading (i.e., the target market segment and price point for the model). For example, note that the mid-range S970 has more than twice the physical wave memory than the Tyros 5. Although the “expansion memory” is reserved in the S970’s physical wave memory, the S970 waveform content is substantially smaller than the Tyros 5.

The other characteristic to note is how the Tyros and Motif lines tend to leapfrog each other. Generally, the Tyros line leads the Motif line in physical wave memory and content. This is partly due to the higher memory requirements of SA2 voices, which require many additional articulation samples.

Both the Tyros 4 and Motif XF were released in 2010. Both machines use two SWP51L tone generators. (Newer products like the Montage use the SWP70 tone generator.) The Tyros 4 has twice the physical wave memory capacity with respect to the Motif XF. Yet, the Tyros 4 has sample content which did not make it to a deliverable product in the Motif line until the Montage in 2016: Seattle strings, orchestral brass, Celtic violin, vocals (choir and scat), Telecaster guitar and suitcase electric piano.

Tyros 5 expanded this content in 2013. The Motif XF, on the other hand, received a significant update in January 2014. The V.150 update added the “Real Distortion” effects implemented by the Tyros 5. (A few Real Distortion effects actually premiered in the mid-range S950.) The V1.50 update and the “White Motif” color job were life-extenders for the Motif line. I’ve conjectured before that Montage development was late and this is further evidence.

So, what can we expect in the Tyros successor which I’m calling the “Tyros++”. (Yamaha have trademarked the name “GENOS” which may be the name of the follow-on. Only Yamaha really knows.) Personally, I’m hoping for the new orchestral woodwinds from Montage. These are superbly expressive voices. I’m also expecting improved electric pianos, again, of comparable quality to the Montage.

SA2 voices will probably remain exclusive to the Tyros line. Many folks hoped that Montage would have SA2 and it didn’t. SA2 is an important product differentiator — kind of like the premium “Natural” piano voices are to the Clavinova line. I suspect that FM voices will be a differentiator for the premium Montage line in years to come as well. Yamaha tends to think of these three product lines as distinct, so cross-over is carefully controlled and limited.

All of this talk about samples and wave memory size is overly reductionist. The three main (DMI) product lines — Tyros, Motif/Montage, Clavinova — have distinct personalities and features. Motif/Montage is a synthesizer for stage and production studio. Clavinova is primarily a home or church piano. Tyros serves double duty as a home keyboard and as a workstation for performing professionals. (Oddly, many USA customers scoff at this latter role.)

Although these are all fine instruments, the personalities have quirks. Upper-range Clavinovas are Tyros-in-disguise except for multi-pads, third RIGHT voice (i.e., only two voice layers in the right hand), and no expansion memory. Tyros does not have the deep editing or modulation features of the Motif/Montage. The Motif and Montage — strangely! — do not have a tonewheeel organ mode. This latter omission is hard to understand since the Montage competes against other “stage” products like the Korg Kronos and Nord Stage.

Having compared voice programming between PSR-S950 (Tyros 3 without SA2 voices) and MOX (Motif XS sound set), the product lines are voiced (programmed) differently. Motif/Montage effect programming has a harder edge than the Tyros, which is oriented toward oldies, pop and jazz standards. (Yes, Virginia, the Tyros does have latent EDM potential to be tapped.) If the Tyros++ includes the orchestral woodwinds, for example, they will probably be programmed rather differently than Montage. Tyros++ four-part divisi ensembles with the new orchestral woodwinds would be simply brilliant. Can’t wait to see and hear what happens!

One finally editorial comment. The world is filled with product reviews. Publications like Keyboard magazine, Electronic Musician, etc. focus on individual products and rarely present a deep, long-term perspective on products. Sound On Sound reviews occasionally give historical background — usually for esoteric, retro studio pieces. As consumers, we need the long view in order to make the most informed choice.

Rainy day ramblings

A rainy New England day and the leaves and pine needles are piling up. Can’t do much of anything outdoors today, so off to GC. (Not that I really want to do yard work.)

No real agenda. I’ve been thinking about Yamaha Montage vs. Tyros 5++ vs. Nord Stage 2 ex vs. Electro 5d. That’s all “long term” as I’m having a lot of fun and staying busy with the S950 and MOX.

I really could use a “lap piano” for rehearsals. (A distant relative of “floor melodica?”) My body ached so much last Wednesday before rehearsal that even an eight pound Korg Triton Taktile was too much to schlep. So, I sang with the group, hoping to internalize the melodies of the new music for the week. This isn’t such a bad idea in any case, since it’s good form to sing along in one’s head while playing — improvisationally or not. A good reminder that, yes, hymns actually have words.

So, the issue of mini-keys rises from the grave like Joan Crawford. About one month ago, I sought and found a Yamaha Reface to try again. As it seems for most interesting music tech, one needs to drive a zillion miles or take two or more trains to find and play Reface, Montage, Korg Arp Odyssey and so forth. And thus it was to play a Reface DX. I had a fair chance to plink away and the DX provided a wide range of solid sounds. But, still, no love for the Reface mini-keys. I simply cannot imagine playing a Reface at rehearsals and even remotely enjoying the experience.

Today’s journey was inspired by a favorable review of the new Korg MicroKorg S in Sound On Sound magazine. What a pretty picture it is; Korg’s industrial design may ape Arturia, but they took the best! The review mentioned the larger mini-keys (what an oxymoron!) of the Microkorg XL+ and I decided to find a comparably equipped Korg.

Happily, today’s trial was the Minilogue, which proved to be a fun time indeed. It’s got a pretty sweet sound for an inexpensive polyphonic analog synth. With the right programming, I could even warp the Minilogue into a “lap piano” good enough for rehearsals. A built-in speaker a la the new Microkorg S would be nice. However, I could easily run it into the JBL Charge 2 that serves as the battery-powered amplifier for the Triton Taktile 49 (my usual rehearsal ax). It’s a shame that the Minilogue isn’t battery powered, too, as it would make a terrific portable instrument.

The Minilogue’s oscilloscope is a real treat and is totally entertaining. It’s also a reminder that I need to add a mini-/micro-oscilloscope to the dining room lab one of these days. The oscilloscope display is a small OLED screen much like the screen in the Triton Taktile.

The Minilogue’s keys are far more playable than the Reface. The keys are longer than typical mini-keys and the black keys (sharps and flats) are narrow. This combination makes for a surprisingly effective keyboard design. I wouldn’t want to play a gig with these, but they are suitable for plinking out melodies and such at rehearsal. (See this article at Synthtopia for a good analysis of the Minilogue’s key size.) Several other Korgs have the same key design: the Korg Arp Odyssey and the “Natural Touch” microKEY, to name two.

I’ll say this for Korg. They may miss the mark sometimes, but these folks are actively innovating at a fast pace!

After messing with the Minilogue, I revisited the Nord Stage 2 ex. This is a fine instrument and is in the same premium range as the Yamaha Montage. Having also revisited the Montage in recent weeks, the Nord’s string and woodwind voices just don’t come up to the same level as Montage. The Montage voices live and breath. Although the Nord is quite good, these voices sound like “sample playback.” Kudos to Yamaha.

I will have more to say about Montage in a forthcoming post. In short, is it time to spring for Montage or wait for the successor to the Tyros 5 (“Tyros++”)?

Time for a cuppa…

Dr. Synth and the SC-33: An appreciation

Every now and again, we poke around in the closet and rediscover a lost gem.

So it is with the Boss DS-330 Dr. Synth. The DS-330 dates back to 1994 (!) and is an almost (maybe) GS-compatible Sound Canvas. It is the smaller brother to the Roland SC-33 Sound Canvas which is GS-compatible. The SC-33 has the same sound set as the SC-55mkII (226 tones) while the DS-330 has a subset (156 tones depending on who is counting.)

I fell so hard for the DS-330, again, that I bought a second hand SC-33. The SC-33 is little bit beat, but I intend to use it with my Nord Electro 2. I won’t have any qualms about dropping it into my gig bag.

roland_sc33_e2

Neither the DS-330 or SC-33 will win any awards for sound quality based on modern standards. The sample format is 16-bit 32KHz and the wave ROM size is 2MBytes. That’s right, 2MBytes. However, both machines are good General MIDI playback devices and quite a few of the preset voices are decent enough to play live, especially when they are layered and tweaked.

With old gear, there are always a few compatibility issues. When I drive the modules from a Triton Taktile 49, I get the occasional “MIDI Off Line” error. From the circumstances, I think this is due to incorrect handling of MIDI running status. No problems with Cubase, a Roland SK88Pro or the Nord, however.

The DS-330 and SC-33 share a common physical package and user interface design. And therein are the jewels.

Both units are about 8.5 inches wide and 6.5 inches deep. They sit flat with the display, buttons and volume control on the top, unlike the half-rack form factor and mounting style of virtually all other tone modules. This means that you can set the DS-330 or SC-33 on an open spot on a keyboard (controller) and easily hit the buttons while performing. (Please click on images to get higher resolution.)

roland_ds330

Good Golly, how I wish that manufacturers would adopt this form factor again! I’d love to see a Reface in this physical package. I would also love to see a decent ROMpler in this format, too, as an expansion module for digital pianos and B-3 clones.

Software-wise, the user interface has two major modes: single play mode and multi mode. Multi mode is for sequencing and since I’m pitching the module for live performance, I’ll concentrate on single play mode.

Once you’re in single play mode, navigation is a breeze. Menus are triggered by dedicated buttons and the menus are not super deep or long. Roland also thoughtfully provided a BWD button to move backwards within a menu. Ever skip over the menu item you wanted and had to do a “go round?”

The best part of the overall UI design is the sixteen buttons/pads that select tones. A button selects a tone category and a favorite tone within the category which the user has “registered.” That may sound complicated, but it is very natural. All you need to do to register a tone is to hit the catgeory button after selecting the tone. There isn’t any explicit WRITE or STORE operation; the software automatically captures any changes and updates the internal parameter memory. (Like many devices from that era, parameter memory is battery powered, not flash.) The closest thing to WRITE or STORE is the simple act of leaving a menu by way of the EXIT button. That’s it.

Tones can be layered (DUAL) or split (SPLIT). Splits and layers are insanely easy to create and edit. All editable parameters, split status/level, dual status/level and more are saved with each of the tones. You never have to think about the separate concept of a user performance memory or whatever. The parameters are just part of the tone and selecting a tone recalls the last saved edit.

Single play mode has a DRUM submode. When in this mode, the 16 buttons are now pads that play drum sounds from the selected kit. Sorry, no velocity sensitivity since this is 1994!

These little boxes were thought out very well. If you’re a manufacturer and looking to build and sell a piano-top (clone-top, whatever) module, here’s your exemplar!

Motif styles for your arranger!

I’m pleased to announce my collection of Motif performance styles for the Yamaha PSR-S950 arranger and its close cousins: Tyros 5, PSR-S770 and PSR-S970.

Motif and MOX are great song-writing machines with thousands of built-in musical phrases. In Motif-speak, these phrases are called “arpeggios.” Motif/MOX also have built-in “Performances” which combine these musical phrases into jam-along song starters. Although Motif-series workstations are not arranger keyboards, the Performances are fun for live jams, covering many modern genres (contemporary jazz, funk and R&B) which are underserved by arranger workstations.

To fill this gap, I translated 23 Motif performances to PSR/Tyros styles. In keeping with the original source material, these styles are stripped down and lean. No orchestration to get in the way! Some styles use only bass and drum. INTROs and ENDINGs are short and basic. Depending upon the source performance, a translated style may have only three MAIN sections. However, all styles bring the groove.

Many of the styles use Megavoice bass and guitar. Plus, I’ve added appropriate OTS voices. Of course, you’re welcome to ditch the OTS voices and replace them with your own.

Here is the link to the ZIP file: perf_for_s950.zip. The file unzips into a directory named “PERF_for_S950″. The ZIP file includes a short READ ME file with more information.

If you would like to know how I translate a Motif/MOX performance to a PSR/Tyros style, please read the following articles:

Montage: The hardware platform

The Yamaha Montage is one heck of a fine keyboard! Let’s take a quick look inside.

The Montage hardware is a new platform. Sure, there are a few things borrowed from older products, but that’s like blaming Apple for reusing a USB controller. The digital and analog electronics are all new.

There are several printed circuit boards and I will only cover the main PCBs.

  • PNL/PNR: Handles the front panel buttons, knobs, sliders, master volume and gain.
  • LCD: Bridge between the LCD controller in the main CPU and the 7inch TFT WVGA LCD touch panel.
  • DJK: Digital jacks (foot controllers, foot switch, sustain, MIDI)
  • AJK: Analog electronics and jacks (DACs, ADC, balanced/unbalanced outputs, analog input, phones).
  • DM: Digital electronics (main CPU, tone generators, external USB and Ethernet interfaces).

A few ports and connections are “Debug only” and are not populated or used in normal operation. The Ethernet port to the main CPU is debug only, for example.

The separation of the digital and analog electronics and jacks is significant. When the Montage was first introduced, I mentioned that “Pure Analog Circuit (PAC)” appeared to be an exercise in old school engineering that pays careful attention to board layout, component selection and clean power. The AJK board bears this out. The AJK board contains the stereo DAC and ADC components:

  • Audio ADC: Asahi Kasei AK5381VT-E2 24-bit ADC (96KHz max)
  • Audio DAC assignable output: Asahi Kasei AK4393VM-E2 24-bit DAC (96KHz max)
  • Audio DAC main output and phones: Asahi Kasei AK4393VM-E2 24-bit DAC

The ADC and DACs communicate with the DM board over an audio backbone. Physical separation keeps digital circuits (with fast rise/fall times) away from analog signal paths. The AJK board also has its own voltage regulators. They ain’t kiddin’ about PAC!

Yamaha adopted ARM architecture processors for the first time in the Reface series. (See my article about the Reface CS and Reface DX internals). Montage continues this trend.

  • The PNL board contains an MB9AF141NA ARM microcontroller with a 40MHz internal clock. The ARM microcontroller is assisted by a Toshiba TMP89FW24AFG microcontroller (SOC) operating at 10MHz. In Yamaha’s terminology, this ARM is a “sub CPU.”
  • The main CPU is an AM3352BZCZ80 ARM microprocessor with an 800MHz CPU clock. It is a Texas Instruments Sitara ARM Cortex-A8 single core MPU.

The ARM Cortex-A8 is a major departure from the Motif line which employed MIPS architecture microprocessors (such as the Toshiba TX4939C) as the main CPU.

We first saw the new SWP70 tone generator in the Yamaha PSR-S970 arranger workstation. The SWP70 replaces the SWP51L which has been the mainstay in mid- to upper-tier Yamaha products for several years. Top-tier products (e.g., Motif XF and Tyros 5) have two SWP51L tone generator chips which together share a common wave memory. The two SWP51Ls split AWM2 voice and DSP duties.

So, it isn’t any surprise to see two SWP70s in the Montage. What is suprising, however, is how the Montage’s two SWP70s are deployed. The two SWP70s are not connected in the “classic” structure. Instead, the microarchitecture is assymetric.

  • TG Master: The TG Master is connected to wave ROM (flash), wave RAM (SDRAM), and DSP RAM (SDRAM).
  • TG Slave: The TG Slave is connected to DSP RAM (SDRAM) and an SSP2 processor (through an ASIC gate array bridge).

I’ll have more to say about the SSP2 in a moment. The bridge connects the TG Slave’s serial audio interface to the SSP2 and the bridge carries several channels of digital audio (I2S format) to/from the TG Slave and the SSP2.

Of course, one’s first thought is to presume that the TG Master handles AWM2 voices and the TG Slave handles FM-X voices. There’s a lot of generation and DSP resources within an SWP70, so I doubt if they are left idle in the TG Slave even though the TG Slave does not have memory memory! There is a sixteen bit wide bus between the TG Master and Slave — not really sufficient to carry the sample bandwidth needed for AWM2 tone generation, however.

Each SWP70 has 16MBytes of SDRAM for DSP working memory. The TG Master has 32MB of Wave RAM. The Wave RAM is a cache for samples that are read from wave flash. (See my earlier article about the SWP70 and U.S. Patent 9,040,800.) Commodity NAND flash (as one would find in an SSD) favors sequential access; random access is horribly slow. The Wave RAM caches samples that are read from NAND flash.

Now, the big question: How much wave memory? The Montage wave memory consists of four Spansion (Cypress) S34ML08G101TFI000 8Gbit, ONFI-compliant devices with a total physical capacity of 4GBytes. In classic fashion, the memory is separated into upper and lower bytes. The Yamaha specifications state wave size as, “Preset: 5.67 GB (when converted to 16 bit linear format), User: 1.75 GB.” Assuming a 2.52 aggregate compression factor, the arithmetic works out in the following way:

    4GB physical = (5.67GB / 2.52) preset + 1.75GB user

The Motif series has an aggregate compression factor in this ballpark.

The Montage has a common multi-channel serial audio bus (I2S format) that interconnects the main CPU, TG Master, TG Slave, SSP2, ADC and audio DACs. This is the digital audio backbone. The bus conveys digital audio from the generators and effects on the DM board to (from) the converters on the AJK board.

The SSP2 is a Yamaha proprietary processor which is used in many products: Reface CS, Reface DX, PSR-S950 workstation, etc. The SSP2 integrates signal processing, USB, serial audio, and more. It is the “designated hitter” for Yamaha designs. When Yamaha needs a flexible chip with DSP and interfacing skills, it calls on the SSP2. (Roland have a similar jack of all trades called the “ESC2.”)

The Montage’s SSP2 has only 2MBytes of NOR flash memory on its CPU bus. That’s not a lot of program space! The SSP2’s USB port is connected to the external “USB TO HOST” interface. The SSP’s other interfaces convey digital audio to/from the digital audio backbone and the TG Slave. Thus, the SSP2’s main role is to route digital audio. The Montage can send 16 channels and receive 3 channels of stereo 24 bit/44.1 kHz digital audio to/from an external computer or iOS device

Commentary and opinion

I hope you find this quick overview to be informative and helpful. I try to present the system structure objectively without too much speculation.

Please discuss the Montage responsibly! Yamaha have a definite design style which exploits their expertise in very large scale integration (VLSI) as a strategic advantage. When Yamaha specify maximum polyphony as “128 AWM2 and 128 FM-X”, that’s 128 each all day long without any dependencies on the number of effects in use, etc. Some people lament this approach and wish that Yamaha would base their systems on x86 even though x86 is not always the best choice for embedded systems. Yamaha are no strangers to x86 having obtained many patents covering x86-based tone generation back in the 1990s and early 2000s.

Before anyone carries on about SSDs and SATA, please study the design of the SWP70. The SWP70 memory interface has all of the power, flexibility and Open NAND Flash Interface (ONFI) compatibility as an SSD without the need for SATA bus protocol.

Users may rightfully be disappointed at the lack of user-installable expansion memory. Yamaha are not evil; they simply do not have a convenient way to provide user-installable memory at the chip level. I think users should lobby for more built-in expansion memory, but they shouldn’t delve into conspiracy theories about Yamaha’s engineering or managerial practice.

Some wag will undoubtably complain about “memory parts cost only $10,” “my jump drive is 32GBytes,” “the need to stream 100s of gigabytes,” etc. Fine. But, an instrument design is a just one design. It is what it is is. One should listen to the Montage with their ears, then question whether gobs of samples would improve the playability, sound or expression of the Montage. Also, if you really believe that you can build a better instrument at the same price point, by all means, line up the VCs and engineers, go to work, and compete.

The final result is what we hear with our ears. The hardware is important, but it is simply a platform for the “soft content” — the algorithms, code, waveforms and sound design. In the long run, the soft content is the biggest development expense and is the most important element in a successful digital musical instrument product.

Perspective. Chill. Peace.

Here are links to related articles on this site:

All site content is Copyright © Paul J. Drongowski

Add SPI to littleBits Arduino 2

Music makers working with littleBits Arduino will almost certainly want to add a high(er) resolution digital-to-analog converter (DAC) to their Arduino. Part 1 shows how to add an ICSP header to your littleBits Arduino module. The ICSP header is where you find the SPI signals — MISO, MOSI, and SCK — along with Vcc (+5 Volts) and ground. The ICSP header pin layout is:

         GND ---O  O--- RESET
    MOSI/D15 ---O  O--- SCK/D15
         VCC ---O  O--- MISO/D14

This is the layout when viewing the top of the Arduino module with the USB connector at the top (i.e., away from you, “north” on a map).

Now let’s take a look at a simple circuit using the Microchips MCP4921 12-bit DAC. (Click on images to get higher resolution.)

spi_dac_schematic

Three signals control the DAC: Slave Select (SS/Pin D9), Master Out Slave In (MOSI) and Serial Clock (SCK). Data is sent to the DAC through SPI’s bit serial protocol. First, SS is driven LOW, then 16 bits are sent one at a time to the DAC. SCK synchronizes the data bits sent via MOSI. The first byte consists of a 4-bit “command” and the top 4 bits of the 12-bit value to be converted. The second byte is the lower 8 bits of the value to be converted. After sending 16 bits, the SPI master drives SS HIGH. If you’re curious about all of the signaling details, please see the MCP4921 data sheet.

The rest of the DAC circuit consists of a voltage reference for the converter and a post-conversion (reconstruction) filter. The filter is a simple, one stage passive low pass filter with a 10,600Hz corner frequency.

I built the DAC circuit on a small solderless breadboard. Here’s the layout.

spi_dac_breadboard

I connected MOSI, SCK, +5V and ground to the appropriate ICSP pins on the Arduino module. Slave Select is sourced by Arduino pin D9. I connected a littleBits Proto module to D9 and routed the input signal to the breadboard. If you want to postprocess the DAC’s audio output with littleBits modules, then route the DAC output to the Proto module’s output snap. Be sure to remove the shorting block (jumper) between the middle two pins on the Proto module. This approach provides power and ground to the audio postprocessing modules connected to the output snap of the Proto module — an important side-benefit.

The choice of pin D9 for Slave Select was the beginning of a long, hard journey in debugging. To make a long story short, pins D5 and D9 are buffered and the output buffer introduces additional delay on the Slave Select signal. The delay is long enough such that the DAC does not see a low Slave Select signal before data bits start arriving.

Here’s the code that writes the DAC:

#define NOP asm volatile ("nop\n\t")
void busyWait(uint8_t count) { 
  for(uint8_t i = count; i > 0 ; i--) { NOP ; } 
}

void writeDac(int16_t dacValue) {
  byte data ;
  SPI.beginTransaction(SPISettings(20000000,MSBFIRST,SPI_MODE0)); 
  digitalWrite(SlaveSelect, LOW) ;
  busyWait(25) ;
  data = highByte(dacValue) ;
  data = 0x0F & data ;
  data = 0x30 | data ;
  SPI.transfer(data) ;
  data = lowByte(dacValue) ;
  SPI.transfer(data) ;
  digitalWrite(SlaveSelect, HIGH) ;
  SPI.endTransaction() ;
}

The busy wait effectively stops the sketch for a little while after driving Slave Select LOW. This gives the Slave Select more time to reach the DAC before the sketch transfers the first data byte to the DAC. If you use an unbuffered pin like D1, you don’t need the busy wait.

It took a long time to eliminate all of the other possible issues that could have caused a failure: bad solder joints, wiring mistakes, etc. Fortunately, I have a similar DAC — the MidiVox — which works correctly. I also tested the hardware with Arduino UNO where all digital pins are unbuffered. It was frustrating to get everything working with the UNO, but not the littleBits Arduino module! Persistence wins the day.

In closing, I want to warn developers who interface high speed logic to littleBits Arduino. Beware of the delay through those buffered outputs! The delay may be long enough to throw off critical timing.

Add SPI to the littleBits Arduino

As Moe Szyslak might say, “He ain’t pretty no more!”

Last time through, I mentioned that I wanted to add a SPI digital-to-analog converter (DAC) to the littleBits Arduino module. The Microchips MCP4921 is a good candidate. It is a 12-bit DAC which communicates via the Small Peripheral Interface (SPI) bus or “SPI.”

The littleBits Arduino module is essentially an Arduino Leonardo. As such, its SPI port is available through the module’s ICSP pads. (“ICSP” stands for “in-circuit serial programming,” by the way.) The ICSP pads are the group of pads (two rows of three pads) between the D5 and D9 bitSnaps.

I soldered a 2×3 vertical pin header to the ICSP pads using a very simple jig. The image below is a “before and after” picture. (Click images for higher resolution.) The jig is a solderless breadboard that holds the header in place. I pushed the header into the breadboard just enough to hold the header and then placed the Arduino module over the header and pressed down. The idea is to get the black base of the header in contact and properly aligned with the module printed circuit board (PCB). The blue strips of masking (painter’s) tape keep the assembly together. The “after” part of the image shows the module with the header soldered in place.

icsp_solder_after

The jig really makes the soldering job easy. I have used other methods like trying to tape the header pins in place, but this approach was a piece of cake and frustration free.

The image below shows the header, module and jig just before soldering. The picture also shows the 2×3 vertical pin header and a compatible 2×3 female header block. You could install the female header block instead. I went with the male header because most ICSP cables expect a male header on the PCB to be programmed.

icsp_solder_jig

I ordered the parts from Mouser Electronics. Mouser and Jameco are my usual “go to” sources for components and tools. Here are the part numbers:

  • Harwin M20-9980346 03+03 DIL VERTICAL male header 2.54mm
  • Harwin M20-7830342 03+03 DIL VERTICAL female header 2.54mm
  • BPS BB170-WH White 170 point solderless breadboard
  • BPS ZW-MF-20 ZIPWIRE Female-Male 20cm
  • BPS ZW-MM-20 ZIPWIRE Male-Male 20cm

The “2.54mm” refers to the pin spacing (AKA “0.1 inch”). The female header is $1.19 and the male header is $.24. Buy at least ten of each and the price goes down a little. The contacts are tin; gold is a little more expensive.

I plan to make (eventually) little PCB “hats” using the female header blocks. The idea is to build a small, single-purpose circuit that plug onto the ICSP header or littleBits Proto module header like a hat. This approach would eliminate point-to-point connections using jumper wires. I may experiment with this approach once I get the basic DAC circuit ironed out and tested.

I really like Busboard Prototype System (BPS) products. BPS has the most useful prototyping board patterns. They also have these nifty ZIPWIRE ribbon cables. The wires terminate with individual male pins or female receptacles. Let’s say you need to make six connections from the ICSP header to a solderless breadboard. Then tear off a group of six wires and associated terminations. Push the receptacles onto the male header and push the pins into the solderless breadboard. The individual wires are color-coded in order to make the correct point-to-point connections at both ends. I’ll use ZIPWIRE to connect the Arduino SPI port (ICSP) to a solderless breadboard with the SPI DAC circuit.

If you have a littleBits Arduino module and want to make the most of it, it’s time to break out the soldering iron. Best of luck!

Beat Box at littleBits!

Apologies in advance as I spend more time remembering to be a musician, not a technology blogger. I bought a few MIDI files during the last Yamaha Musicsoft sale and I’m massaging them into PJ-approved backing tracks. Plus, I’m learning about the joys of the key of D-flat!

I posted the Beat Box drum machine project to the littleBits invention site. The littleBits project format is more “step-by-step” than the document that I post on this site. The step-by-step directions should help anyone interested in building the Beat Box without diving into the details of the design. Of course, you can still check out the Beat Box design at this site, too. (MP3 Demo)

Just so you don’t think I’ve been totally idle, I tried adapting the code to sing “Do-Re-Mi” solfege. This involved recording and editing my voice. I used my old trick of singing through the Yamaha PSR-S950 vocoder in order to pitch correct my rocky intonation. I had to lower the sample rate to 11,025Hz in order fit all eight syllables into the very small Arduino program memory (PROGMEM). Unfortunately, I cannot get clear audio at 11,025Hz. There is this raucous buzz which cannot be eliminated through filtering. I suspect that the problem is in the PWM generation itself. The waveforms play back fine at 22,050Hz, sounding like chipmunk solfege.

After hitting that brick wall, I’ve decided to take a different approach which has better long term possibilities. I’ve ordered a handful of MCP4921 12-bit SPI DAC ICs and intend to try them with the littleBits Arduino module. The littleBits Arduino is a Leonardo where the SPI interface is the (unpopulated) ICSP pads. The new approach requires soldering, but it should be worth the effort. Stay tuned.

Still tempted by the Reface CP and YC. But, $400USD street? C’mon, Yamaha!