Robertsonics designs high performance embedded audio players and processors, used worldwide by professionals and hobbyists alike.
For professional and demanding applications. The worlds least expensive truly polyphonic embedded audio player – allowing you to play and layer up to 14 CD quality (16-bit, 44.1kHz, stereo) tracks independently. Additional trigger modes and settings provide pause and resume capability, specify track ranges for stop, random and sequential play. Trigger inputs support passive (contact closure) or active (3.3V / 5.0V logic) as well as inverted modes on an individual basis. MIDI serial option provides velocity-sensitive triggering of up to 2048 tracks. Stereo line-level output, on-board 2W mono amplifier and speaker connector for true single-board operation. Low-power sleep mode for battery operation. Firmware upgradable.Read More
Keep things simple. 18 trigger inputs connect to your contact closures to fire specific MP3 Tracks (up to 192kbps stereo) on a microSD card, or to implement transport functions like next, previous, stop, random play, volume etc. Simple, ASCII-based serial protocol makes it easy to control from an Arduino. Text init file allows setting the serial baud rate and alternate trigger functions. Special trigger modes allow simple logic without the need for an external microcontroller. Firmware upgradable.Read More
All the same features as the WAV Trigger but with four stereo outputs (8 audio output channels), plus more voices, seamless looping and a dedicated MIDI input with integrated opto-isolator. Possibly the first embedded audio player capable of playing 5.1 or 7.1 surround sound with a single trigger input. Available now from SparkFun.Read More
Carina is the only Blackfin development board designed from the ground up for audio. Everything you need for a professional stereo effects processor. Sporting a 400MHz Blackfin, 256MB of external SDRAM, balanced stereo inputs and outputs, 24-bit ADC/DAC >98dB SNR, and sample rates up to 96KHz. A 26-pin IDC connector provides plenty of general purpose I/O for user interface controls. A “plug-in” style software framework for VisualDSP lets you immediately focus on algorithm development.Read More
Latest Blog Post
Tsunami is a new Robertsonics / SparkFun product, available now. Think WAV Trigger on steroids.
You can read the details on the new product page. I thought I’d use this post to discuss the design philosophy, how Tsunami differs from the WAV Trigger and what that means for you.
The WAV Trigger has been an ongoing exercise in optimization; trying to eke out the maximum performance in terms of number of voices without sacrificing quality and stability. I don’t ever want to hear a glitch, and nor should you!
While the WAV Trigger’s STM32F405 processor speed is certainly a factor, the limiting resource is actually the amount of on-board SRAM, used to buffer each wav file being played by a voice. The absolute maximum number of voices the WAV Trigger can support with 44.1kHz, 16-bit, stereo wav files is 14. Even then, I don’t have enough memory to support true seamless looping (which requires more buffering per voice.) With the latest WAV Trigger firmware release, I feel as though I’ve reached the performance limit for this platform.
Tsunami began when I read about the new Atmel S70 ARM Cortex-m7 processor and realized that it runs almost twice as fast and has twice the amount of on-board SRAM. If I was going to design yet another audio player, this seemed like a good place to start.
Another motivating factor for a new product was the fact that customers were writing to tell me that they really wanted more than a single stereo output. Indeed, some people were using multiple WAV Triggers not to get more voices, but to get more audio output channels. In addition, people are always asking about audio input, which the WAV Trigger doesn’t support since it only has a stereo DAC.
I started with the following goals based on customer feedback from the WAV Trigger:
- More voices
- Seamless looping
- 8 line-level audio outputs (4 stereo)
- 2 line-level audio inputs (1 stereo)
- Reset button for changing microSD card without a power cycle
- Ability to update the firmware directly from the SD card
- Dedicated MIDI port so you can use MIDI without additional circuitry
I also thought long and hard about connectors. Everyone seems to want something different – 3.5mm, 1/4″, RCA, direct solder terminals… I ultimately decided to keep it simple and just provide dedicated 0.1″ header for everything. You can either wire directly to another unit or make your own connector/cable assembly. This also keeps both the size and cost down. Same with MIDI – No sense in burdening the board with a 5-pin DIN since not everyone will use MIDI. If you do, you can just cut the end off a MIDI cable, connect two wires to the header and you’re in business.
After selecting a multi-channel audio codec and designing a prototype board, I started porting the WAV Trigger code to get a feeling for the performance capabilities of the new processor.
Mono vs Stereo
Another consideration was that many customers have expressed a desire for support for mono wav files. Stereo is not necessary, or even desirable, for every application. And moving to a mono format increases the output routing flexibility, not to mention the fact that memory-wise I can support almost twice as many voices in mono as stereo. In considering this for the WAV Trigger, I came to the conclusion that supporting mono was too costly from a DSP standpoint. The WAV Trigger’s stereo DAC is actually better served by stereo data – it’s much more efficient because the wav files contain the same interleaved format that the DAC wants. Supporting mono playback in the WAV trigger would very likely have reduced the performance.
Tsunami’s TDM codec, however, wants the channels split to begin with, so the penalty for mono is nowhere as severe. Since Tsunami’s firmware can be updated easily from the SD card, without additional hardware, I decided to provide both mono and stereo firmware versions. (Supporting both at the same time is a bit more complicated, and I’ve provided a way to play stereo content in the mono version.) The stereo version is similar to the WAV Trigger, with 18 stereo voices to any of 4 stereo output pairs. The mono version provides a whopping 32 mono voices to any of 8 mono outputs. A new “Synced Pair” trigger function in the mono version plays 2 specified tracks out adjacent outputs for stereo content. (Yes, they are sample-synced.)
MIDI was an afterthought with the WAV Trigger. By that I mean that when I initially designed the WAV Trigger, I had no inkling that the performance would allow for real-time playability. It wasn’t until I got the latency down to around 8ms and the voice count up to 12 (now 14) that serious MIDI control seemed sensible. While it works great, I had to share the serial port and customers have to construct their own MIDI input circuit (to convert MIDI’s 20mA current loop to logic level serial.) This is a royal pain.
So Tsunami has a dedicated MIDI IN (and OUT, not implemented in firmware yet) with an integrated opto-isolator. It’s a separate UART from the serial control port so you can use both at the same time. The firmware now supports proper use of MIDI Channel, including Omni mode. Even more exciting is a new file-naming convention that lets MIDI users specify the output and looping on a per MIDI note basis. Yes, you can map each key to any of 8 mono (or 4 stereo) outputs.
I know, but unfortunately the Atmel SAM S70 is a 3.3V device without 5V tolerant inputs. This means that your first choice in mating it with another microcontroller should be a 3.3V Arduino. Tsunami, like the WAV Trigger, has a pin-compatible header for the FTDI-Basic USB-to-Serial adaptor, but make sure you’re using the 3.3V version! For you modular synth folks, you have to voltage-limit the gate signals anyway, so this shouldn’t be any more of a burden than for the WAV Trigger.
Please use this post to ask questions and provide comments, feedback… whatever.
Update: First panel off the press:
- Increases total supported track count to 4096 – double the previous 2048 tracks.
- Increases total MIDI Banks to 32.
- Trigger Banks – map triggers to different banks of 16 tracks.
- Voice Lock – when starting a track using a trigger or serial command, you can specify the track to not be used by the voice stealing algorithm. This lets you, for example, start a backing track and then play MIDI without risk of cutting off the backing track.
- New serial reporting mode – The WAV Trigger can now be set to send track status messages whenever a track starts or stops.
- True MIDI Channel/Omni – The WAV Trigger can now be set to respond to only a specific MIDI channel, or to Omni mode (all channels.)
- Improved performance and timing of volume faders.
- Fixed bug that allowed re-triggering when both Re-Trigger and Polyphonic trigger options were de-selected.
- Fixed sample-rate offset algorithm to allow full 2X up.
I’ve also update the WAV Trigger InitMaker app to v1.20 support the new options. The screenshot below highlights some of the new features, and the app now (finally) sports it’s own application icon.
If you’d like to help me test all this, the links below will get you preliminary releases of both the new WAV Trigger firmware and InitMaker app. Please let me know here if you discover any issues with either.
Finally, I’ve also revamped the Arduino Serial Control Library to take advantage of the enhanced features. A new advanced example sketch demonstrates how to put the WAV Trigger in reporting mode and use the library to find out when specific tracks have completed or stopped. Get the updated library here.