Creative Commons images are CC BY-NC-SA 3.0


added to your
shopping cart

In stock 40 in stock
49.95 1+ units
44.96 10+ units
39.96 100+ units

Description: The WAV Trigger is an audio development platform that allows you to easily add music and sound effects to your project. The WAV Trigger plays uncompressed WAV files up to 16-bit stereo 44.1kHz, the same quality as audio CD’s. One significant feature is that the board has the ability to play multiple tracks at the same time, mixing up to 8 stereo tracks together on the fly. The board has an audio jack for use with headphones or speakers and a 2 pin output that can be connected to a speaker for audio output.

Tracks are played when some type of condition is met. For example, the most basic use is to connect a button between ground and a trigger. By default, when the button is pressed, the corresponding track (.WAV file) on the micro SD card to that trigger will be played. There are more advanced options that can be created with a configuration file that allows triggers to play random tracks, pause tracks, change volume amongst other operations.

In addition to using buttons and switches, sounds can be triggered by the digital outputs of microcontrollers or sensors, or by serial commands, including MIDI Note-On messages. This can allow for many interesting uses of this product and how it can react to its environment.

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.


  • Input voltage: 6-15VDC
  • Current Consumption: 80mA idle, 120-200mA playing
  • File system: FAT16/FAT32
  • Audio out: 1/8" stereo headphone jack
  • Audio out: On-board 2W mono amplifier speaker output
  • Trigger inputs: 3.3-5V, default active low inputs with internal pull-ups
  • Serial: Full duplex, 8N1, 57.6K baud, MIDI
  • Polyphonic: Play and mix up to 8 stereo tracks independently and simultaneously


Comments 134 comments

  • Hello. Could the Wav trigger be damaged by accidentally changing the power supply polarity?

    • I guess it would depend on which connector you reversed the polarity. Did you mistakenly did so?

      • Thanks for answering, I am planning to use the alternate Vin and Ground vias to connect a 9v power supply and implement an on/off switch. Maybe i’ll be using a negative center 1spot guitar pedal power adapter. I want to use the Wav Trigger as a drum sound device and I want to power it along with the rest of my guitar pedals. I need to know if the Wav trigger could be damaged by an accidental power supply polarity change since I have to make custom ac jacks for every pedal in my chain and I could accidentally use the wrong one with the Wav trigger.

  • Is the boot loader used in the controller the default version or has it been custom developed? Also, it would be great if you could add the quiet mode feature of the MP3-trigger: getting the trigger status back over the serial port was very helpful in my project!

    • The bootloader is custom developed, so only boards directly purchased at sparkfun have it installed.

      • Then what is the use of having “open source hardware”? I am willing to compensate them for the use of the software, but they don’t even want to discuss this / a custom design by them because we would be ordering less than 250 pcs…

        • Not sure I understand the comment. I’m always willing to discuss specific use cases - Just contact me directly at info(at)robertsonics(dot)com. Open source hardware allows you to use the existing proven design with your own firmware - all STM32F4’s have a permanent bootloader built in, and you can do a lot with the free (code size limited) version of the Keil MDK-ARM. You can even use the WAV Trigger’s flash utility to program your own firmware into the board.

          I’ll add the quiet mode in the next firmware update.

          • While you are at it, could you consider adding the ‘start group’ command? If it’s not too much work of course. With the increased serial buffer it works as expected but a ‘start group’ command would be a more elegant solution :)

  • Is Wav Trigger compatible with arduino uno? and am i able to play the music by triggering it with an arduino code?

  • Is there a simple sketch available for triggering the WAV files through the FTDI or the SPI or even I2C from an Arduino?

    I’m using an Arduino Due and would like to be able to trigger more than 16 files from the Due without having to use multiple boards, and even though the Due has a lot of pins, and runs fast, having 16 or more wires is a lot of wires, especially if I can reduce the number of wires to four or five. I also want to be able to trigger multiple files simultaneously and would like to dynamically impose small delays so I can use one file for one ear and another file for the other ear and play with the stereo effects. But right now I really really would like to know how to trigger WAV files through the SPI or the I2C from an Arduino.

    • If you want to control the WAV Trigger from a computer using the FTDI Basic, the serial protocol is documented in the User Guide (link above), and there is a sample remote control application (cross-platform, Windows and Mac). The source for that is here.

      If you want to control the WAV Trigger from an Arduino, it will be through an async serial port, using the same serial protocol. The WAV Trigger does not currently have an SPI or I2C interface. I’ve started working on an Arduino serial library and you can find that here. It’s a work in progress, but it should do what you want already.

      The serial library currently only sends commands to the WAV Trigger, so it only requires 2 wires: GND, and TX from the Arduino to RX of the WAV Trigger.

      • Thank You,

        I saw the project with the Arduino Yun but until your last post I was mot sure about the wire connections. Since the Arduino Due would be damaged by having 5 volts on its pins.

        So do I need to use a logic level converter or does the TX/RX work on 3.3 volts? I think the YUN is 5 volts.

        I guess I’ll start out with the logic level converters because I don’t want to risk burning out the Due.

        However If you can tell me if I can get away without using logic level converters, that would be very helpful.

        • A little confused by your question. The WAV Trigger inputs are 5V tolerant, so you can drive its serial RX input with either 5V or 3.3V. The WAV Trigger serial TX output is 3.3V, and so should work with any Arduino RX input. The library currently only sends TO the the WAV Trigger, so you just need to connect 2 wires: GND and the Arduino TX to the WAV Trigger RX. Either voltage is OK.

          • I got it to work on Serial3….The Due has three additional Serials so I did not need to use the AltSoftSerial that you have in your Arduino Library. So after I removed all the references to AltSoftSerial and changed “WTSerial” to “Serial3” it works, as you said it would.

  • The prolific issue (few posts down) seems to be no more. After spending 2 hours trying to reinstall an old computer with an actual serial port, I decided to try one more time in the same configuration that I tried before, given that I haven’t been working on the project for over a week. BAM, first try it worked. I figured it would be a lucky accident, given that it had worked once before (I believe for the upgrade to 0.57), and then never again to 0.59 until now. When I came back to the forum to report this, I noticed that 0.61 had been released so I figured I could try it again. Flawlessly. No idea what’s different now, it’s the same USB port, same operating system and same prolific driver.

    Thank you so much for the improved serial buffer, sending 4 commands back to back works like a charm now. Thanks!

  • I purchased and received this board a few days ago and have been unsuccessful in making it work. I have inserted a microSD card loaded with WAV files that have been properly formatted and named and have connected the T1 trigger to it’s ground connector and have attempted to power it using the barrel jack connector to no avail. Alternatively, I have tried powering the board using the FTDI port and while the port itself lights up when connected, the WAV trigger is still entirely unresponsive. When attempting to use the firmware, the programs will show that there is a USB connection being made, but it will not register that the board is actually present. Have I missed a step somewhere along the way or is it possible that the board is defective? Any advice would be greatly appreciated, as I’ve scoured both the sparkfun and robertsonics user guides and cannot figure out the issue. Thank you!

    • There’s a single red LED on the WAV Trigger. When you apply power, the LED should blink 3 times if there’s a microSD card installed with at least 1 WAV file, or give one long blink if not. In either case, afterwards, the LED should flash once about every 3 seconds. The most likely reason this would not be happening is that the switch is in the “load” position. Please confirm your switch is in the “run” position.

      A customer did mention to me that his board was shipped to him with the switch in the “load” position, which could definitely cause some confusion.

      • The switch is definitely in the “run” position and there is still no response from the LED. The only I’ve managed to get from the board has been to heat up extremely quickly and then proceed to smoke when plugged into the FTDI port.

    • I’d try first of all try to make the board work without using serial communication to check if your power supply works. The board should have a red LED that flashes every second or so, even if you have a problem with the files or sdcard. Like suggested, you need to put a drop of solder on the jumper to make it work over the ftdi header.

    • The board can not be powered over FTDI without first soldering the 5V jumper that’s near the speaker +- connections. If you power it this way, don’t power it from a barrel jack at the same time. Try this and see if your board starts working correctly. If so, you might have a problem with the power supply that you’ve been connecting to the barrel jack. Also, make sure that your power supply outputs between 6-15V and can output at least 300 mA to be on the safeside.

      • I soldered the 5V jumper and powered it over FTDI and it still is unresponsive. The barrel jack power supply that I’m using (but not at the same time as FTDI) outputs 12V and 1A and it also remains unresponsive

        • Do you see the red LED? Make sure that your barrel connector has the 12v on its center pin, too.

          • The barrel connector has 12V on its center pin and there is still no red LED flashing anywhere on the board when it’s been connected to either of the power supplies

            • Ok. If you have a multimeter, check if there is 5V on the ‘output’ pin of the LM1117 regulator (right next to the barrel connector, with 3 pins on one side and 1 on the other.) Measure between the single pad and the metal SDcard socket.

              • It’s measuring at 4.06V

                • Ok, that should be good. The next step would be to see if there’s 3.3V on the MIC5323. It takes the 5V from the LM1117 and generates a 3.3V source. It’s the chip to the right of the regulator that you just measured, but a lot smaller. 3 pins on the upper side and 2 on the bottom side. Measure between the right pin on the bottom side and the SDcard socket.

  • Thank you for that. Yes, what I really need is, once a track is initiated, all triggers to be inhibited until the current track is finished when they become potentially active again. As I mentioned,its working, but because the other buttons are currently able to interrupt, I can imagine punters just whacking away at random buttons if they are not interested in the track playing. There are several commercially available boxes which are specifically designed for museum situations but like all ‘niche’ products very expensive.I love this thing so hope this is do-able without delving too far into the ‘innards’ (I’m still, sorry to say, stuck in the analogue world) Richard

    • Why don’t you contact me directly at info(at)robertsonics(dot)com and we can take this offline.

  • Trigger inhibit:

    Hi just got hold of Wav. Trigger and struggling a bit to assimilate it all. Fairly electronics savvy but ‘old- school wrinkly’ so please bear with me. Urgent museum display job requires 8 button, one track per button sound clips. Can I inhibit the other channels from triggering until active track is finished? Currently with retrigger and polyphony disabled on each channel its working , but can imagine kids playing havoc retriggering. It may be acceptable to customer but it would be nice to get it right. I should say this is a standalone job ie no serial control or suchlike. Oh one other thing, with smoothed unregulated 10v supply, 8ohm speaker and amp enabled the 1117 regulator seems to get pretty hot. Is this normal? Thanks all, hope thats not too dumb. Richard

    • The problem with polyphony is that there are too many possibilities. With retrigger and polyphony disabled, you want to prevent a trigger from acting if any audio is playing, not just audio started from that trigger? I’ll need to confirm how that situation is currently handled, but I should be able to help you out there in any event. It may require a firmware update.

      Regarding the regulator, if you’re planning to play loud audio using the on-board amp on a pretty continuous basis, and especially if you are also packaging the unit into an enclosure, I’d recommend using a 6V supply.

  • For those of you interested in trying to get more than 8 stereo voices, there is a so-far undocumented init file command that will let you experiment with more. “#VOIC n”, where n is desired number of stereo voices, allows you to increase the number up to a maximum of 16. You’ll need to add this command to an existing init file using a text editor, since the WT-InitMaker app does not support it. You can confirm the setting using the WT-Remote app - the “Get Info” button reports the number of available stereo voices.

    In most cases, it’s probably safe to increase the number of voices to at least 10. 8 was chosen as the default to be compatible with the slowest microSD card I’ve encountered. I have a card that handles 12. Without a scope, you’ll know when you’ve hit the limit for your card when you start to hear crackling or pops when layering the max number of voices. For those of you with a scope, PC15 (pin 4 on the STM32F4) duty cycle indicates the amount of time taken by the mixer. 100% is bad.

    The limiting factor for the number of voices is what I call the “access time” of the microSD media, which is different than the sustained bit rate used for the speed ratings. Unlike sequentially reading a single file, mixing WAV tracks involves reading a small number of sectors from files spread all over the FAT disk. The critical issue is the time it takes between asking for a new sector read and when the card starts providing that data. I’ve not found this parameter to be documented by the microSD card manufacturers, so you’ll just have to experiment with it.

  • I’ve got a problem to load the new firmware. I remember that I had a similar problem when I did the first firmware upgrade, and then all of the sudden it worked without changing anything significantly. I’ve tried it several times now without succes.

    First, I confirmed that my hardware is functioning correctly. Using the WT-Remote app, I can remote the wav trigger. I can also get info back from the wav trigger (version number, number of tracks currently playing), so I’m prety sure that there’s no problem there. Then I disconnected the wav trigger from the power supply, put the switch in the ‘load’ position, and pressed the ‘program’ button in the WT-Flasher app as soon as the board was back on power. The thing keeps on telling me that it was unable to speak to the board. Same result with the previous version of the flasher (20140209). I didn’t put in a microSD card so everything should be on 57600 kbaud. I changed this under device manager in the USB-to-serial adapter as well. Same result.

    Any suggestions?

    • There are hints that others have experienced this, so something definitely needs looking into. The WT-Flasher app communications directly with the STM32 bootloader, which does not depend at all on the init file. The bootloader implements auto-baud rate detection and the WT-Flasher app forces the baud rate to 57600. The problem has to be with the WT-Flasher app and/or the combination of computer and serial interface it’s running on.

      What USB serial interface do you have? Does it have TX/RX LEDs? If so, do you detect activity on either one when you press the “program” button? I assume you are on Windows, not a Mac. Anything more you can tell me? If you can get to it work, let me know what you did differently. I need to duplicate the problem, but have never had it happen.

      • I’m on Windows 7, and using a generic USB-to-Serial adapter with the Prolific driver. This is a driver I have used very often and never had any problems with. The adapter doesn’t have any TX/Rx leds, so that’s a dead end. I’ll try looking with my oscilloscope what happens and let you know. I’ll let you know if I have made any progress. Thanks!

        • Aha! - the one other person reporting this problem is also using a Prolific-based USB serial adaptor. I suspect driver related timing issues with the initial bootloader handshake. Probably need to get one of these adaptors to troubleshoot. Thanks - that was helpful.

          • Excellent. I’ll try with another adapter tomorrow.

            • I procured a Prolific PL2303HX-based USB-to-serial TTL adaptor and just tried it. Using WT-Flasher v1.02 on Windows 7 with the latest Prolific driver, it works fine. If you can provide any more info, I’m happy to do more troubleshooting, but so far I can’t duplicate the issue.

              • Thanks for the reply! I checked my driver and had already the latest version ( Actually, I’m using a USB-to-RS232 adapter instead of a TTL-version. I convert the RS232 lines with a MAX233 IC. Maybe that has anything to do with it? In any case, using a terminal program or your Serial test program, all the communication works fine. Very strange. Maybe it has something to do with the procedure? In what timeframe do you have to press the ‘program’ button after startup? I try to push the button as soon as I put the power supply on, but I might be to late/early? On my system I was able to upgrade to version 0.57 a few weeks ago, after a few tries but so far no luck. I haven’t had the chance to test with another system but can probably do that in a few days (I have to recycle a computer from my basement..).

  • Thanks for your help, your tip about the firmware was spot on. I updated to .57 firmware and it worked. So I re-downloaded the.59 firmware from your website and installed that. Now everything is working great and thanks again for making the firmware change so that files do not loop automatically. I was at the .56 version of firmware so I do not know if upgrading to the .57 and then .59 version is what fixed it or if maybe I just had a bad firmware file. I did notice that the .59 firmware file I just installed took about 3-5 seconds more time to install than the previous .59 firmware version that I installed. This version also displayed more verbose messages regarding the update process In summary, thanks for the quick replies and the help. I am going to use this on my project since the Wav Trigger will reduce the development time significantly. The timing could not have been better.

  • The new software allows me to talk to board serially. In the past, I could not talk to it. I ordered an FTDI basic to make sure it was not my cable and it still would not communicate. The new software resolved that issue since I was on comm port 24. I updated the firmware to the latest version and now the board will not communicate with the Remote software with the switch in run. The ability to initiate manual triggers is lost as well. I added an ini file and a few wav files again to be sure. The button on the board also does trigger any audio where before I think it triggered the first wav file. I put the switch to load, I can install firmware again. I tried to load firmware and then go back to run (power cycle) several times but it still does will not play audio. Due to customer time restraints, I will have to use another product for this project but I wanted you to know the issues that I was having. Once all of this is worked out, it looks to be a nice product.

    • I realize you’re trying to finish a project and don’t have time to deal with this, but I’d certainly like to try and figure out what issue you’re having. I’ve done the exact same procedure here many times without a problem, and I re-tested everything before posting the updates yesterday. The symptoms you describe sound like the firmware update is not working. When you power on the board with a microSD card installed and at least 1 WAV file on the card, what does the WAV Trigger’s LED do? Does the board work if you reload the original firmware?

      If you’d like to send me the board to investigate/fix, please contact me directly. Email in several posts below.

  • New firmware version posted: Edge type triggers no longer loop if held active. Greatly improved serial message processing eliminates dropped commands if sent back-to-back. Continuous input scanning for improved trigger latency.

    Also fixed the Windows apps (Flasher, InitMaker and Remote) to work with COM port numbers above 9.

    Get it here.

  • Wondering if you could get more simultaneous voices if samples were not stereo. Like sample 1 mellotron note on left speaker and next note on the right. I guess it could be done within a wave editor but not sure how usefull it would be, Just thinking out load. I guess you don’t really need more than 10 voices anyway.

  • How hard would it be to modify your design to output to 16 mono outputs?

  • I have an FTDI cable that has the same pin out as the FTDI basic. I can connect the cable to an arduino ethernet (com port 15) and verify a sletch. I use the cable for the wav trigger and it does not even provide power. The only thing I ghet is Com port could not be opened. I have Com 1 on the computer and do not get that message, The software has the test button become active (of course it does not work since com 1 is not used but an actual serial port). I hooked up power to the din jack and it powers up but it still does not communicate. Since I can only do a firmware update via FTDI, I am now stuck. I am honestly thinking of just cutting my losses and going with a wav shield and an Arduino UNO. Your excellent support is the key reason I want to stay with this and make it work.

    • (comment moved down)

    • Do what you think best, but not being able to open the com port sounds more like an issue with the software app rather than with the WAV Trigger. Let me know the make and model# of your FTDI cable and I’ll get one to investigate. Please use the email address I provided in another post to you below.

      • The Windows WAV Trigger utilities (WT-InitMaker_100_20140102.exe, WT-Flasher_101_20140209.exe, and WT-Remote_022_20140209.exe) won’t open COM ports higher than 9 (not string truncation - see below). No worries, we can simply renumber the FTDI’s COM port down to the COM1-COM9 range.

        These steps (based on this comment) will show all devices which have ever been added as COM ports, and will allow removal of old associations to COM Ports no longer used.

        1. Start, All Programs, Accessories, Right-click “Command Prompt” in Accessories and choose “Run as Administrator”
        2. Enter “set devmgr_show_nonpresent_devices=1″ – without the quotes obviously
        3. Enter “start devmgmt.msc”
        4. In the box that opens, in the View menu, select “Show hidden devices” .
        5. Expand the section on COM ports to show all the COM ports that have ever been created. The non-plugged-in ones will be shown in grey. You can uninstall anything that you don’t want (right click, select uninstall).
        6. Proceed with this excellent walkthrough’s step 6.
        • Thanks. I checked, and it’s not string truncation, but rather that CreateFile() doesn’t accept “COMx” when x is greater than 9. But result is the same. I’ll have to change the formatting of the input string variable for all the apps. In the meantime, please try to re-assign your FTDI device to COM 1 through 9, per the excellent instructions above.

    • Did you solder the jumper above the FTDI connector? If you want to provide power through the FTDI Pins that jumper needs to be closed. Be careful not to provide power to the barrel connector at the same time. If the communication does still not work, make sure that you’ve selected the right baudrate (default 57600).

  • I am having a problem with the audio power amp. I can play files using the stereo mini jack just fine. I configured the power amp on in the ini file and connected a speaker to the power amp output pads on the PCB. When I apply power to the board I hear two clicks from the speaker a few seconds apart. However, when I trigger a track I do not hear anything. Any Suggestions???

    • Can’t say with the info provided. How are you powering the WAV Trigger? What’s the impedance of the speaker? After the second click, what is the LED doing? When you trigger a track, what does the LED do? If you enable the amp in the ini file but don’t connect the speaker, does it work? (you can still use the line out jack to monitor.)

      The LED should flash about once every 3 seconds when the WAV Trigger is idle, and be on solid whenever sound is playing.

      • After more investigation,the problem is that there is about 2.25 VDC on the speaker pads. If I power the board up with no SD card there is only about 1mV on the amp output. So it is only when the amp is enabled.

        • Love the board in general but I noticed this clicking and rebooting behavior with an 8ohm speaker connected at powerup. With speaker disconnected, there’s definitely 2.25V driven across the speaker pins at powerup. I’m wondering if the reset behavior is related to no series input capacitor for the LM4990:

          • the TI PCM5100 DAC datasheet states that its output is ground-centered, due to its internal -3.3V charge pump, and it mutes to ground

          • the TI LM4990 amp datasheet shows a 0.39uF non-polarized (ceramic) coupling capacitor in all the examples, and never indicates that the cap is optional. Internally, the amp is DC coupled, so 0V at the amp input will produce approximately ½ * 5V measured across the output pins. So the speaker will see a steady state DC voltage (and hence wasted power) under some conditions, and clipping under others:

          • if the DAC goes into “mute” (0 VDC), this drives the amp’s input to its bottom rail, again putting 2.5V across the speaker

          • Played WAV samples which have a DC offset will bias the speaker. Such offsets are easily removed in, say, Audacity.

          • All DAC excursions driving the amp’s input below ground will result in clipping distortion. Biasing the DAC data so that its output remains in the 0V-3.3V range works, but removes half the DAC’s effective output voltage, reducing dynamic range, and raising the noise floor.

          Best workaround: Solder in a 0.39uF SMT ceramic cap in series with R9 22K (adjacent to the speaker pins), like a pair of leaned-together tombstones.

          Easier but less-good workarounds which produce reduced power and/or reduced voltage range:

          • try speakers with higher resistance (16, 32, 40 ohms) until the reset problem goes away. This gets you some functionality at reduced power.

          • insert a non-polarized 10uF 10V capacitor in series with the speaker to AC-couple it (or use two back-to-back series 25uF caps to create a 10uF “non-polarized” cap). This solves half the problem, but is better than nothing.

          • WT firmware hack: when the amplifier is enabled, never mute the DAC, have I2S run continuously so the DAC doesn’t automute, then “center” the DAC at 2.5V (LM4990’s guesstimated midway input voltage) to produce 0VDC across the speaker output pins. Consequences: A) this will put a DC bias on the headphone/stereo output. So, if amp is on, don’t use headphones. B) this approach consumes more power, due to driving the DAC continuously. C) the playback code should levelshift on the fly, too.

          Ultimately, adding the amp input capacitor is the best solution, as far as I can tell.

          • Lex E, thanks for the detailed post. There’s a trace on the back of the board that makes adding the missing cap relatively easy. Just cut the trace and solder the cap across the gap. I’ll post an entry on my blog with a better explanation and picture later tonight. The board design has already been changed and will get into the pipeline soon. In the meantime, this only affects you if you are using the speaker instead of the line out. Also, many speakers tolerate the DC offset as is, without the reset issue (which I’ve never seen here.)

            Also, if you want to try out firmware that eliminates looping on edge sensitive triggers, email me directly at the address a few posts below.

            • Lex E I looked at the data sheet for the LM4990 prior to my original post and wondered about the direct coupling issue. You nailed the problem and adding the coupling cap appears to be the solution.

              Loudspeakers do not tolerate DC for a number of reasons. I don’t know of any manufacturer that would recommend a DC component at the output of a power amp.

              I believe the issue is directly related to how much quiescent current the LM4990 was supplying.

              I need a few more of these for a project and I will be adding the series cap.

              By the way, thanks for a product that makes it easier for me.

  • Hi, Is there any possible way to reduce latency? 23mS seems a little on the high side. Of course my plan would be to load with Mellotron, optigan, hammond samples, etc…It is hard to tell from YouTube video. Is the latency an issue for you, when you play? Great project!

    • That figure is for the trigger inputs. Serial/MIDI latency is probably closer to 15ms, which is actually very good considering all sounds are played directly from the microSD card. Adding RAM to buffer audio would make this a larger and more expensive product. I found both the piano (triggers) and Mellotron (MIDI) to be perfectly playable - I honestly don’t think you’d notice. I have a real Mellotron and would guess it’s at least as good, considering how that works.

  • The board was going to be used to play a random audio file when 1 of 4 vehicle doors are opened. The trigger goes go low eventually but I have no idea how long the car door will be opened for. The hope was to play the audio one time on each trigger to on event. If all door inputs in parallel then they are wired to one input (random). If each door wired to its own input, then not sure about what happens if they are each programmed to play a specific track. If you think you will do a firmware upgrade, I will order the FTDI basic. I have a USB to FTDi cable that I use for Ethernet Arduino’s. I soldered the 6 pin header on the Wav Trigger but the cable does not work with the Wav Trigger and will work with the Ethernet Arduino.

    • The WAV Trigger should work fine for your intended application. I’ve already fixed the edge-triggering so that it works the way you want, though I won’t release a new firmware version until I do a few other things. If you contact me directly at info(at)robertsonics(dot)com, I can send you that change now so you can test. Also, the FTDI cable ought to work. Compare the pinout of the cable to the SparkFun FTDI Basic, which I know works.

  • When a trigger is active, the audio file assigned to that trigger keeps repeating as long as the trigger is on. I need a oneshot function where it plays once each time the trigger goes low to high. I thought this would be edge triggered but not the case. I really do not want to resort to using an Arduino as well since I bought this board to eliminate the Arduino from the customers application. Any work arounds?

    • This is inherited from the MP3 Trigger, where there was no “level” triggered option. I can see that with a separate level trigger option and the addition of polyphony, this is probably not the optimal behavior for the WAV Trigger. I believe I can change this and push out a new firmware revision. You’ll need a serial connection (e.g. FTDI Basic) to update your board(s). In the meantime, I assume the trigger goes inactive eventually - Can you simply add silence to the end of the track that allows time for the trigger to go inactive?

      • Thanks Jamie. I second the request for true one-shot behavior. Changing the “edge” behavior not to loop would settle the issue that 518170 and I are having. For my application, the WT is being built into an existing, unmodifiable, sculpture with rocker switches. True one-shot behavior so desirable, I considered using external quad one-shots.

  • Is there any chance that 2 different boards with the same trigger will play the songs at the exact same time? I’d like to have 4 different outputs…

    • Depends on what you mean by “exact”. The triggers are scanned and denounced at around 5msecs, so there will likely be a few milliseconds of variation in when the two boards catch the trigger. From that point on, crystal frequency variation will mean that playback won’t be precisely the same. If your song is longer than a couple of minutes, I would expect some relative drift. This would be true of any two sound sources running on different crystals.

    • Yes, if you’re using a microcontroller, you can have it trigger songs on two boards at the same time (well technically a few microseconds apart). I don’t know what you mean by 4 outputs though, 4 boards?

      • I mean that I’d like to make 2 different wave files, each one with different things in each channel (left-right), and trigger them at the same time so: one channel will go to the drummer (like a metronome) while other 2 channels will go to the audience. Like this, we can play effects during a song while the drummer sticks to the rythm.

        • It might work well enough for that. There will be a variable difference of anywhere from 0 to 5 ms in when the tracks start. Then there will be drift over time because of the different crystals. With a 50ppm crystal, that translates to a worst case of about 35ms at the end of a 3 minute song. So if you can tolerate differences that amount of time, then it could work. Depends on how good your drummer is.

          Again, this is an issue with any piece of gear that produces audio, not just the WAV Trigger. That’s the reason for synchronization methods like SMPTE, word clock and MIDI Time Code.

  • Good day: is it possible to momentarily trigger a wave file, and have it play the entire file, then stop, and wait for another trigger? Thanks.

    • It will do that automatically. Or do you want to disable other triggers while the first file is still playing?

      • Thanks. I just want to momentarily hit an input, and have the unit play an entire file. Then I want it to just wait for other buttons to play other entire files. Sounds like this is normal behavior?

        • I would add that you should review the “Trigger Options” section in the User Guide

        • This is the default behavior indeed. Without a init file (standard), the player will play track 1 when you connect trigger 1 to GND (each trigger has a GND-pad for convenience), track 2 for trigger 2 and so on. However, as it is polyphonic, it will also start playing other tracks if additional triggers occur, even when the first track is still playing. If the same trigger occurs again during playback (eg, you press the same button again), the board can be set to restart the track. When nothing is playing, the board is in idle and just waiting for a new trigger to happen. So, in short, it will do what you want if you only press the button when nothing is playing. If you press WHILE something is playing, additional tracks can possibly start, or the current track(s) might restart.

  • It would be great to have the same procedure for firmware update like on mp3-trigger. Thus, there would be no need for a FTDI interface for “normal” use. Another question: if the internal power amp is enabled, are both channels (left and right) automatically mixed to have a mono signal on the speaker? If not, it would be very useful to have a mono option in the global settings, because otherwise only the left channel can be heard.

    • Currently, the on-board audio amp outputs the left channel only. Also, mixing a stereo pair to a mono signal does not always produce the desired results, particularly if there are phase differences in the left and right signals. My thinking is that you would likely use either the stereo line-level output or the audio amp but not both. When using the on-board amp, it’s easy enough to edit the wave file so that the left channel contains whatever you want.

      Both of your suggestions are good ones, however. I hope to implement a microSD card bootloader at some point, but I’m prioritizing features that don’t currently have existing alternatives.

  • @robertsonics : I’ve got great success using WAV Trigger with Arduino (Mega). I use your Online User Guide which is great. (I later found your arduino Library). Thanks for your work.

  • What would be the best way to trigger 4 tracks at the same time? At 9600 baud, adding a CRLF (0x0D 0x0A) in between the ‘play polyphonic track’ does the trick, but at 57600 baud it seems to miss the second trigger. I could obviously wait a bit longer in between commands, but it’s important that I keep the 4 tracks synchronized. Or is there a command available to tell the board to start playing track 1-4?

    • There is not yet a “start group” command, though that’s probably something I should consider. My guess is that at 57600 baud, you’re filling up the WAV Trigger’s serial input buffer by sending the commands back-to-back. I’d suggest experimenting with even a millisecond delay in between the commands.

      • Thanks! That “start group” command would be awesome :-)

        • Better late than never… The latest firmware version (0.59) implements buffered serial input to prevent missing commands when they are sent back-to-back. This isn’t the “start group” feature, but it should allow you to send a number of play commands as fast as the baud rate allows. I’d recommend 57.6k which should reduce the total time to send multiple commands.

          The new firmware’s serial input buffer is 256 bytes, so it should buffer at least a dozen or more commands.

  • I’m having some problems trying to communicate with the wav trigger over the serial protocol. I’m using a standard USB to RS232 adapter, and pass the Rx/Tx to the FTDI header through a MAX233 UART. It might simply be my adapter that is broken. However, if the init file on the microSD card has a baudrate setting of say 9600, would for example the WT-flasher utility still be able to communicate with the board? In the flasher utility it doesn’t give me the option to change to baudrate, it seems locked at 57600.

    Also, version 1.01 of the flasher is in your zipfile still called WT_Flasher_100_20140209.exe . Just telling to help :)

    • Not sure from your description, but you know not to apply RS-232 signal levels to the WAV Trigger’s Rx/Tx, right? I’ll assume that the MAX233 converts the RS-232 levels of your USB adaptor to logic levels. Otherwise, you will damage your WAV Trigger.

      The flasher utility is locked at 57600 because it talks to the bootloader, which does not read the init file. However, both the InitMaker app and the Remote Control Demo app also communicate serially with the WAV Trigger and I believe that one or the other (or both) allows for doing so different baud rates.

      I’ll check and fix the filename. Thanks for the heads up.

      • I think I might have found a bug in your WAV Trigger Serial Control v0.22. When I don’t have a micro SD card inserted and I press the ‘Get Info" button, it displays the firmware version, number of stereo voices and number of wav tracks. It won’t however do this when a card is inserted. The problem seems to be repeatable. Or maybe I’m doing something wrong (1:15AM in Belgium..:))

        • I’m guessing there’s an init file on your microSD card that is changing the baud rate from the default 57600. I’ve used this feature enough to be pretty confident it works.

      • You are right about the MAX233. It is a dual RS-232 to TTL converter (in both directions). I just got it working 30 seconds ago, I accidentally bridged the TX of the Wav trigger to GND, that’s why it didn’t talk back :-)

        All good! Thanks!

  • I don’t suppose it’s possible to navigate to a certain point in the wav files? Say, a serial command telling the player to jump to 1:13 on track 1?

    • It’s not currently an option, though technically feasible. The issue is that seeking to a particular point in a file is a time intensive task, and it may be hard to do without interrupting audio (another track or tracks) that might be playing. If you were willing to only do this only when no tracks were playing, it would be easier.

      • Ok, that would not be an issue for my purpose I think. Would it require a lot of time for the processor to do this on multiple tracks, if nothing is currently playing? So: stop all tracks, jump all 8 tracks to 1:13 and when done, continue?

  • Hello A very simple question before i decide to purchase this. Can this run off a 9V battery or does it need to be plugged into a wall plug? Thank you very much

    • It will run off a 9V battery, just a matter of how long your battery will last. Keep in mind that it draws about 80mA when quiet, around 115mA when playing, and more if you plan to use the on-board speaker amp.

  • Is there a serial command available to mute specific tracks? Or do you just have to turn the volume down? I’d like to start a few tracks together, and mute/unmute one of the tracks on the way.

    • Setting the track volume to -70 (dB) is the same as muting it. Depending on what you’re trying to achieve, you may want to ramp the volume up and down over time to produce a smooth fade in and fade out - Increase or decrease the volume by 1 count every 20 or more milliseconds. I plan to add track volume fades with adjustable fade times to the Arduino library, but for the time being, you’ll have to roll your own.

  • I just uploaded an initial WAV Trigger Arduino serial library to GitHub, along with a sample sketch for the YUN that uses the library to provide basic track control via a browser interface. I can start, stop and control the volume of tracks from my phone over my home wifi. All very preliminary, but wanted to post something sooner than later. Perhaps I can enlist some help on the html/CSS end of things for a better UI. Info, a pretty picture and links here.

  • Apparently the Sparkfun MP3 Player Shield and the MP3 Trigger have a “ground loop” vulnerability when connecting a power amplifier to the speaker connection. The fix for this problem (as documented by VLSI) requires the addition of two capacitors and four resistors to the speaker output lines. Does the WAV Trigger have a similar problem? Is it safe to connect the headphone and speaker output to an amplifier or powered speakers without the risk of a ground loop (or anything similar) that could damage the board? I am aware that you can enable/disable the onboard 2W mono amplifier, so of course the question regarding the speaker output assumes no onboard speaker amplification.

    • The issue you refer to is specific to the VLSI MP3 decoder’s analog output, which is designed specifically to drive ungrounded headphones. The WAV Trigger uses a TI stereo DAC which has unbalanced, ground centered, line-level outputs designed to connect to grounded external equipment. It also happens to be hot enough (2.1V RMS) to do a good job with headphones as well.

  • Hmm.. I’ve got something strange going on. I’m not able to play a certain .wav file with the wav trigger. I made sure that the file is 16 bit, 44100Hz, and I named the file “001_Number.wav”. The file is 36165Kb in size. Using the test files on Robertsonics website, everything works as expected, including the push button and 16 trigger contacts. However, when I replace his original “001_Number.wav” with mine, it doesn’t work anymore, there is simply nothing happening anymore. And neither for the 15 other tracks. I must be doing something wrong. I’m sure I didn’t accidentally name the file .wav.txt or whatever, a normal media player on my PC plays the file just fine. I’m not using any config file for the moment. Any ideas? Thanks!!

    EDIT: I have to mention that I’m using the firmware as it was flashed at Sparkfun, I still have to make up the hardware to flash the newest version.

    • Most likely, your wav file contains meta-data before the actual audio. The current firmware expects the chunk that contains the audio to be immediately following the wav header, and will abort the playback if not. Most audio editors provide some form of “exclude non-audio data” option when you export the wav file. You may need to open the wav file, and re-write it with this option. In Audacity (free), when you export to wav, there’s an “Edit Metadata” dialog as the last step - just make sure there’s nothing there. In Adobe Audition, there’s a checkbox “Save extra non-audio information” that you want to be unchecked.

      This short video may help.

  • Hi, I’ve got a question about the hookup to an Arduino for Tx and Rx. If the arduino (or the Atmega328 for that matter) runs on 5V, can it still be connected to directly to the Rx/Tx? Or does this really need to be 3.3V?

  • Hi, please can someone post a simple arduino’s sketch showing the commands to control the volume of a single track in its entire range? Also, can I connect directly the Arduino’s Tx/Rx pins to the WavTrigger? Thank you!

    • I was just working on this over the weekend, but don’t have anything posted yet. As Jordan says, you can directly connect the Arduino Tx to the WAV Trigger Rx, and you also need to connect the grounds. Default baudrate is 57600. To control track volume you need to send 9 bytes using Serial.write(). The command includes the 2-byte track number as well as a 2-byte signed gain value, ranging from -70dB to +10dB. The exact message format for all the serial commands is here.

      I’ll try to get a complete example sketch up by this coming weekend. In the meantime, the example remote control app for OSX and Windows implements this command for individual track volume control.

    • I don’t have an example Arduino sketch for this purpose but the WavTrigger’s home site has a section about the serial commands for controlling the board. You will essentially use the serial library of the Arduino to send a command (a sequence of bytes) to the WavTrigger as well as receive information back.

      Yes, you can directly connect Tx/Rx of the Arduino to Rx/Tx of the WavTrigger. Make sure you connect GND as well.

  • Can I use it in a project of electronic drums?

    • If you have a bunch of recorded drum samples, you can certainly use this product to play and mix them.

      Alternatively, if you have a way of getting output from a set of drums, you could use them as the triggers to have the board play recorded sounds of your choosing.

  • What is the latency?

  • Is there a signal to indicate when a file has finished being sent? I want to link a number of short phases together like the digits in a number. Can I do that?

    • There’s a digital output (PLO) that indicates whether or not any sound is currently playing - but that won’t tell you when a particular track finishes unless that track happens to be the only one playing. Remember, there can be many tracks playing at the same time independently. There’s also a serial command which returns a list of the track numbers currently playing that can be used to determine when a particular track is finished.

  • I need more than 8 channels of polyphony. It would be great if you had a way to daisy chain the boards to a single output without using an external audio mixer. Also, where can I find which MIDI messages you support? It seems Note on/off, Velocity, and Channel.

    • How many more? There’s an init file setting that lets you increase the number of voices up to 16, but you’ll be limited by the speed of your microSD. It’s the actual access time of the card that matters - not the speed rating. I have at least 1 card that can support 12 voices. Also, remember that they are stereo voices.

      Currently, MIDI Note-On/Off messages are mapped to track numbers, and the Note-On velocity determines the track volume. The MIDI channel number (0 - 15) is multiplied by 100 and added to the note number, so that each channel maps to a different group of track numbers. MIDI Controller number 7 controls the WAV Triggers mixed output volume. I plan to extend and better document the MIDI support in upcoming firmware releases.

      • I have built (iterating) a harp simulator for professional concert harpists to practice in silence. The arpeggios are the problem– Ideally it would be 47 channels of polyphony. Probably I can live with less, I just don’t know how much less. Worst case I can build/buy an analog mixer with 4 to 6 of your boards.

        FYI, for my existing application, your existing MIDI functionality will be sufficient for my application.

        • Well, 47 voices is certainly beyond anything that plays audio directly from microSD media - the interface is simply not fast enough. You’d need the all audio loaded into RAM, which means you’d need a ton of RAM. Does it need to be an embedded unit? I don’t know what your design constraints are, but I’d at least consider a little intel NUC running embedded Windows and a VSTi sampler.

          • Have you seen or compiled a list of uSD cards and their access times? Or is such a list doomed to be instantly wrong, due to specifications being “subject to change without notice”?

            • Interesting question. I don’t think this parameter is specified by any manufacturer. Speed ratings are generally concerned with sustained bit rates when reading consecutive data from a single file. SD cards support multi-sector reads, where you’re hit with the “access time” only once, and then you can keep reading consecutive sectors at the max SDIO bus speed. I have found that the faster cards support faster SDIO bus speeds, but don’t necessarily have faster access times.

              The WAV trigger can only read 4 sectors at a time from each track, because it has to mix up to 8 tracks with low latency. That means it takes the “access time” hit every 4 sectors, times the number of tracks that are playing. It adds up quickly.

              To answer your question, no - I don’t believe this value has been compiled anywhere, and I only measured the half dozen or so I have in my possession. Interestingly, the fastest one was an old MicroCenter branded 2GB card made before speed ratings.

  • Any chance the WAV Trigger firmware itself can be open sourced? I would love to have a few more features on this, including the ability to write WAV files to the SD card over serial, as well as increase the number of supported samples.

    • Probably not any time soon, but I’d never say never. In the meantime, you can write your own code (the free Keil MDK-ARM IDE is a good place to start) and use the WAV Trigger firmware update utility to flash it into the board.

  • pretty cool,.. the demo video shows how you can make a mellotron

    some suggestions: settings for allowing you to loop the wav when the key is trigger down. this would be good if you wanted to make an optogan type of instrument

    option for monophonic/polyphonic and to mute playback when the trigger is not pressed

    add a mic/aux in and ADC so you can sample sounds without having to use the computer,..this could work like a casio may be possible to have multiple samples loaded on one keyboard this way as well (you could tell it to sample for a specific key range, take the sample, then it changes the pitch(speed of wav playback?) for that range)

    • It can already do these things. Setting the trigger to “level” instead of the default “edge” will loop the track as long as you hold the trigger down and stop it as soon as you release it. For the demo video, I added silence to the end of the file so that the sound ceases prior to reaching the end of the file - you don’t want a piano note (or Mellotron note for that matter) to loop.

      Each trigger can also be set to monophonic (solo) or polyphonic operation, among other things. Check out the User Guide for all the trigger options.

      Adding audio input and recording capability would make this a different product - it’s really optimized for playback.

  • Maybe I misunderstood the user guide in the serial communication section, but seems that I can not change the volume of a single file while it’s playing. It’s correct? In the application that I would like to create, an external micro controller should be able to simultaneously start two or three audio file and in real time change the volume of each track, not only of the overall volume output. So I need to perform some sort of cross-fading or real time volume adjust. A little extra could be the possibility to turn on / off the power speaker via the serial interface. This board can do this?

  • is there any data on the delay between a trigger being received and the onset of the appropriate sound?

    • Yes - this is address in the FAQ on my product page. From a trigger input, it’s typically around 23ms, 28ms max. This assumes that you’ve edited the WAV file to remove any silence at the start of the file.

      Using the serial protocol, or MIDI, it’s likely closer to 18ms since the action is handled by an interrupt, rather than polling.

Related Products