The WAV Trigger is a high-fidelity polyphonic audio player that allows you to do more than just add music and sound effects to your project. The WAV Trigger plays and blends up to 14 uncompressed 16-bit, stereo, 44.1kHz wav files - the same quality as audio CD’s. The board has a line-level stereo audio output jack for use with headphones or external amplifiers and an on-board mono audio amplifier with a 2-pin connector for driving a speaker directly.
Tracks can be controlled using 16 trigger inputs or a serial control port that supports a rich serial command protocol, as well as MIDI. Trigger inputs can be connected directly to switches and buttons, or to digital outputs from sensors or another microcontroller. Alternate functions allow triggers to play sequential or random tracks, pause and resume groups of tracks and even control volume.
The serial control protocol allows complex functions like controlling the volume of individual tracks, starting multiple tracks in sample-sync and smooth cross-fading between tracks. An Arduino library makes it easy to do real-time control and audio mixing.
The serial port even supports MIDI protocol, meaning that you can use the WAV Trigger to build a polyphohonic sampling synthesizer to play your own sounds. MIDI Channels and Note numbers are mapped to track numbers, and MIDI Controllers adjust volume as well as attack and release times. The WAV Trigger audio engine implements voice stealing (oldest playing voices are used for new MIDI Notes when all 14 voices are being used), note attack (fade-in), note release (fade-out) and latency averages less than 10 ms. The WAV Trigger supports both SDSC (up to 2GB) and SDHC (up to 32GB) type microSD cards.
Check the link in the documents below to keep up with the latest Firmware updates!
Note: This product is a collaboration with Robertsonics. A portion of each sales goes back to them for product support and continued development.
This skill defines how difficult the soldering is on a particular product. It might be a couple simple solder joints, or require special reflow tools.
Skill Level: Rookie - The number of pins increases, and you will have to determine polarity of components and some of the components might be a bit trickier or close together. You might need solder wick or flux.
See all skill levels
If a board needs code or communicates somehow, you're going to need to know how to program or interface with it. The programming skill is all about communication and code.
Skill Level: Rookie - You will need a better fundamental understand of what code is, and how it works. You will be using beginner-level software and development tools like Arduino. You will be dealing directly with code, but numerous examples and libraries are available. Sensors or shields will communicate with serial or TTL.
See all skill levels
If it requires power, you need to know how much, what all the pins do, and how to hook it up. You may need to reference datasheets, schematics, and know the ins and outs of electronics.
Skill Level: Rookie - You may be required to know a bit more about the component, such as orientation, or how to hook it up, in addition to power requirements. You will need to understand polarized components.
See all skill levels
We welcome your comments and suggestions below. However, if you are looking for solutions to technical questions please see our Technical Assistance page.
Based on 5 ratings:
3 of 3 found this helpful:
This is by far the most useful and versatile audio controller I have used, and I honestly can't say enough about how pleased I am with it! I will for sure be buying lots more of these in the future.
PROS: It is very fast and responsive; it has no problem triggering multiple sounds in quick succession. (Update: I found that it will trigger 9 times per second without any problems. At 10, it starts to cut out.) The polyphonic ability is amazing. I have not been able to find another similar product anywhere that comes even close to offering something like it. I used an Arduino to trigger multiple sound effects simultaneously, and it works great. I LOVE that the configuration is done with an .ini file on the SD card. I bought two, I can swap the SD card from one to the other, and all the configurations swap over with it. Even though you can use an FTDI cable to configure it, you don't have to, which is relieving. Just copy the .ini file to the SD card and it's set! I used old SD cards as well as SDHC cards, and both worked flawlessly. It took me about 30min total to get started with these; they are so simple to use.
CONS: No reset button, which is unfortunate, especially since it requires a power cycle to switch SD cards. The cards output a very high-pitch whine when they first boot up; not a big deal, just a little annoying at times. Using the built-in amp requires a difficult modification to the board, but in my opinion it's better to use a separate amplifier anyway, so don't let that sway you. Finally, it is very ambiguous as to which row are triggers and which are ground! (This actually does drive me crazy at times.)
One more note: The guides did not do a very good job explaining how to set up the active trigger option, and it would be difficult for a beginner to figure it out. If you are triggering the pins from an Arduino, make sure you send the 5V through a 10K Ohm resistor, so you don't accidentally damage anything. Also, make sure the WAV trigger and the Arduino share a common ground, or it won't work.
1 of 1 found this helpful:
Very nice. We're using this in serial mode, and it's hands-down the best audio playback board marketed. 8-12ms response time, multiple sound tracks simultaneously.
Use SOX to format your audio.
1 of 1 found this helpful:
I have a little experience soldering. I have very little experience programming. However I was totally able to succeed with this. The amp used to program it is very easy to use. It is very easy to solder some header to, and you are listening to whatever you want. A very simple, friendly easy to use board. If you want to add audio to your next project, this is a simple and easy way to do that.
1 of 3 found this helpful:
The WAV trigger is missing some capacitors that if not added make this unit pretty much unusable if your wires are any longer than just a few inches.
Love my wav trigger!! so made a quick 3D printed housing....and a mini MIDI in PCB, following Rob's info in his website......
its sounds very fat!!
thx again Rob!!
here is the file if you wana print it yourself....
http://www.thingiverse.com/thing:700509
This is great! Are you looking to sell the MIDI PCBs or provide the Eagle files? I'll bet a number of people would find it useful.
great idea!! I don't have any Eagle files, only a bunch of PCBs...I did a bunch as they will also work for other Arduino projects I am doing.....$5 if someone wants one....email to Kerry(at)klite(dot)com(dot)au
Maybe I should do a laser cut, version of the case....anyway its a great project that sounds really good!! happy to help others... ;)
K
Polyphonic!
Thank you thank you thank you. +1 for products that provide easy polyphonic audio playback. (I know MP3 is more difficult, but maybe one day...)
How is this distinct from the previous version of the wave trigger, WIG-12000? The only change I have noticed is a duplicated row of power connections. Some of the changes in the "features" section seem to refer to new updates to the firmware, not changes in the hardware.
This version adds the AC coupling capacitor to the input of the on-board audio amp that was missing from the initial version. It also brings out the I2S clocks and data input to a connector making it possible to add an ADC for stereo audio input, although there is currently no firmware support for this. And it also improves the thermal dissipation around the 5V regulator.
This board ships with firmware v1.00, which is available on the download page. None of the hardware changes affect the firmware, so the latest firmware will still run on the previous board version. The product description has simply been updated to reflect the current firmware capabilities.
Thanks for the clarification.
Can this board continuously loop a single track without any audible gap? My parents are installing an elevator in their home, and the manufacturer sadly neglected to include suitable music playing inside the cabin. I've already edited an instrumental rendition of the tune to loop cleanly ad nauseum, and my next task is to buy or build a player that can be tucked away in the cabin. This board looks promising since it includes an audio amplifier, and it appears that I should be able to set it up to play a track continuously at power-on. I'm just concerned about whether it can loop a 2:30 long track without an audible glitch between loops.
Don't worry; it'll have an "off" switch.
You can easily set the WAV Trigger up to automatically loop a track on power up, without any jumpers or trigger connections. However the WAV Trigger can only loop on increments of it's audio buffer, which is 128 samples long. Unless your wave file exactly fills the last buffer, there will always be some number of samples of silence at the loop point. It will be very small, as in a couple of msecs, but very likely not 0.
I always suggest using your sample editor to seamlessly loop your file many times and save it as a really long track - there's plenty of space on the flash card. That way, the short gap will occur very infrequently.
Thanks! I'll order one and give it a try.
Received WAV trigger board this morning, went to use on board amplifier. Read that board has to be modified to use the amplifier. I'm used to soldering 0805 SMD components, but this modification has resulted in one duff amplifier. It worked untill capacitor came adrift. chip is being enable with 3.2v. but no output.
Can't believe that this £40 board has to be modified to make it work.
Those comments apply only to the original hardware version (WIG-12000) and not to the current version (WIG-12897) of the WAV Trigger, wherein the missing cap has since been added to the design. (Mentioned in the comments just above this one.) I will try to make this more clear.
I ordered the 12897 model, did I get the 12000 instead? package says 12897. board has v11 in bottom corner. How can I tell if capacitor is already fitted, I read the v11 instructions and attempted to mod, as per the instruction. Using an external amplifier now. controlling board with a Picaxe 40X2. project is for radio controlled boats. when will I be able to buy a board that doesn't require modification.?
Please contact me directly at info(at)robertsonics(dot)com and I'll help you sort this out. Sorry for the inconvenience.
Update: I haven't heard from you, but I did write up this post to help clarify.
Can anyone point me in the right direction...? I may need to split the headphone signal to power 8 sets of headphones... I'm thinking this may cause the volume to reduce by 8x but is that the case...? Is it true that I should opt for as low as possible impedance for the headphones..? Thanks!
Hi, i really love that wave trigger board, .i have a problem now..... i was using version WAVTrig_102 with 9 mellotron sounds banks and direct 1 to16 midi channels pads keyboard controller to change the channels banks and that works fine!. now i wanted to improve to version WAVTrig_110 with the pitch band
and now it only works on midi1 and midi 2 ,if i press on midi 3 or 4 or higher channel, it sound nothing, now if I'm back to midi1 nothing there too , no midi, and i have to reset the keyboard then again only midi 1 and midi 2. please what can i do? Thanks guys!
How are you changing banks? By changing the MIDI Channel on your keyboard, or with a trigger input using the BankUp/BankDn function? Firmware v1.04 and above added support for using MIDI Program Change messages to change banks. Is it possible that you're sending Program Change messages? In any event, I'll have a look at what else might have changed, although I've not heard any other reports of problems.
If it's easy, can you try the versions between v1.02 and v1.10 and see which one breaks it?
By the way, I just posted v1.20, which increases the number of tracks from 999 to 2048. Filenames can now have 3 or 4-digit track numbers, up to "2048xxx.wav". This version also maps all 128 MIDI notes to a bank and supports 16 banks (up from 10), so the MIDI to track number mapping has changed. If you're using multiple banks, you'll have to rename files with this version. See the release notes on the download page.
yes, I'm using only midi, the last version that i could change banks from midi channel 1 to 9 is Firmware v1.04 , i try the others including v1.20, only bank 1 and 2 works , if i select midi 3,4,5,6,7,8,9, nothing works . if i back to channel 1 the same, nothing . like it's loosing the midi sync or something. try to load on your Wav trigger more sound banks and see if you have the same problem , Thanks for your help.
Everything has been going so well with my Jukebox project using your fantastic Wav trigger, however I recently loaded up thirty or so more tracks onto 4GB cards and now I'm having tempo problems. Most of the long tracks(5+ minutes) are a bit slow and the short tracks are playing comically fast. I'm using them on the random function and have tried a few different 4GB cards to eliminate that possibility but same behaviour. Would a bigger/better SD card help? Maybe my track sizes too big?Any ideas greatly appreciated.
Need more info: What firmware version are you using? How are you triggering the tracks? With trigger inputs or serial control? Is it consistent? Does a track that seems to play too slow always play slow, and fast tracks always play fast? How did you create the tracks? What's hooked up to the WAV Trigger?
SD Card and track length should not matter. One test would be to remove all tracks from the card except one that plays too fast, remove all the connections to the WAV Trigger and play the track using the on-board button (which plays the lowest number track it finds.)
Okay, I'm afraid I have no idea what firmware version except to say I bought this board (WIG-12897) about last October from Hobbytronics here in the UK if that's any help. Thanks for your very specific questions, I've done some investigations and your test and here are some answers: Yes, the same tracks are always either playing too slow or too fast. It's not the short ones that are playing too fast as I first thought but it's the ones with the slow 'bit rate'. In fact I've noticed the playing speed is proportional to the difference from 1400kbps where a 700kbps plays at double time and a lot of my tracks are at around 1500 and going a bit slow. All the tracks were converted from MP3 using Audacity. I did what you suggested and removed all the connections and stripped the file down to to just one of the 'fast' tracks and yes, using the on-board button; it still went at double time!
So it sounds like your conversion from MP3 to wav is wrong. Have you seen this video? If you simply aren't able to convert a particular MP3 correctly, you can email it to me at info(at)robertsonics(dot)com and I'll have a look.
Thanks so much - you were dead right - I hadn't converted the files right and checked the 'project rate' to 44100Hz as it said in your video (why didn't I look at before - doh!). Thanks for speedy help - Project back on track!! GREAT SERVICE Mr Robertson!
Can anyone speak to how this player performs over a range of temperatures?
I have a permanently installed outdoor art piece in a very cold town in Ontario Canada. This winter managed to wreak all kinds of havoc with the audio playback boards I've been using. I want to replace them with something more robust, but I need to be confident that the board will work to at least -10deg celsius, ideally lower.
This player looks to fit the bill exactly, I wish I used it from the get go. I could have slimmed the physical footprint significantly
Thanks.
I must admit that cold is not something I'm used to worrying about. It's usually heat. That doesn't sound too bad, but I certainly have not conducted cold tests. The only thing I could suggest would be to look at the individual datasheets for the major components and review specified operational temp ranges. Not conclusive, but at least a start. Condensation would of course be bad.
Has anyone had a problem with the wav trigger randomly outputting erroneous samples? I've seen this effect on two scopes. I'm about to record some audio to verify that I'm not crazy. The random samples are more evident if the input wav file uses a smaller portion of the available bit depth but exist even in full-scale sine waves.
If you record the output using an audio editor like Audition or Audacity, you can zoom in on any anomalies. With sine waves anything wrong should be readily apparent - both audibly and visibly. I've spent a lot of time looking at the output and haven't seen or heard of this, so I'd be very interested in any data to the contrary.
The introduction of pitch bend / sample-rate control in firmware v1.05 did introduce some distortion (bad samples) when actually pitch bending, but this was fixed in v1.08 and later. Firmware v1.10 is on the download page now.
Hi A quick question about the serial control: If I request the WAV Trigger to play track 200, but there is not a track 200 (200*.wav file) on the card (files are 195.wav, 196.wav, 210.wav, 211.wav) - will the WAV Trigger pick the next highest track to play, in this case 210.wav? This seems to be what's happening currently. If there is a way to make it just not play any missing track number that would be great. Thanks, Guy
It's not supposed to do anything if you request a track that doesn't exist. Assuming you're using the serial control port, can you post your code? Are you using the Arduino library or did you implement your own serial port code? Which command are you using?
My mistake - dodgy wiring on my part - no fault in the WAV Trigger. Such a fantastic product, I love it!
I'm loving your wav trigger - great sound quality and so far very reliable. However I was trying out the mono amp the other day and connected it directly to a 0.25 watt 8 ohm speaker but I accidentally set the output volume to ten when testing and now I seem to have blown the amp - after some very distorted output now I get nothing coming out no matter what output volume I set. The current draw from the trigger hasn't changed - 200mA with amp on and 90 when off. I would have thought I'd have have blown the under powered speaker first. I love this board but I need to understand how exactly I blew the amp - or if I have?
Sorry you are having problems. A volume of +10 (dB of gain) is pretty loud if your wav file is already hot.
When did you purchase your board? I ask because the first version was missing a capacitor and needed this mod when using the on-board amp. The latest version (WIG-12897) has the cap and does not require the mod.
I assume you have tried another speaker? I would agree that it's more likely that you would have fried the 0.25 Watt speaker. The stereo jack output still works, right?
Thanks for quick response. Yes I'm using the latest Trigger with the extra cap and the stereo jack output is fine and yes I've tried the mono output with different speakers and all I get is a little crackle sound when connecting. Weirdly the initial speaker is also still fine - what could have happened then, I wonder? While I have your attention could you also help clear up for me how to best power the board from an external 5V supply. Am I correct to use the 5Vin breakout (or the 5V by the LR) and have I got it right that I need to solder together the '5V' jumper just between the mono output and LR/5V ?
Well, by your description it would appear that the LM4990 may indeed have been damaged, though I can't say how. Data sheet implies that overheating can cause failure - how long did you play it loud?
Yes - you can power the WAV Trigger with an external 5V using either of those pins, as long as you also close the solder jumper. Just remember not to apply 5V and use the barrel connector Vin at the same time.
Thanks for that. It was on 'loud' for about ten seconds before it went silent. I'll be more careful next time and may be I was just unlucky and anyway it doesn't put me off this great board.
will NOT work with MONO samples....this is worth adding to the 'Troubleshooting' guide, as lots of drum samples are in mono....might be worth a 'add' in the next revision...to make MONO sample / tracks playable...might free up some polyphony.. I am using wav trigger as a drum sampler, as its super quick triggering...and sounds great! *ADD** quick work around using Audacity, using edit tab, do a 'duplicate', then click on the name of wave form for drop down box, then hit 'make stereo' and then export as 16 bit wav....my 808 samples sound fat as a tank, and that's just thru the headphones...;)
I'm glad I read this. I was struggling to get my files to play at all and it turns out they were mono. I guess I was interpreting the instructions to mean the trigger supports UP TO 16-bit, 44.1kHz stereo (assuming that anything less would also work). I could then get the sound files to play, but they were 4x faster than they should have been. In Audacity I needed to set the "Project Rate" and the sample rate to 44100. For some reason, initially the project rate was 11025. The wav sounded normal from within Audacity, but 4x faster from the trigger. Once they were both set to 44100, all is fine and dandy.
Thanks for the feedback. I've tried to be clear that the WAV Trigger supports 16-bit, 44.1kHz stereo wav files. Mono support would not increase polyphony because it's the number of files, not the number of channels, that's important. In fact, mono would actually slow things down because it would involve extra buffer copying. I made a short video on using Audacity to convert audio files for use with the WAV Trigger.
no probs, easy to make stereo, just got me stuck at first....I just hooked it up to a nice set of monitor speakers...OMG!! My 808 kick a freaken HUGE!! I am really impressed with the sound quality... and the noise floor is ZERO, well done!! I have also designed some 3D printed and laser cut cases, in a few different version...will post more when I get mine done...;)
Great board! Having a bit of trouble getting files onto the SD card. VCP is installed and I can flash the firmware successfully but I can't seem to get the SD card to show up as a writable drive to get wavs and init file on there. Should I be using a separate SD card reader? I was under the impression the Wav Trigger could act like a reader for the PC.
Not sure where you got that impression, but the WAV Trigger is a play-back only device. It reads FAT16 or FAT32 formatted microSD cards which are written using a computer and a microSD "reader". The WAV Trigger serial interface is just that, not a USB device connection, although you can use a USB-to-serial converter like the FTDI Basic to create a VCP connection to your computer. But that won't support a class-compliant mass storage device connection. Hope this helps.
thanks robert! that clears a lot up, I think it was something sparkfun wrote in their guide that made it misleading, not anything on your website. i'll try writing the files with a 3rd party reader (right now i'm using my phone's sd slot and it's not working out).
Great board, WOW nice job!! I just ordered!! I did see it did serial midi (regular midi)... can it also do USB-midi also??
Well, no. Not directly. USB-MIDI requires an on-board USB device controller and the appropriate descriptor tables for a class compliant MIDI device, which the WAV Trigger does not have. The easiest USB connection is using the FTDI Basic, but that's just a USB-to-serial converter, and looks like a COM port on the host computer, not a MIDI port.
One way to get true USB MIDI would be to use a Teensy with its class-compliant MIDI library (I've never used it myself) and then serial (MIDI) to the WAV Trigger.
thx so much for your reply!! and again, thanks for making such a usable PCB... I am very excited to get this board......I do have a USB-midi controller....but sounds like serial midi is super easy, compared to USB -midi, so will stick with that....i have made a https://learn.adafruit.com/mini-untztrument-3d-printed-midi-controller it has a teensy code inside...so I could maybe add serial midi output to this box....thx for the info!!
when in 'standalone mode' (no midi connected) 16 trigger pads are a must, like a MPC sampler....but I also need a VOL up and down switches and BANK change switches....but to do this, I need to use 4 trigger inputs....so I then can't have 16 pads / switches for note triggers....first world issue I know...nothing you can do I know.... but this is how 'muso's' will wana use it....I would also use the 'sound test button'...if making a MIDI only triggered unit...so its a good thing to have there....maybe VOL up and down switches and BANK change switches....for future revisions as 16 trigger pads for NOTES are a must in my books... for muso's....and this is very capable with for that....I have made a mini PCB for midi input...the spark fun breakout is just too big....for only midi in....
can you briefly outline how I would tag a 'track' on the SD card for PAD '001' and 'BANK 0'.....
thx again for your info!! best Kerry (k-tronik)
Ah - I thought you wanted to plug the WAV Trigger into a PC or Mac and have it appear as a MIDI OUT device. In order to plug a USB MIDI controller into the WAV Trigger, it would need to have a USB Host controller implementation, which it also does not. Keep in mind that I only added MIDI capability once I figured out I could support 14 voices with low latency.
With regards to your specific requirements, my philosophy has been to focus on making the serial control protocol (and the Arduino library) be as complete as possible. I'll never be able to directly accommodate everyone's hardware control requirements, so my thinking is that if you need more than what's natively on the WAV Trigger, you can always add an Arduino and your own code. In your case, you could still use the 16 trigger inputs on the WAV Trigger for the track triggers, then add an Arduino with whatever other controls, including pots and encoders if you want, and send serial control messages to the WAV Trigger.
I've been planning to do something similar with a Teensy, a motorized fader, a rotary encoder and a bank of illuminated pushbuttons. Fader would be multi-use for track volumes and pitch bending. I think I could make a killer stage rig
sorry for all the questions....
samplerateOffset:
can this be changed over midi in realtime?? if so what CC is it mapped to??
K
thanks for the support!! serial midi is great!!...I will mod my controller for serial midi if I want to use it....14 voices and low latency is what makes it KILLER! its a drum sampler for DIY guys, in fact was trying to make one, when I found this....I nearly fell off my seat, when I saw the video and saw what you had made....its all there ready to box...;0
I am new to digital code and stuff...me a old skool 80's electronics guy...;) OK, so use 16 note triggers and second arduino interface that talks over the serial....thanks for info... not sure of the code, but hardware side hookup no probs for me...
**FOUND BANK CHANGE INFO*** ;) many thx
Kerry
sending serial commands to the wave trigger is understood by me, but would not have a clue how to setup the correct code to make it happen...I would start to try to learn how to get a adurino to read 2 'pots' and send control to wave trigger to change master volume and select banks 0-9...so that will be in the advance lesson...after i get it all running....crawl before I can walk type deal...;)
I've done a lot of the work for you already with an Arduino library.
I have the Library...just don't know how to write it so to command the wave trigger...if you had a quick example of what one bit of code would like...if I were to try to write a volume command using 0xf0, 0xaa, 0×07, 0×05, 0×00, 0×00, 0×55 how would that look?? what would be in front of it....I guess we need a very basic 'how to control serially' guide...;)
Q: am I right in thinking...while using in a studio environment, where I have stuff on the other midi channels... if I only use the wave trigger on ONE midi channel, am I then limited to 99 tracks??
thx again for your help.
With the serial library, changing the master volume is simply wTrig.masterGain(g), where g is between -70 and +4. Track volumes are equally simple. The library handles all the details of the serial protocol for you.
If you're using MIDI (rather than the serial protocol) then each channel can have 128 notes or tracks. However, tracks 100 - 128 will overlap with 0 - 28 of the next channel, so effectively yes: 99 per channel.
thanks you sir!! still confused on actual code layout....OK, if your too busy to help...;) I am still learning to use arduino...
I am getting closer.... with this info....but need more....I have searched through every bit of info I can find....and no where did I find how to do this TAG...wTrig.masterGain(g) where would I find info for the rest of the tags....like above for other stuff it does
all I can find on serial control is pasted below, and in no way does that help me with what do to....is there any more info about this style of tag... wTrig.masterGain(g) and how to use it??
any chance you could please give an example of what to drop into a Arudino....so to control functions via pot??
so I start with:
include <wavTrigger.h>
then what??
how do I map 'wTrig.masterGain(g)' to a pot....
thx again, I sure any help you give me could be used as a guide for others that want to do the same thing....many thx Kerry
Commands sent TO the WAV Trigger:
GET_VERSION Message Code = 0×01, Length = 5
Data = none
Response = VERSION_STRING
Comments: Requests the WAV Trigger to transmit the VERSION_STRING message
Example: 0xf0, 0xaa, 0×05, 0×01, 0×55 GET_SYS_INFO Message Code = 0×02, Length = 5
Data = none
Response = SYS_INFO
Comments: Requests the WAV Trigger to transmit the SYS_INFO message
Example: 0xf0, 0xaa, 0×05, 0×02, 0×55 CONTROL_TRACK Message Code = 0×03, Length = 8
Data = Track Control Code (1 byte), Track Number (2 bytes)
Response = none
Comments: Sends a Track Control Code to a specific track number
Example: 0xf0, 0xaa, 0×08, 0×03, 0×01, 0x0a, 0×00, 0×55
Track Control Codes:
PLAY_SOLO = 0×00: Play track without polyphony, stops all other tracks
PLAY_POLY = 0×01: Play track polyphonically
PAUSE = 0×02: Pause track
RESUME = 0×03: Resume track
STOP = 0×04: Stop track
LOOP_ON = 0×05: Set the track loop flag
LOOP_OFF = 0×06: Clear the track loop flag
LOAD = 0×07: Load and pause track STOP_ALL Message Code = 0×04, Length = 5
Data = none
Response = none
Comments: Commands the WAV Trigger to stop all tracks immediately
Example: 0xf0, 0xaa, 0×05, 0×04, 0×55 RESUME_ALL_SYNC (Note 2) Message Code = 0x0b, Length = 5
Data = none
Response = none
Comments: Commands the WAV Trigger to resume all paused tracks in sync. Can be used with the CONTROL_TRACK / LOAD command to start multiple tracks in sample sync.
Example: 0xf0, 0xaa, 0×05, 0x0b, 0×55 VOLUME Message Code = 0×05, Length = 7
Data = Volume (2 bytes, signed int, -70dB to +10dB)
Response = none
Comments: Updates the output volume of the WAV Trigger with the specified gain in dB
Example: 0xf0, 0xaa, 0×07, 0×05, 0×00, 0×00, 0×55 SAMPLERATE (Note 3) Message Code = 0x0c, Length = 7
Data = Playback sample-rate offset (2 bytes, signed int, -32767 to +32767)
Response = none
Comments: Increases or decreases the WAV Trigger’s playback speed for all tracks.
Example: 0xf0, 0xaa, 0×07, 0x0c, 0×30, 0×70, 0×55 GET_STATUS Message Code = 0×07, Length = 5
Data = none
Response = STATUS
Comments: Requests the WAV Trigger to transmit the STATUS message
Example: 0xf0, 0xaa, 0×05, 0×07, 0×55 TRACK_VOLUME (Note 1) Message Code = 0×08, Length = 9
Data = Track Number (2 bytes), Volume (2 bytes, signed int, -70dB to +10dB)
Response = none
Comments: Updates the volume of a track with the specified gain in dB
Example: 0xf0, 0xaa, 0×09, 0×08, 0×01, 0×00, 0×00, 0×00, 0×55 AMP_POWER (Note 1) Message Code = 0×09, Length = 6
Data = Audio Amp State (1 byte: 0 = OFF, 1 = ON)
Response = none
Comments: Enables/disables the on-board audio amplifier
Example: 0xf0, 0xaa, 0×06, 0×09, 0×01, 0×55 TRACK_FADE (Note 2) Message Code = 0x0a, Length = 12
Data = Track Number (2 bytes), Target Volume (2 bytes, signed int, -70dB to +10dB), Milliseconds (2 bytes), StopFlag (1 byte)
Response = none
Comments: Starts a volume fade on a track from the current track volume to the target volume over the specified number of milliseconds. If the StopFlag is non-zero, the track will be stopped at the completion of the fade. This command can be used to fade up or down, and to crossfade tracks.
Example: 0xf0, 0xaa, 0x0C, 0x0a, 0×03, 0×00, 0×00, 0×00, 0xe8, 0×03, 0×00, 0×55
You don't need the above info if you use the library. Look at the README file on the github page.
You're now asking questions about using Arduino not specific to the WAV Trigger. There's plenty of documentation and help available online about using libraries, serial ports, connecting pots and encoders, etc. I'd encourage you to ask these question in the forums.
cool thx Jamie!!
RE: Pitch Bend. I guess it's up to MIDI controller to transmit Pitch Bend information. The PIC based MIDI controller I am using only decodes key presses and does not transmit Pitch Bend info (I think). Any ideas?
Yes, if you're using MIDI, as opposed to the serial control protocol, then your MIDI controller needs to supply pitch bend messages. You could implement your own pitch wheel, or use one from another midi controller, and then merge the MIDI streams from that and your PIC controller, but that would be a bunch of hardware.
is "MIDI merge" something a "MIDI through" piece of hardware would accomplish? Time for a google search I guess.
No. A MIDI "through" just retransmits whatever comes in the MIDI IN. A MIDI "merge" actually merges 2 MIDI data streams into a single MIDI OUT. It has 2 INs and 1 OUT. It's more than Y-cable, and has a processor which acts like a traffic cop to make sure that outgoing messages are separate and not scrambled together.
Do you think the project below would accomplish the trick? Looks like it will do A/D conversion using a POT and also merge with incoming MIDI data. Free source code, also. I just don't know if it transmits the messages in a format that is compatible with "WAV Trigger" https://code.google.com/p/epick-pedal-controller/
I didn't immediately see any hardware docs, but it certainly looks like it merges the pedal into an incoming MIDI stream. How well it does the merging, which is not trivial due to things like running status and real time messages, I can't say. Also, you'd have to modify the code so that it sends MIDI Pitch Bend messages instead of Controller messages.
Hi Jamie, First up thanks for improving the start/stop of loops. Pretty much rock solid now. I have a new problem though (sorry) when attempting to fade in and out looping tracks using serial comms. If I have a looped track playing and fade out to a stop and -70db the first time everything is good. Track fades and stops. However, if I then try to start the loop again it will resume at the default volume (0db) but will not fade out with a subsequent fade out command. If I try to fade in the track it will fade in but then stop (even with the stop flag at 0). In a nutshell it seems that after the first fade in or out performed on a track there are problems with following fades. Cheers
Are you using the Arduino WAV Trigger library or your own code? Can you replicate the problem just using a single track and the steps above? We should probably spare the product page the back-and-forth. If you email me at info(at)robertsonics(dot)com, I can follow up with specific questions if necessary.
What ohm speaker is recommended? I know I saw something previously that I thought said 4ohm @ 2W, but now I can't find any reference to it. Want to get most bang for the buck. Also, is there a way to do a "master" volume pot for the speaker/jack? I was only seeing individual options on the tracks with serial, or using the triggers to up/down the volume.
LM4990 datasheet indicates 1.25W into 8ohm, and 2W into 4ohm. Triggers can be programmed to be master volume up/down with 0.5dB steps. If you want a continuous controller (pot) for volume you'll need to use the serial control protocol - the WAV Trigger does not have an analog input. The serial control protocol does indeed have a master volume command, which is also supported in the The WAV Trigger's Arduino serial library. MIDI Controller #7 also does master volume (In MIDI mode).
If you're planning to drive the speaker at high volumes, I would recommend limiting your supply voltage to 9V - 6V would be even better - to prevent the 5V regulator from getting overly warm.
Hi Robert, is there any means of uploading files to the SD card? This is a perfect little device for use in museum interactives ... but having to go around, open up cabinets and swap out SD cards to support content changes is a show-stopper. Thoughts?
What did you have in mind? The only external communications path to the WAV Trigger is the serial port, which is limited to standard serial baud rates. Even if the Wav Trigger supported writing files to the microSD card, which is currently does not, it would take over half an hour (best case) to update 20MB of audio - presumably longer than opening the box and changing the card.
Are you thinking that you want to update remotely, without physically going to each location?
I think you're talking about a different, and possibly more expensive, product. How much would you be willing to spend for something like the WAV Trigger but geared more toward commercial use cases such as yours?
Any chance in the future of supporting the full MIDI key range (0 - 127) and channel range (0 - 15)? I'm designing a project to use this, but I just calculated that it would require two WAV Trigger boards since the filenames only support channels 0 - 9 and keys 1 - 99. Are there any other tricks to support more than 999 samples on a single WAV Trigger? (PS - This thing is fantastic, and exactly what I've been looking for!)
I did it this way for two reasons: First, the current track numbering system only allows for 999 tracks - not enough for 16 channels of 128 notes. Second, I was trying to keep the MIDI note number to track number translation simple. I'll point out that there's no reason you can't use all 128 notes in a given bank - that will work, it's just that note numbers 100 - 127 will overlap with the next channel/bank.
The right way to do this is to increase the number of tracks to 2048 (16 * 128), and to make the track number = (Channel * 128) + Note. But in order to get the latency down, I have to store track file info in RAM, and I'm not sure I have enough RAM to hold that many tracks. I'll have to see...
Thanks for the input. I only added MIDI support after I realized that the performance I was able to achieve allowed the WAV Trigger to be used as an instrument. It's a work in progress!
(PS - Thanks for the kind words.)
My WAV Trigger started making a high pitched noise when i plug in the power, not plugged into audio. It gives me the three blinks, but if I trigger with the onboard testing button, I get a really fast loop of noise that doesn't stop. I soldered some headers on, so I think I may have bridged some contacts or something, however, I don't see anything. Do you recognize this behavior at all?
This is not normal behavior. Did it work before you soldered to it? Where is the noise coming from if you don't have the audio output plugged into anything? If you suspect that the board is malfunctioning, best bet is to contact Sparkfun tech support.
Just got mine in the mail and I'm excited to play around with it. I want to replace Ableton as a wav looper in a live situation (working with long 4bar looping wavs). Is there a way to adjust individual track volumes over MIDI? I know you can trigger an individual track at a volume with velocity, but I mean after the note's been triggered. Not sure how you'd do it if multiple wavs are triggered on a single channel. It would work if you could trigger each loop on a separate MIDI channel and adjust the volume for that channel. I'd appreciate any suggestions.
At the moment, no. The only way I can think of to control individual track volumes via MIDI would be as you suggest: Using channel volume to change the volume of all the notes (tracks) triggered on a given MIDI channel. But there's no support for this in the code today. All I can suggest is to use an Arduino to receive MIDI and use the WAV Trigger's serial control protocol to do all of the audio control. That would give you ultimate flexibility to control the volume of any track, along with looping and sample-synchronous playback.
Thanks for the answer, Jamie. That was what I was thinking of doing - though I'm thinking of going one better and using a Arduino Due board so that I can run the Arduino MIDI Library on one of the Due's 4 serial ports (midi in and out), and communicate with the Wav Trigger on one of the others.
Hi Jamie, Would it be theoretically possible to get the trigger inputs to respond in a way that is velocity sensitive with piezo triggers? I understand that the firmware sees on and off based on high or low voltage.
My thinking has always been to focus the WAV Trigger on being the best audio mixing engine it can be, and to use a separate micro for more complex and custom control I/O functions and logic, and the serial control protocol to control the WAV Trigger audio playback.
Piezo triggers present several challenges, the first being that they produce very short spikes of high voltage - as much as 20V or more. You can't simply connect a piezo trigger to a GPIO of any micro without risking damage to the input. Each piezo will need an interface circuit to prevent the input from seeing more than 5V. Secondly, if you want it to be velocity sensitive, you have to sample into an analog input at a pretty high frequency so as not to miss the spikes. It's no longer a digital input.
I'd suggest using something like a Teensy to interface the piezo into an analog input and sending serial message to the WAV Trigger. You can google "Arduino piezo drum trigger" and find suggestions of how to connect piezo drum triggers to an Arduino input.
I was considering doing that, I just didn't want to be doing any unnecessary steps that might introduce extra latency. Thanks for making this awesome board! I just got mine, and I'm already playing with it. I have an old Yamaha RM1X sequencer and this makes a great sampler addition to it.
Sampling the analog input and sending a serial message to the WAV Trigger should take no more time than a commercial MIDI drum trigger head, which is plenty fast enough for drummers. The WAV Trigger itself introduces about 6 - 8ms of latency due to the way the mixing engine works. FYI, Massimo Bernava is using the WAV Trigger as a drum sampler with his own microDrum trigger input module. See here
Hello Robert, I was wondering, is there a way to get informations about the files playing, like name, length...? I'd like to build an audio player with a display, and I was wondering if I can achieve it with your board. Thanks. Jérémy.
Not yet. Am planning to add this capability to the serial protocol, but haven't decided how to implement. Would you be satisfied with short filenames, i.e. 8.3 DOS format? Supporting arbitrarily long filenames will be a little challenging.
Yes ! It would be perfect for me. Is there also a way to get the length of a track ? And maybe also the index, i.e. track 1, track 2, ....? Thanks for your reply !
Good news, bad news: The first 3 characters of the filename are always the track number, so you get the track number as part of the name. The bad news is that this only leaves 5 characters for the rest of the filename. And if you use long filenames on the microSD card, 2 of those characters are taken up by the "~1". Not a great solution.
It may not be THE solution, but it could be ok for what I want to do. Do you read french ? I would like to send you something about my project.
I downloaded your piano samples and they play. Any other wav file I load does not play. What am I doing wrong?
The WAV Trigger plays 16-bit, stereo, 44.1kHz .wav files, with no meta-data. It's likely that the wav files you're trying to play are not in that format. You can use the free audio editor Audacity to easily convert from any format, including mp3. Here's a short video showing how.
Adding real-time sample-rate conversion, or the ability to control playback speed and pitch, to the next firmware release. Details here. Would love to hear how people might want to control this new effect.
Can either of the sparkfun midi breakout boards be used with this?
I've used this one, as shown in the (out-dated) video below. Mine came as a kit, and I only populated the parts required for input. Worked perfectly. What's the other one?
https://www.sparkfun.com/products/9595
Thanks.
Just posted a step-by-step guide on using the Rock Band 3 keyboard and the WAV Trigger to make a self-contained, velocity-sensitive, hardware sampler, using the RockBand 3 front panel controller buttons to shift octaves, change sound banks and adjust note sustain. Hoping people will be inspired to make and share new sound banks.
Hi Jamie, I successfully recreated your Mellotron string emulator and want to add more sound banks. If I want to add Mellotron Voice, Choir and Brass to the current strings, which are located on tracks 043 to 077, would I make them tracks 143-177, 243-277 and 343-377?
Yup. I've actually already done this with the violins, choir, cello, flute and full orchestra - Just haven't had a chance to post all the files. I've also added support for switching banks with the MIDI Program Change message, and am making a short video showing how all this works with a RockBand 3 keyboard, which provides Program Change capability from it's controller buttons. Hope to get it all posted this weekend.
Strange thing happened with my board... I get an odd digital noise on trigger press when using the Arduino Wav Trigger library. Wav Trigger RX is hooked up to pin 9 on the Arduino and the serial ground is connected to Arduino ground. However. this only happens when using certain MicroSD cards! The one that works fine is a 2GB MicroSD HC while the ones that are being used when the noise is apparent are 2GB and 4GB MicroSD and 4GB MicroSD HC. On one card the audio is also distorted, on another the noise occurs just as the trigger/switch is pressed. All files are the same. Quite strange! Any thoughts...?
It's a little hard to say what's going on from the description. I'd suggest trying to simplify. Can you duplicate the problem if you take the Arduino completely out of the equation and just use the WAV Trigger's button to trigger a track with one of the cards that exhibits the problem?
Very odd, all is normal if the Arduino is taken out of the equation.
Does the problem appear if you just hook up the Arduino (don't send commands and still use the WAV Trigger's button to start the track) or only when you actually send commands from the Arduino?
Apologies for the delay - All is ok when the wav triggers button is pressed so it's just when the arduino sets the command.
Then perhaps you're doing something wrong in your sketch. If you're using AltSoftSerial, keep in mind that it uses other resources, such as Timer 1.
Hi, I'd like to ask about the serial comms especially wrt looping tracks. When I have a looped track playing and send either a stop all tracks command or a stop command for that particular track the looped track may stop for a very brief period but will resume playing very shortly thereafter.
Basically neither of the stop track commands seem to stop a looping track.
I can only get a looping track to stop by sending a 'clear loop flag' command. Which means that to restart that track again both a start command and a set loop flag command must be resent. Is this the way it is supposed to be or is there some hiding singular 'start looped track' and 'stop looped track' commands?
And yeah ...."A week ago, I just got (a second) 12000 after it being out of stock for X amount of time..." also. Had really hoped that the cap issue would have been fixed on the later production run since the issue was known about. Good thing I got a number of the required caps. Regardless, this is still an awesome product!!
Well, that kinda sounds like a bug to me. I'll have a look and either fix it or explain it better. You may need to give me until the weekend. What version of firmware are you using?
I'm using WAVTrig_102_20140831...So the latest preliminary release. I'll give V1 a go and see what happens. Cheers
That likely won't change anything. Have you tried the Serial Remote Control demo app (on the download page?) It implements all those functions so it should allow you to duplicate the problem.
I get a similar situation with the remote control app. However, pressing either the Stop or Stop All buttons will eventually cause a stop. Usually somewhere on the 3rd to 6th press. However, pt 2 if I loop one of the default number files which contain a lot of silence the stop and stop all buttons work pretty much perfectly (there is only an odd occasion when the track doesn't stop.) The files I am looping are very short and loop to provide a continuous sound. I will join a number of the loops into a single file to increase the length of the sample and see if the duration of the track/.sample has an effect.
Still sounds like a bug. It may be that you're seeing it now because it's more likely to occur with short files that loop very often. How short are your files?
In any event, I would always recommend extending your loops in the file in order to minimize the number of times the file actually reaches the end and restarts. There can be very short gaps, depending on the exact length of your file.
Yep you were right - same with the earlier version.- I'll try the app
This might seem like a very stupid question, but will this board work stand-alone with triggers, power, and 1/8" out? Or does it require an Arduino-type board?
The project I had in mind was multiple piezo transducers to be used as finger-drum triggers, then have a bank of samples to play in real-time out of the 1/8" jack... is this the board I should be looking at?
You don't need any other board or software if your switches or buttons are either contact closures or logic level (3.3V or 5V). In fact, I show how to do this in the video link below (The video is out of date with the latest firmware features, but it demonstrates the concept.)
However, piezos generate large voltages for a very short period of time, and if you hook them directly to any processor's GPIO logic input you risk damage. You will have to experiment with at least a zener diode to clamp the voltage to 5V or less and perhaps a R/C filter to lengthen the pulse.
Holy cow. A week ago, I just got the 12000 after it being out of stock for X amount of time, even got other odds & ends to get free shipping, not only has the 12000 dropped in price but it's been replaced by newer hardware. This familiar feeling I'm experiencing seems to not be exclusive to phones & computers, haha