Retired Product

This is a retired product. There is an updated version available: WIG-13660

Creative Commons images are CC BY 2.0

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.

Features:

  • 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

Documents:

Recommended Products

Customer Comments

  • 7/30/14 UPDATE: I just posted another firmware update that adds yet another 2 voices, for a grand total of 14 stereo voices, and implemented a new low-power Sleep Mode option in the init file for those of you concerned with batteries. In Sleep Mode, the WAV Trigger draws only a couple of mA yet will wake up on any trigger input. Details here. Still needs thorough testing, but I feel confident enough to post. Please let me know how it works for you if you try it.

    I just posted a preliminary major firmware upgrade, subject to testing. The quick version: A new mix engine supports 12 stereo tracks (voices) by default with pretty much any microSD card, a 50% improvement, and trigger latency has been cut in half to a maximum of 12 msecs. Also added firmware faders for smooth volume fade-in, fade-outs and cross-fades between tracks, including MIDI control for note attack and release times. And, by popular request, a new mechanism for preloading, starting and playing up to 12 tracks in absolute sample-sync. Full details here.

    Updated the WAV Trigger Arduino Serial Library to include functions for new features. And the User Guide has been updated for the new serial commands.

    Feedback welcome.

    • For me, this is the most valuable firmware update to date. Especially the possibility to easily start multiple files in sync opens up a world of possibilities, making the WAV trigger perfect to do live multitrack mixing and mastering the same way commercially available applications, -costing many times more- would. I’ve found the fade-commands very useful, too. They work as advertised and are hyper-fast.

      I haven’t tested the Arduino library as I’ve been testing with a terminal program on my desktop, but for what I can see so far, it really become very easy to implement live music mixing capabilities in any Arduino project.

      Love it! Thanks!

  • Wow, new software revision within 24 hours based on my request! Is that awesome support or what. I’ll post a video ASAP on how to use Rock Band keyboard. It is easy. Right now I am having too much fun playing with this thing. Also, 3.3V FTDI USD-UART cables from Digikey work fine. I don’t think they are cheaper though.

  • I added a troubleshooting section to the online User Guide, as well as a MIDI Implementation section. Also, here are some thoughts about future firmware enhancements. Feedback welcome, here or there.

  • I received my wav trigger today but can not get any response from it. I’ve tried 4 different sd cards formatted fat 16 and 32 using the sample audio files. I have no LED lighting up when power is applied. there is 12v present on the board as well as the 5 and 3.3v. switch is in the run position. I was able to flash the firmware but none of the FTDI triggers or the on board PB will trigger it.

  • Do you have specs for the minimum duration a trigger should stay active to be recognized by the board? I tried 3ms pulses but that wasn’t consistently triggering. As a test, I changed the pulse duration to 500ms and that consistently triggered. I’d like to keep the pulse as short as possible, though. Thanks.

    • I don’t, but that’s a great point. The WAV Trigger gives priority to playing audio, so that you should never hear a click or pop in the audio output. The audio buffer service interrupt occurs about every 6ms, so if the trigger is active less than that, it’s possible that it could be missed if there are a lot of voices playing. Without testing, I’d suggest holding a trigger active a minimum of two audio interrupt periods, so at least 15 ms.

  • Hello. the wav triger works great on midi, but there is a very little after touch or release time sound even when i set it to 0 release time, this can be annoying when you play fast parts organ for example. please can you fix this??? it would be great. best regards Zohar.

  • Just received this board and alas, much to my chagrin, I’m having trouble playing the sample .wav files with the test button. When I power up, my LED blinks 8 times rapidly - not the magic 3. At least I count 8. The heart beat blink continues thereafter. Then the button press seems to do nothing, and shorting the triggers also gives no response. I am powering with ~6.5V, no .init file (though I did try one to enable the amp and use a speaker), and some little stereo speakers. Mostly wondering why I get 8 blinks since I see no reference to that anywhere…

    I’d keep banging my head on this and never ask, but I’m too excited to play with it so I have come seeking help. Thanks so much - and I hope my board is OK!

    • Sorry you’re having this problem. That blink code (10 blinks) means that there’s something wrong with accessing the microSD card, either hardware or the FAT file system. Easiest thing to try is another card if you have one. Alternatively, try reformatting the card. If multiple cards give the same result, then I would suspect a solder connection between the CPU and microSD socket. If you continue to have a problem, contact me directly at info(at)robertsonics(dot)com, or contact SparkFun tech support.

  • Hello Robert. the wav triger works great on midi, but there is a very little after touch sound even when i set it to 0 release time, this can be annoying when you play fast organ for example. please can you fix this??? it would be great. best regards Zohar.

  • Hi, just wondering what is the easiest way to hook up a USB midi controller to this?

    • For use with the WAV Trigger, you need to use a MIDI controller that has an actual MIDI output port. The USB ports on MIDI controllers are meant to plug into a USB host computer. Many USB MIDI Controllers have both USB and MIDI. Also, the Rockband 3 Keyboard has a MIDI output port and is a great battery-powered MIDI controller.

  • Hi, in midi up and down ,what is the name of the bank folder? 001, 002 and so on? I try the trigger 1 and 2 as bank up and down and it didn’t work, the mellotron demo works in midi, please i need the parameters for up and down bank, Thanks.

    • The WAV Trigger does not use folders - all files need to be in the root directory. For the first bank, the MIDI Note Number is equal to the track number, so MIDI Note 42 is track “042_XXXX.wav”. Each bank adds 100 to the track number, so MIDI Note 42 bank 2 is track “142_XXXX.wav”, MIDI Note 42 bank 3 is track “242_XXXX.wav” and so on. See this post.

  • Hello Robert, i wonder if i could change the sound bank if i use my wave trigger in 16 switches mode ? if yes it will be perfect for me, Thanks.

    • Not sure I understand the question. In normal mode, the 16 trigger inputs map to tracks 1 through 16. Some alternate trigger functions like Next, Previous and Random allow access to a range of tracks beyond 16. However, starting specific tracks higher than 16 requires using the serial control port protocol or MIDI.

  • Hi, how do i change the bank/patch sounds in the wav treeger? Thanks.

    • There are two ways: You can change the MIDI Channel on your controller. The MIDI Channel (minus 1) is multiplied by 100 and added to the note number, so that MIDI Channel 1 maps to triggers 0 - 99, MIDI Channel 2 maps to triggers 100 - 199, and so on.

      The second way is to use the new MIDI Bank Up/Dn trigger functions and use the trigger inputs to switch banks. The latest version of the InitMaker app supports this. Again, each bank adds 100 to the MIDI note number to map to tracks.

  • Is it possible to configure the MIDI input so that : - the keys are not velocity sensitive ? - the tracks don’t stop when the note is Off ? Thanks.

    • The latest firmware adds the ability to disable MIDI velocity, and the latest InitMaker app supports this feature. This will cause every track to play at full volume regardless of the Note-On velocity. But this won’t prevent MIDI Note-Off messages from stopping the track. However, you can max out the Default MIDI Release time which will cause the Note-Off to start a long fade-out rather than immediately stop the sound.

      • OK. But I suppose it won’t play a whole 3-minute song even with the Release Control set to the max…

        It would be really great if each MIDI Note were configurable as an independant trigger, and had all the trigger settings… My idea is to use a MIDI Controller to trigger some songs (and eventually other controls), rather than to make a musical intrument. Perhaps in a future update ? ;)

        • Done. I just posted firmware v1.02 on the download page. Until I can add this feature to the InitMaker app, just modify your init file to: “#MIDI 7”. This will disable both MIDI Note-On velocity and MIDI Note-Off messages. “#MIDI 5” will enable velocity but disable Note-Off messages. Please let me know if this works for you.

  • When using the NEXT function, does it play only the next track ? Or does it play successively all the remaining track of the range ?

    • For an edge type trigger, each activation will play only the next track in the range. For a level type trigger, it should play all tracks in order continuously as long as the trigger is held active. At least that’s how it’s supposed to work.

  • Not my first trig board. But having an issue with this one that I just got. Not getting any playback. its powered with a 12v/2a wall adapter and only has 1 track on it. with just a contact switch. when I first power up I get 3 LED flashes but no trigger sound or from the onboard button. and the LED continuously slow flashes. Ive tried my wav track as well as the 001sample track. and board is set to run. what am I missing or why is the LED still flashing?? Also on the sd card does it matter if its a SDHC??

    • The LED flashing once every 3 seconds or so is the “heart-beat” indicator - meaning that the WAV Trigger firmware is running. Your symptoms indicate something wrong with your wav file, either the name or the content, except that you tried the sample track. You might also try either the Mellotron or piano samples on the bottom of the download page.

      If you have a USB-to-serial adaptor like the FTDI Basic, you can use the Remote Control Demo app (also on the download page) to check the WAV Trigger status. That will tell you how many tracks it located on the microSD card.

      However, if use can’t get a known good wav file (with a correct name) to play with the button, there may indeed be something wrong with your board.

      • Thats what I was thinking. hmm.does it matter that the SD card is a SDHC??

        • Shouldn’t. Unless it’s some new-fangled type just released. You wouldn’t get the 3-blinks if it couldn’t initialize the card. Try turning on the WAV Trigger without a card installed and you should get 1 long blink.

          • ok wow I pulled the card out power it up and got the long blink as you said when I put the card back in everything seems to be working now. weird. thanks so much

            • Glad it’s working. Keep an eye on it though - it could be an intermittent solder connection between the microSD socket and CPU. If you continue to have problems, contact SparkFun directly.

  • first off this project rules. so many applications. i’m going to be using it mostly with MIDI control. i read over the MIDI implementation section first and noticed a requirement for a MIDI-to-TTL adapter circuit. is there any explanation of this circuit anywhere? i’m thinking it’s just the common opto-isolator ground loop insulation (see Figure 1 in link) but i was hoping to get confirmation so i don’t mess up one of these great boards.

    http://www.midi.org/techspecs/electrispec.php

    also hoping to confirm that using one of the CA-42 cables with the nokia end cut off and rewired won’t damage the WT. i keep seeing it described as TTL and 232 and i don’t want to damage anything by sending 232 signals.

    thanks!

    • You need to convert MIDI from a 20ma current loop to a TTL level voltage. It’s the standard opto circuit shown in your link. Also, check out the MIDI input on the schematic for the SparkFun MIDI Breakout.

      Do not apply RS-232 signal levels to the WAV Trigger. RS-232 TX can be up to +/-15V. When in doubt, measure with a meter or scope. RS-232 TX when not transmitting will be anywhere between -5V and -15V. Big red flag.

  • Weird issue. I made lots of VOX organ 8 second samples and they work and sound good. However, if I play a 4 note chord, fast 8th notes while holding down the low note (think “99 tears” or “rock lobster”), the low note drops out after 3-4 seconds. My init file is MIDI w/velocity disabled. The issue goes away if I slow down the 8th notes. I tried with rock band keyboard and an older Casio MIDI keyboard. Any ideas?

    • You’re using more than 12 voices and the voice-stealing algorithm is favoring the new notes over the low one. When you run out of voices, the one started the longest time ago is “stolen” for a new note. I assume you’re using a non-zero release time? Try reducing the release time, which will cause voices to be freed up more quickly while you’re playing the faster notes.

      • I am only playing 4 notes (voices), unless you are saying playing fast 8th notes hogs up more voices. Release is set to 0.

        • You might want to try the latest firmware v0.90 update on the download page, which now provides for a total of 14 voices.

        • When the release is set to 0, there’s still a short fade-out time when a track is stopped to prevent a click. So, yes - playing 3 notes really fast will use more than 3 voices. I can’t tell from your description how fast you’re playing, but the symptoms are that the low note voice is being stolen because you got to 12 voices somehow. I can try to duplicate next time I have a keyboard hooked up.

  • Could you briefly explain how to modify WAV Trigger Arduino Serial Library to work with arduino uno? I noticed you used AltSoftSerial which requires pin 9 on arduino uno, but I have to use pin 9 for other purpose so SoftwareSerial is my only choice. I have been trying to modify the library you wrote to work with SoftwareSerial, but it doesn’t work…

    • Sorry - I’ve not used SoftwareSerial. I’ve used the library and AltSoftSerial with the Uno successfully, but I had pin 9 available. What isn’t working? Will it not compile, or does it compile but just not work properly? I can have a look, but it won’t be for a few days.

  • Hi Mr Robertson Your latest firmware supports up to 12 polyphonic tracks, which you said could be extended to 16 depending on the speed of the microSD card. Is 16 a hard limit, or could that be extended further with an even faster SD card?

    • Ooh boy - this could be a long post. I’ll try to be brief. SD card speeds are rated according to sustained single-file reads, and assume that the file is not fragmented. Playing multiple tracks is very different and involves continuously reading small parts of many files scattered all over the FAT disk. I have found that so-called “fast” cards are actually no faster when it comes to seeking and providing data from a new, non-consecutive sector. I’ve not seen this spec documented, but I call it the “access time”.

      The original firmware defaults to 8 voices but has the data structures to support up to 16 voices. I allowed the user to increase the number of voices in the init file, but the reality is that I never found a card that would reliably support more than 10 voices without audio artifacts, due to this access time.

      After thinking about it, I changed the entire mix engine to read and buffer more data each time I access a track, but made the audio buffer smaller to decrease the latency. This approach is more efficient at retrieving data from the SD media and allows me to get 12 voices using any card, with reduced latency, but is less efficient with memory because it requires larger buffers, i.e. a lot more SRAM, for each voice. Therefore, the new firmware can really only support 12 voices max currently. Perhaps someday I could eke out memory for a few more voices, but it’s safe to say this architecture (playing audio directly from SD Card media) will probably not support more than 16 any time soon.

      However, the new firmware also has a “voice stealing” algorithm, so that new requests to play tracks are always honored, even if all 12 voices are currently being used. The oldest (in time) track is stopped and that voice is used for the new request. If you’re playing a MIDI keyboard, you hardly ever notice.

      • Thank you, that helps my understanding a lot. Looking forward to the eventual arrival of my WAV Trigger (I’m in South Africa, so who knows how long it will take to arrive here…). Keep up the great work! PS: I sent an email to your info(at)robertsonics(dot)com address with some ideas.

  • OK, got the channel switching working. A little confused on how to implement the MIDI control for attack and release times. Is the keyboard responsible for sending this information? Like, it doesn’t seem like something I configure with init maker.

    • Attack and release are the fade-in and fade-out times that the WAV Trigger uses for MIDI Note-On and Note-Off messages respectively. These fades are implemented in the WAV Trigger and are the same as “volume envelopes” found on MIDI keyboard samplers and virtual instruments.

      Attack and release times are set using MIDI Controller numbers 73 and 72. I assign a knob on my keyboard to MIDI Controller number 72, and that knob then controls the note release (fade-out) time between 0 and 2 seconds. Alternately, you can add the command “#MREL n” to the init file to set the release, where n is 0 to 127. I just updated the InitMaker app to v1.03 to include these new MIDI features.

      • OK, got it. What about attack time? I don’t think my Rock Band Keyboard (RBK) has the capability to assign MIDI controllers. BTW, on the RBK, patch change does not seem to work, so I am glad it is working on the WAV TRIGGER.

        • You’ll need to send MIDI Controller 73 data if you want to change the attack time. You can also add the attack directly to the wav file, since the sound always starts from the beginning. An adjustable release time is far more useful.

          MIDI Program Change is not supported. Please review the MIDI Implementation section of the User Guide.

  • Robert, finally had a chance to flash wav trig w/ v87. It works. Velocity is disabled and makes the keyboard much more playable. Can’t seem to get MIDI channel change to work. I have Flute samples file name starting with 047-077. These play fine. I have your piano triggers at 001-013. These also play fine. I have your mellotron samples re-numbered starting at 143-147. These do not play when I increment or decrement the channel, either by triggers or using the keyboard.channel change button. Any idea what I might be doing wrong?

    • Leave the keyboard channel number at 1 (or 0). Play the flute on note number 47. Increment the bank using the ‘Bank Up" trigger, and play the same note number 47. Do you still hear the flute, or nothing? If you still hear the flute, then you aren’t actually changing the bank number for some reason. If you hear nothing, then you are changing the bank, but the Mellotron samples aren’t mapped to that note for some reason.

  • I am having a problem with my WAV Trigger. Can you give me some idea where the problem may be? I have ordered a replacement WAV trigger but would like to make sure that I do not have the same problem again. Any ideas would be appreciated.

    After playing a file, the WAV trigger hangs making a rapid cycling clicking noise through the headphone (or speaker) with the WT LED constantly on. I have confirmed the problem by placing the test WAV files from the website on a reformatted card.

    I am able to connect with the Remote utility via a FTDI basic breakout board but am unable to connect using the same board with the reflash utility while in Load mode.

    The WT was working previously. It has the capacitor (0603 0.47uF 16volts) mod and is running firmware version 83. I am interfacing to an Arduino which is connected to a PC via USB and is also powering the WAV trigger. I have enabled the amp and connected the WAV trigger to an 8ohm 0.5W speaker.

    I modified the arduino libraries to include a status check which I call every 3 seconds. My arduino sketch is randomizing the file play depending on user selection and if no file is playing on the WT. I do play a minority of the files in Polyphonic mode but only two at a time.

    The problem began after I loaded 800 WAV files onto a 32GB card with the wrong bit and sample rate. After correcting the WAV problems and loading a new sketch to the Arduino the WAV trigger failed with clicking hang described above.

    • If you remove all your connections and just connect with an FTDI Basic, can you put the switch in the “Load” position and flash new firmware? If so, please update to v0.87 from the download page.

      Again with no connections other than power, can you put a single, known good track on the microSD, with no init file, and play it with the on-board button?

      • No, I am unable to flash the firmware. The Flash utility reports that it cannot connect after clicking Program. I have selected the corrected COM port and put the selector switch in the Load position.

        Yes the track plays but still produces the cyclical clicking noise with red LED constantly illuminated. I have removed all files except “001_Number.wav” from the Sparkfun hookup guide found here: https://dlnmh9ip6v2uc.cloudfront.net/assets/2/7/0/0/4/52cc77eace395f32368b456b.zip. This file played with out clicks in previous testing. The only connection is to the headphones and to power. Power is via a 5v 2.6A PSU.

        • Please try a longer wav file - if that’s the spoken number file, it’s very short. It’s conceivable that the more recent firmware versions are not handling short files correctly. I can test this in the next day or so. In the meantime, you can try the mellotron samples on the download page. However, that would not explain why you can’t flash the firmware. We should probably work on this offline - email me directly at info(at)robertsonics(dot)com.

          • I have downloaded the Mellotron files and the G42 played without clicking. I then went back to the files that I converted. Looks like one of the WAV converters that I used appended ID3 tag info, specifically track #. Still investigating but I’m pretty sure its user error on the clicking, both on short and long files. I’ll order another FTDI breakout in the event mine is defective. I’ll follow-up on email on that issue.

  • Hi Robert, just got my wav trigger. Been testing it with Rock Band Keyboard I got for $3 off EBAY. So far everything is working great. Latency is non perceptible to me. Only thing…is there a way to disable velocity sensing? It is pretty annoying using my cheap keyboard.

    • You’re not the first person to ask, so I just posted firmware v0.86 here which provides a way to do this. For the time being, you’ll have to edit the init file with a text editor, but just change the line “#MIDI 1” to “#MIDI 3” to disable MIDI velocity - all notes will be played at full volume. Give it a try and let me know.

      I didn’t know that the Rock Band keyboard can send MIDI. That’s a great find for this application. Would you consider posting a video or instructables showing other folks how to do this?

      Edit: Ok, I got inspired by this and added two more MIDI features. First you can now use two new trigger functions to increment and decrement through “sound banks” without having to change the MIDI channel number on the keyboard. You can also set the MIDI note release (sustain) time with a new init file command, useful for adding a lush reverb-like sound to strings (and Mellotrons.)

      Read about it here. Firmware v0.87 is now the latest and contains these new features.

  • I’m using the Wav Trigger in an art project. It works very well with the Arduino Nano for syncing music and user feedback sounds. It was very easy to wire and integrate with my project. Thanks for making it!

    I did have a question about the GET_STATUS and corresponding STATUS return from the WAV Trigger. I understand that these are not available in the Arduino Library. Is this a limitation in the firmware? I can attempt to add this to the library but thought I would check if its possible with the current version.

    • These serial commands, and all the commands in the User Guide, work fine. You can see them in action with the Remote Control example app (Windows, OS X and Linux) on the download page.

      I haven’t added this to the Arduino Library only because I haven’t figured out the best way to implement the timing. I want to discourage people from constantly polling the status, since that would create a lot of serial traffic and could affect audio performance when playing lots of voices. The best way would be for a background task to poll the status every 100ms or so, and for a user routine to return the last response.

      But you can certainly just add the GET_STATUS command and just make sure to send it either at a reasonable rate or only when you need the status. Keep in mind that the response is a variable length message, depending on the number of tracks playing.

      • Thank you for the answer! That’s what I needed to know. My polling will be 1-3 seconds so that should work fine. Thanks for the reminder on the variable length response.

  • Robert, just ordered a wav trigger-should be here today. Is the 5V FTDI compatible with processor? It looks like the processor is powered w/3.3v. Maybe the i/o is 5v tolerant. I have many FTDI-3.3v and was wondering of that would work if I powered Main Bd xternally

    • The WAV Trigger can be powered with external 5V using the FTDI Basic 5.0 if you close solder jumper SJ2. The 5V feeds the on-board 3.3V regulator as well as the on-board audio amp. All of the processor inputs are 5V tolerant.

      You can use an FTDI Basic 3.3 for serial communications if you power the WAV Trigger separately and don’t close the SJ2 solder jumper.

  • hi mr.robert, is there any way to organize my audio tracks for example: to make 3 different folders i.e: sound effects, music, tones, and play them individually?…thanks in advance for your help

    • The WAV Trigger file structure is optimized for speed and only makes use of the root directory. You could organize your tracks by track number, using the 100’s digit for sound category for example.

  • You can send to Brazil?

  • I’ve had my WAV Trigger for a couple days now, and no matter what I do, I can’t get it to play any sound files—not even when using the on-board button. When I power on the board, the LED flashes three times, and then doesn’t flash anymore at all. I’ve made sure the LOAD/RUN switch is set to RUN, reformatted the memory card, and ensured that my sound files are in the correct format (16-bit, stereo @ 44.1 kHz), but nothing has worked for me. I am not using the onboard amplifier, just trying to play sound through the audio jack. Any idea how to get it working? -Thanks

    • Are you sure that your wav files do not contain any non-audio data? Named properly? Please check the troubleshooting guide. You can also try downloading the piano or mellotron samples on the download page, since these are known to be good wav files.

      What audio editor are you using to create your wav files?

      • I downloaded the piano files directly from your website and placed them in the root of the card after removing my previous WAV files. Still nothing, unfortunately. The LED flashes three times, and remains inactive. Nothing plays when the on-board button is pressed either. Could it be a problem with my init file?

        #VOLM 10
        #TRIG 01, 2, 0, 1, 0, 0, 4, 10, 1, 6
        #TRIG 02, 2, 0, 1, 0, 0, 4, 10, 7, 13
        #TRIG 03, 2, 0, 1, 1, 1, 4, 10, 14, 14
        #TRIG 04, 2, 0, 1, 0, 0, 4, 10, 15, 17
        #TRIG 05, 2, 0, 1, 0, 0, 4, 10, 18, 18
        #TRIG 09, 1, 0, 1, 0, 0, 4, 10, 1, 18
        ********************************************************************
        This file was generated by the WAV Trigger Init File Maker v1.00
        It is only required if you wish to over-ride default settings. You
        may add your own comments below this line -->
        
        • The init file does not affect the operation of the button, which should always play the lowest numbered track on the card. Do you have a USB-to-serial adaptor - like the FTDI Basic? If so, you can run the serial remote control application (on the download page.) It will verify how many wav files were found and let you trigger them directly.

          It could conceivable be something about your flash card and/or formatting. Do you have another card to try? If you continue to have problems, please contact me directly at info(at)robertsonics(dot)com.

  • I don’t find information about the “run” or “load” switcher button. Any ideas ?

    • Put the switch on “run” before you turn on the board for normal use. Put the switch on “load” before you turn on the board if you want to load new firmware to the board.

  • I am having trouble with trackGain() in the WAV Trigger library on an UNO. I can successfully trigger files using the library, but can’t seem to change the gain. Maybe I am just being dense, can someone spot the problem with the following? The track always seems to play at the default volume. Many thanks…

    // ****************************************************************************
        #include "AltSoftSerial.h"
        #include "wavTrigger.h"
    
    wavTrigger wTrig;
    
    // ****************************************************************************
    void setup() {
       Serial.begin(9600);
    
    wTrig.start();
    }
    
    // ****************************************************************************
    void loop() {
        int trk = 1;
        int vol = random(-70, 1);
        wTrig.trackGain(trk, vol);
        delay(10);
        wTrig.trackPlayPoly(trk);
        delay(1000);
    
    }
    
    • What version of WAV Trigger firmware are you using? The TRACK_VOLUME serial command, which trackGain() uses, was introduced in v0.57.

  • Hi Robert! I have a question about updating the firmware. Can it be updated with an USBasp AVR programmer? The cable has MISO,SCK, RST,VCC, MOSI and GND but i don’t know where to wire it to my wav trigger for the transfer. TIA!

    Daniel

    • I’m not familiar with that programmer but it sounds like it uses SPI. In that case no. You’ll need a USB-to-serial converter that outputs async serial, logic-level RX and TX signals (not RS-232 levels.) SparkFun’s FTDI-Basic is one example, but there are others.

  • I know you mentioned that it would be quite hard to implement 16 mono outputs instead of 1 stereo but how hard and expensive would it be to implement 8 mono outputs? Couldn’t we use a Wolfson Micro (WM8768 - http://www.wolfsonmicro.com/products/dacs/WM8768/) 8-channel DAC to be able to accomplish this? Please provide as much technical detail as possible. Thx

    • I’ve looked at this. Since the STM32F4 doesn’t have have the resources to provide 4 (presumably synchronized) I2S outputs, the only way to interface to DACs or codecs with more than 2 channels is using TDM, which the STM32F4 does provide. I’m reasonably confident that it could be made to work with, say, a TI PCM1606 6-channel DAC that supports TDM. But again, this is a different, more expensive product that would require significant NRE to develop.

  • Hi, i need some help testing my wav trigger via Arduino TX —> Wav trigger RX. I have an arduino mega 2560. My wiring setup is TX0 to wav trigger RX and arduino GND to wav trigger GND, then i am using a 12 power supply for the wav trigger and USB for powering the arduino.. Also tried powering the Wav trigger with arduino 5v with the same results: nothing. When i press the onboard test button of the wav trigger the audio runs ok. The code i am using is this:

    include <wavTrigger.h>

    include <AltSoftSerial.h>

    wavTrigger wav;

    void setup() { wav.start(); }

    void loop() { wav.trackPlaySolo(1); delay(5000); }

    Any clue? Best regards

    Daniel

    • Hey Daniel,

      Two things to check: First, make sure the filename of the track starts with “001”. Second, what Arduino pin are you using for TX? The “known_boards.h” file in the AltSoftSerial library shows that for the ATmega2560, TX is pin 46.

      Powering the WAV Trigger from the Arduino 5V should work fine, so long as you close the solder jumper SJ2.

    • DOH! i found the problem….Altsoftserial uses PIN 46 instead TX in Arduino MEGA. SOLVED

      • I was about 2 minutes too late in my reply. Glad you figured it out. Let me know how the library works for you.

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

      • Hello @robertsonics, does that also mean that I can control the trigger with my arduino uno via your serial library? And that I’m also able to control the audio of all tracks individual? I want to start all tracks on the sd card at once and then fade them in and out as the arduino says. Would that be possible? Thanks in advance!

        • Absolutely. You’ll need to update your firmware to the latest version. The new Arduino Library function trackLoad() can be used to preload up to 12 tracks, and the resumeAllInSync() function can be used to start all of them at the same time. Then you can use either the trackGain() or the new trackFade() function to control the volume of each track individually.

          • Thanks for your answer. I recenlty bought one and it works just fine. But I have one additional question regarding serial communication. I’ve connected the arduino uno TX (pin 0) to the wav trigger RX and Arduino Gnd to Trigger Gnd. But when I try to send commands using your library (https://github.com/robertsonics/WAV-Trigger-Arduino-Serial-Library) I get the following error before compiling the sketch:

            In file included from wavtrigger_serial.ino:2:
            /Users/xyz/Documents/Arduino/libraries/wavtrigger/wavTrigger.h:43:44: error: ../AltSoftSerial/AltSoftSerial.h: No such file or directory
            In file included from wavtrigger_serial.ino:2:
            /Users/xyz/Documents/Arduino/libraries/wavtrigger/wavTrigger.h:67: error: 'AltSoftSerial' does not name a type
            

            I copied the whole zip to my arduino library so there shouldn’t miss anything. I also tried to change everything in your library from AltSoftSerial to SoftwareSerial but just got some other errors (probably made some mistakes?)

            • You need to install the AltSoftSerial library, and then look at the included header file to determine which pin is used for TX for your board.

              • Hi Robert, we did that and it works now, thank you (also installed the latest firmware today). I also had to include it in my arduino sketch to get it to work. But during testing there was another problem: I loaded your (sparkfun hookup guide) demo wav files (001_xyz.wav …) onto the sd card and then tried (setup) to load them at once, mute them, set them to loop and then start all at once and (loop) to fade them in and out. But the looping did not work with the short files. Only the longer file looped properly (the one that was provided in sparkfuns hookup guide), all others just played once. Then I tried to upload other longer wavs (44100,16bit, not meta) but they didn’t play at all. Then tried to rename them (001.wav, 001_test.wav …). The only thing that changed was that suddenly your original file named 005_…wav worked and looped. I’m going to play around with all those things and will hopefully find a solution but maybe you’ve got an idea what might cause this behaviour.

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

              • What if I measure near zero (~0.1) there?

              • 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

  • 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 (3.4.62.293). 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.

        • Firmware version 0.59, just posted here, should prevent edge type triggers from looping.

          • Excellent - I can’t wait to try it when I get back to my shop in April. In the meantime, stuck here in Paris, sigh.

  • 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 sk-1..it 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.

Customer Reviews

5 out of 5

Based on 1 ratings:

Currently viewing all customer reviews.

Instant sound battery!

I was adding sounds to my proton pack and I didn’t have a lot of I/O pins left on the Arduino running it. I considered adding a second Arduino and a wave shield and writing some software, but came across this, which does the whole thing in one board. I copied some sound files onto a microSD card, routed some trigger leads from the Arduino, lashed it to a couple of speakers, and it worked perfectly the first time! I’ve been using it for several months with no problems now.