Creative Commons images are CC BY-NC-SA 3.0

Description: Description: 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.

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.

Features:

  • Input voltage: 6-12VDC
  • Current Consumption: 80mA idle, 120-200mA playing
  • Low Power option: ~5mA idle.
  • 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
  • Trigger Latency: ~8ms, 12ms max
  • Polyphonic: Play and mix up to 14 stereo tracks independently and simultaneously

Documents:

Customers Also Purchased

Customer Comments

  • 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.

  • 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?

  • 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

          • 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

            100% fantastic idea!! this has HUGE potential…a second set of code for the Teensy, then we hook up the hardware we need…. LOVE IT!!

          • 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.

  • 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?

  • 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

Customer Reviews

4.7 out of 5

Based on 3 ratings:

5 star
2
4 star
1
3 star
0
2 star
0
1 star
0

1 of 1 found this helpful:

Excellent product!

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 2 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.