New WAV Trigger features

I’ve just finished adding a bunch of new features (and one bug fix) to the WAV Trigger firmware. Version 1.30 includes the following changes and enhancements:

  • Increases total supported track count to 4096 – double the previous 2048 tracks.
  • Increases total MIDI Banks to 32.
  • Trigger Banks – map triggers to different banks of 16 tracks.
  • Voice Lock – when starting a track using a trigger or serial command, you can specify the track to not be used by the voice stealing algorithm. This lets you, for example, start a backing track and then play MIDI without risk of cutting off the backing track.
  • New serial reporting mode – The WAV Trigger can now be set to send track status messages whenever a track starts or stops.
  • True MIDI Channel/Omni – The WAV Trigger can now be set to respond to only a specific MIDI channel, or to Omni mode (all channels.)
  • Improved performance and timing of volume faders.
  • Fixed bug that allowed re-triggering when both Re-Trigger and Polyphonic trigger options were de-selected.
  • Fixed sample-rate offset algorithm to allow full 2X up.

I’ve also update the WAV Trigger InitMaker app to v1.20 support the new options. The screenshot below highlights some of the new features, and the app now (finally) sports it’s own application icon.



If you’d like to help me test all this, the links below will get you preliminary releases of both the new WAV Trigger firmware and InitMaker app. Please let me know here if you discover any issues with either.

WAV Trigger Firmware v1.30b (beta) hex file (zip)

WAV Trigger Init File Maker Utility v1.20 – Windows executable (zip)

WAV Trigger Init File Maker Utility v1.20 – OS X (10.6 and above) Install Image (dmg)

Finally, I’ve also revamped the Arduino Serial Control Library to take advantage of the enhanced features. A new advanced example sketch demonstrates how to put the WAV Trigger in reporting mode and use the library to find out when specific tracks have completed or stopped. Get the updated library here.


  • reply Richie ,

    Love your work Jamie!
    Thank you for giving us such an accessible way to handle wavs… and it sounds great!
    The wav trigger is comparable to a big rack mount sampler like an EMU, but in a pocket sized card… I really love it and look forward to the Tsunami, needless to say the Carina looks amazing.
    I have a question for you… I want to use the wav trigger in an embedded project… a midi instrument actually… but I really want to be able to run it through multi fx … especially stereo delay + reverb… and a stereo limiter… (chorus I can simulate with the wav trigger by triggering a second instance of the sound just after the first, and panning them etc… distortion I can prepare in the studio and have a distorted version of the sound… but delays are tricky) I am wondering if you know of a light weight dsp board that would go nicely with the wav trigger to achieve delays + reverbs? preferably something small like the wav trigger?
    Or perhaps the Carina will be ready soon? 🙂
    Thanks for your time,

    • reply Jamie ,

      Hi Richie,

      Thanks for the kind words. You could perhaps find one or more small guitar stomp box products that have the effects you want and repackage the electronics. There’s also the Teensy Audio Board and its library, but that would involve programming and I don’t know how extensive the DSP library really is.

      I haven’t finished publishing the specs yet, but the Tsunami actually has a stereo audio input. The first firmware release will focus on extending the audio player features to more outputs, but I’m hoping future releases will include applications for audio input, including DSP effects. The Tsunami also implements firmware updates directly from the microSD card, making it easier for me to support multiple applications.

    • reply Funken ,

      Tsunami looks really great ! can we just plug a midi keyboard direct to the the tsunami board (like arturia Keystep for example) ? and last one, do you have a release date ?

      • reply Jamie ,

        As long as your keyboard has a MIDI Out (not just a USB connection) you can plug directly into the Tsunami and rock. Because the Tsunami doesn’t have a 5-pin DIN connector, you’ll either need to make an adaptor or do what I do: Just cut the end off a MIDI cable and connect the only 2 wires that matter to the Tsunami MIDI In connector. I’ll post how to do this before Tsunami ships.

        I can’t give you a solid release date due to parts availability and SparkFun’s production lead times. Given my current info however, it’s possible it could be in stock and shipping by Feb 1.

      • reply Pascoal ,

        Hi Jamie,

        Message when I start the program WT-InitMaker_v120_20161111.exe

        In WinXP ……. it is not a valid application for Win32

        Do you have a solution?

        Thank you

        • reply Jamie ,

          UPDATE: I re-compiled with the XP compatibility switch enabled and tested it on my XP virtual machine. Seems to work fine. New version is now linked above and on the download page. Give it a try and let me know.

          I think the issue is that I switched to Visual Studio 2015 and need to tell it explicitly to build for backwards XP compatibility. I’ll re-compile and post an update later today or tomorrow. Sorry about that.

        • reply Pascoal ,

          Hi Jamie
          Now it’s perfect
          Thank you for your dedication.

          • reply Pascoal ,

            Hi Jamie

            When you say…………Trigger Banks – map triggers to different banks of 16 tracks …….

            I Will have 256 banks with 16 tracks?


            • reply Jamie ,

              Currently there are 32 trigger banks of 16 triggers. The default bank maps the triggers to tracks 1 – 16, the next bank maps the triggers to tracks 17 – 32, the next to tracks 33 – 48, and so on.

            • reply djsoulmachine ,

              Hi Jamie!

              I’m proud to share with you my project embedding your amazing Wav Trigger, a digital Mellotron M400 with some cool added features! Still need to to rebuild the original woodcase though…

              Hope you’ll enjoy it!
              Nothing would have been possible without you and I’m definitely looking forward to the Tsunami!

              Thank you so much Jamie!

              PS : Will I be able to upgrade the WT firmware to 1.30b without having to change the sound files number and/or my Arduino code?

              • reply Pascoal ,

                Hi Jamie,

                For new firmware – 5V or 3.3V

                SparkFun FTDI Basic Breakout – 5V – DEV-09716 – SparkFun Electronics
                SparkFun FTDI Basic Breakout – 3.3V – DEV-09873 – SparkFun …


                • reply Jamie ,

                  Either one. I use the 5V only because I typically close the 5V solder jumper on the WAV Trigger which allows the FTDI Basic 5V to power the WAV Trigger.

                • reply Corey Mutter ,

                  In 1.30b I found the track banking feature to work just like I’d expect – I have 10 “normal” triggers for tracks 1-10 and “next group” and “previous group” triggers. When I trigger “next group” then 1-10 start tracks 17-26, then 33-42, etc.
                  I have a trigger set to randomly start a track in the range 1-10 and the banking doesn’t affect that, though, it always starts something in the 1-10 range.
                  For my application it would be better for it also be offset with the bank, but that might not be better for all applications.

                  • reply Jamie ,

                    That’s the intended behavior. Trigger functions that allow track ranges are not affected by the trigger bank. The ranges can be any size, including much larger than 16 tracks, and having those shift would be terribly confusing.

                  • reply Let’s Talk Tsunami! – robertsonics ,

                    […] have enough memory to support true seamless looping (which requires more buffering per voice.) With the latest WAV Trigger firmware release, I feel as though I’ve reached the performance limit for this […]

                    • reply Pierreko ,

                      Is it possible to play 5.1 audio file with the Tsunami by trigging 4+1 audio files ? What about the decay ?

                      • reply Jamie ,

                        Yes. It’s currently possible using the serial protocol and Arduino Library. With the mono version of the Tsunami firmware, you can load all 6 tracks and specify the output for each, then start them all in sync with the resume command. But this is such a good idea that I’ll modify the new “Synced Pair” to be a “Synced Set” so you can do this using a trigger.

                        I don’t understand your question: “What about the decay?”

                        • reply Pierreko ,

                          I was thinking about the decay between each track but you answer my question ! It’s really interesting, it’s exactly what I’m searching to do… Do you already think about a way to upload the tracks with a mass storage system ?
                          thanks a lot !!

                          • reply Jamie ,

                            Tracks are played from a FAT formatted microSD card. You just pop the card into your Mac, Windows or Linux computer and drag the wav files onto it.

                            I had planned to support Mass Storage Device transfers over the USB port, but due to a bug in the Atmel SAM S70 (they call it “errata”) I couldn’t support both USB and hit exact audio sample rates (44.1kHz). It’s a long story, but the upshot is that providing USB would have meant that the audio would have been out of tune by some number of cents, which was not an option. Perhaps someday when there’s a fixed rev of the S70 and we can do a board design update, but for now you still have to put the card in your computer.

                            By the way, It would be great if further discussion about Tsunami could be in the post I specifically created for it:

                            • Pierreko ,

                              Yes I understand ; I already have the wave trigger. I’m really interested in the mass storage instead of using the MS card (it’s not really easy in an hardware project but it can be a solution while searching for another solution).
                              I’ll search for the bug you just said !

                              Thanks a lot ! I hope your player will be available soon :p

                      • reply Thomas Thoen ,

                        Hi, I’m working on a project that uses a lot (over 280) of wav files that need to be pieced together. Is there a way to send a set of wav files sequentially through the serial port that can be played sequentially (not simultaneously)? I’ve looked through the documentation and maybe I’m missing something? Any help would be appreciated!!


                        • reply Jamie ,

                          If I understand your question, then yes – there are several ways to accomplish this. The latest firmware and Arduino Library includes functions to determine when particular tracks have finished. Assuming you are using an Arduino, you can start a particular wav file (track), wait for that track to finish and then start the next one in your list.

                          If you’re only ever playing one track at a time, then the play status output can be used to determine when the WAV Trigger is no longer playing audio – i.e. when a single track is finished. You could poll that output and trigger then next track when it goes inactive.

                          Finally, it’s possible to program a trigger input to automatically play a sequential group of tracks, provided those tracks are numbered in the order that you want them to play.

                          • reply John ,

                            Hello – i am a new owner of the Wav Trigger, quite enjoying it… but have a similar question to above and haven’t been able to make it work. I’m trying to set up an init file that will start with a random track (which i have done quite easily) and then, will continue from there to play the rest of the tracks on the SD card one at a time. The rest could be random too, or sequential after the random start, doesn’t matter. Like i said, the start is fine, but that’s it. I only get the one song. Sorry if this is basic or covered elsewhere – i did look. Maybe i’m just not understanding the init language? Thank you

                            • reply Jamie ,

                              Any of the trigger functions that play audio, such as Normal, Random, Next and Previous can be set to execute continuously several ways, depending on if and how you want to start and stop them.

                              Assuming you want the audio to play automatically on power up, without waiting for a trigger, you can set a Trigger to be type “Level” and then check the “Invert” option. If the function is set to “Random”, then what should happen is that on power up, with nothing connected to that trigger, random tracks should play continuously until the power is shut off. Similar, if the function is “Next”, tracks should play in order continuously until the power is shut off.

                              If you’d rather start the process with a trigger (say 1), and have the option for another trigger (say 2) to stop the audio, then you can set trigger 1 to be type “Latched”, and trigger 2 to be the “Stop” function. If trigger 1 is the “Random” function, then when you activate trigger 1, random tracks should play continuously until you activate trigger 2.

                              The best thing, however, is to simply experiment with the different trigger options to understand their effect. If you connect your USB port to the WAV Trigger serial connector with an FTDI Basic, you can use the Test button in the Init Maker application to quickly change and test the trigger options without having to deal with writing to the microSD card.

                              • John ,

                                Thanks Jamie. I like using the Level with Invert, since i really dont need other triggering to happen. It is working now and i believe the problem was due to me using a short-cut named for the “ini” instead of a the real file. (I changed to this at some point because I kept trying various ini’s, so i started saving them with a name that said what they did… then i’d link in the one i wanted. Forgot to make sure that was working tho!) Well, this was masking the fact that no ini was being used and just the first song was playing. Once i tried your suggestion and nothing happened, i realized i was not seeing my changes at all (because I no longer closed trigger 1). Thanks for the patient response. This is fun now that i’m seeing my changes. Good stuff!
                                Question: when you mention making trigger 2 a STOP, if i make this “latched”, does this all happen sequentially without my intervening? I mean trigger 1 starts with a random entry, trigger 2 will stop that (when song 1 is done) , and then i could put in a trigger 3 to start with NEXT song, instead of Random? I seem to keep getting all the songs playing at once when i do more than 1 trigger, so not quite figuring out how to sequence them. (Have Polyphonic set to OFF). Thanks again.

                        • reply Xavier Hui ,

                          I am using the WAV trigger for a project that involves triggering sound fx using simple buttons. Triggers 1 and 2 are set to normal with no re-trigger and polyphonic. Triggers 3 and 4 are set to next to play files 7-9 and 10-12 respectively, no re-trigger and polyphonic. Trigger 5 is normal, no re-trigger and NOT polyphinic. Trigger 6 is set to stop. From what I understand reading the user guide. If a trigger is set to NOT polyphonic, it should stop all other audio currently playing and play the audio corresponding to that trigger. When doing my testing sometimes it works but most the time it does not. It may take several (up to 20) pushes of the button for trigger 5 to get everything else to stop and play that audio. Sometimes it doesn’t work at all.

                          Am i missing something…am I doing something wrong? Any suggestion would help tremendously.


                          • reply Jamie ,

                            Yeah, that’s not right. It certainly has worked correctly in the past. It’s conceivable that I broke something in an update. Based on your description it should be easy to reproduce. I’ll have a look when I’m back in the office next week.

                            What version of firmware are you running? Does the Stop trigger (6) always work properly, i.e. will it stop all the tracks that are playing?

                          • reply Marko ,

                            Hi. I just ordered my first waw trigger and I have plans for various sound installation projects. My first project is happening in the woods with no power supply nearby. I have a battery operated amplifier and enough current for 9 hours. What are my best options to power waw trigger with batteries or power packs and how long battery life is expected when not using the internal amp?

                            • reply Jamie ,

                              Sorry, that’s like asking how many miles you can drive without telling me the size of your gas tank. From the User Guide:

                              “At 9VDC, the WAV Trigger draws about 80mA when idle and on average about 110mA when playing tracks.”

                              This is without enabling the on-board amp. You’ll have to do some conversion to estimate how long you can supply that current for a given mAh battery. Best thing would be to provide 5V from a 5V battery pack, such as a USB charger/backup pack – although keep in mind that some of those automatically turn off if the current drops below some threshold.

                              • reply Marko ,

                                Ok, guess I have to google some more. Thanks for replying.

                            • reply Colin ,


                              This may be a simple question but I cannot wrap my head around this. I plan to trigger WAV files via MIDI notes from a MIDI keyboard (already have done this). How can I set this up where I use a specific MIDI note from a MIDI keyboard to stop all tracks regardless of what is playing? I will be using this with a live band playing song tracks for enhancement purposes and I need a fail safe if something goes wrong. Thanks for your help in advance.

                              • reply Jamie ,

                                There is currently no way to assign MIDI Note messages to anything other than tracks. However, there are two ways you can stop all sounds.

                                First, if you can program your controller to send a MIDI Stop Real-Time System Message, which is just a single byte = 0xFC, the WAV Trigger will do an all-notes-off and stop all tracks that are playing.

                                Second, you can wire a button or foot-switch to one of the trigger inputs and set the trigger function to Stop and set the range to include all of your tracks. This will also stop all tracks that are playing.

                                Hope this helps.

                              • reply Jo ,

                                Hi Jamie,

                                Thanks for your work! I needed a mellotron keyboard for gigs, and the wav trigger works great for that!
                                Juts a simple question (I don’t know of it’s been already asked before, I haven’t found anything about that…) : will it be possible in a future update to recall any midi bank via the trigger? For example : Trigger 1 = Midi Bank 1, Trigger 2 = Midi bank 2 etc…. Is it planned or not at all?
                                If not, I’ll try to find another solution. It’s just that I don’t anything about coding, and it would be great to get this little fonction inside the same board.

                                Anyway, thanks again for this board!…and sorry for my English, hope my message was clear enough.


                                • reply Jamie ,

                                  You can use two trigger functions to increment and decrement the MIDI Bank (see trigger functions.) Alternatively, you can use MIDI Program Change messages to change banks.

                                • reply Jo ,

                                  Thanks Jamie. I know about the trigger increment / decrement fonction which is great. But it would be more convenient to be able to call any bank on the fly.
                                  I had a project to rehouse a keyboard, running with the wav trigger, to make a kind of “homemade mellotron” in one box. So this fonction would be easier for me to do this. And as I don’t know about coding, I’m not able to program something like 8 switches, each of them sending a program change message, from an Arduino for example.
                                  I just asked if you intended to do it in a future update. If not, I’m gonna continue to use a midi master keyboard with program change switches.

                                  Thanks again!


                                  • reply Jamie ,

                                    I probably would not implement a trigger function for dedicated banks, simply because each bank would require a dedicated trigger, which means that you’d have fewer triggers left to start tracks. With only 16 triggers, that doesn’t seem like an efficient way to use them.

                                  • reply Jo ,

                                    Sure! I understand. I’ll find another way to achieve this.
                                    Thanks a lot for your replies!

                                    • reply Andy Mophar ,

                                      Hello I got the wavtrigger working.
                                      Now I want to change midi banks with the trigger option.
                                      The bank changes but the sounds dont work and these are wav files that work in the first bank.
                                      So I think I need to change the names of the files in the other banks.
                                      Couldnt figure out how to do by myself so what is the correct way for naming the was files in bank 2/3 etc?
                                      Thanks alot ,

                                      Leave a comment