Wvr
Home of WVR, an open source, Arduino compatible, ESP32-based Sample Player and Audio Framework.
Install / Use
/learn @marchingband/WvrREADME
welcome to wvr

Purchase a WVR:
https://www.sparkfun.com/products/21307
https://www.tindie.com/products/ultrapalace/wvr
Join us on the WVR Forum :
https://discord.gg/ZfXuBkzec8 (Discord)
https://groups.google.com/g/wvr-audio (Google Groups, now retired)
Find the Pinouts and Wiring Diagram, and download the schematics for WVR : https://github.com/marchingband/wvr_hardware
Binaries for all the WVR boards are here : https://github.com/marchingband/wvr_binaries
Code for the Web UI is here : https://github.com/marchingband/wvr_ui
Code for the WVR USB Backpack is here : https://github.com/marchingband/wvr_usb_backpack
If you have Thames : WVR in a Pedal, go here : https://github.com/marchingband/wvr_thames
note that starting with firmware version 3.9.0, the IP address of WVR has changed to 192.168.4.1
- getting started
- powering wvr
- updating firmware
- playing sounds
- midi control
- web midi
- sound settings
- using racks
- bulk uploading files
- bulk uploading racks
- save and load voice configuration
- pitch interpolation
- pitch interpolating a rack
- pitch interpolating an ASR loop
- using fx
- global settings
- firmware manager
- setting up for Arduino IDE programming
- using Arduino CLI
- using PlatformIO
- using FTDI
- hardware considerations
getting started
- On a computer, join the wifi network WVR, using the password 12345678
- Open Google Chrome (or another browser which implements the Web Audio API), navigate to the address http://192.168.5.18/, and the WVR UI will open
note that starting with firmware version 3.9.0, the IP address of WVR has changed to 192.168.4.1

powering wvr
- wvr basic : plug in usb, or apply 5v and ground, or 3.3v and ground, to the power pins
- wvr makers board : plug in usb (will not power amp), use a center-negative 9v PSU (Boss style) or apply somewhere between 6v and 9v (and ground) to the VIN pins
- wvr dev board : plug in usb, use a center-negative 9v PSU (Boss style) or apply somewhere between 6v and 9v and ground to the VIN pins
- thames : use a center-negative 9v PSU (Boss style)
- usb host backpack : The backpack is powered by the WVR, so if WVR is on, the backpack is also on. When updating firmware on the backpack, plug in the usb micro port on the backpack instead of powering the WVR. It has its 5v line connected to the WVR 5v pin. WVR takes this 5v line, passes it to the LDO, and passes 3.3v back to power the backpack. The 5v pin on the USB host port is also connected to the WVR 5v pin, so it can power whatever is plugged into it, adding some capacitance to meet the USB spec.
updating firmware
For most users, the firmware that came installed on your WVR is up to date. Updating the firmware is only reccomended when new features are desired. Join our discord to keep up to date on this, but in general, most users will never need to update the firmware.
- Create a folder on your computer where you will store firmwares for your WVR
- download your firmwares, saving them to this new folder
- navigate to :
https://github.com/marchingband/wvr_binaries
and find the folder for your board. download the .ino.bin file, which will be a link like:
https://github.com/marchingband/wvr_binaries/blob/main/wvr_basic/3.10.0/wvr_basic.ino.bin
For most users this will be
wvr_basic, for a normal WVR, orwvr_usbif your WVR has the extra MIDI USB Host module add-on installed on the back. Choose the newest binary (currently v3.10.0) - Apply power to your WVR.
- On a computer, join the wifi network WVR, using the password 12345678
- Open Google Chrome (or another browser which implements the Web Audio API), navigate to the address http://192.168.5.18/, and the WVR UI will open
note that starting with firmware version 3.9.0, the IP address of WVR has changed to 192.168.4.1
- Click on firmware menu item at the top of the page
- Click select binary for slot 0, and in the file upload dialog select the firmware that you downloaded earlier
- To give the ninary a custom name, click the name of the binary at the left.
- Click upload for slot 0, and wait for the upload to complete
- Click boot for slot 0, and wait for the boot to complete.
- Reset the WVR, rejoin the WVR wifi network, then reload the webpage.

playing sounds
- in the WVR UI, click on a note ... maybe ... E2.
- now click select file
- a window will open, choose any sound file from your computer
- you can click audition and it will play on your computer speakers
- now click pins at the top. this is the pin configuration page
- click on D2
- on the left, you will see the options for that pin.
- set the note to E2 (40)
- set the edge to falling (this means that it will trigger notes when the pin goes from high to low, when you ground it. All the pins which have pullups have them turned on by default, so grounding the pins is like pressing a key on a piano. Setting the edge is important, the default setting is none so no sounds will be triggered by this pin until it is changed.
- set the debounce time : If you are manually grounding the pin with a wire use 120ms, if you have a mechanical button 60ms is good, if you are using an external micro-controller, you could use 0ms. If you get multiple triggers, and multiple sounds playing when you ground a pin, raise the debounce time :) Google "mcu debounce" if you want to learn more about this.
- you will notice that some pins have a touch/digital option. This makes the pins touch sensitive. The same logic applies with the edge : touching the pin with a finger causes a falling edge, and 60ms is a great starting point for a debounce time. The WVR calibrates itself for capacitive touch everytime it is reset, so, it is important to have your hands away from the WVR when you reset it, so it can do an accurate calibration. If it seems off, just reset the WVR and keep your hands clear for a few seconds.
- if you click on action you can see all the possible ways to use these pin events. It can trigger a sound, but it can also do many other things.
- velocity is the Midi term for volume, so, set this to the playback volume that you would like to result from events on this pin.
- wait for the sync to complete. You will see your pin configs have updated, and your sounds are displayed in the sounds menu. Now when you press audition the sound will not play in the browser, it will play on the WVR.
- connect headphones or some line out to the WVR
- using a wire (or a female jumper cable) connect the GND pin on the WVR to pin D2, and your sound should play.
- note that WVR does not have an on-board amplifier. The output is line level. Most headphones will actually work ok, although there may be some distortion. In order to connect a speaker, you will need an amplifier of some kind. A bluetooth speaker with a line-in is a great way to play with WVR when getting started.

midi control
WVR will respond to the following midi events:
Note on
Note off
Program Change
Pitch Bend
CC 7 (volume)
CC 10 (panning)
CC 11 (expression)
CC 64 (sustain, like the pedal on a piano)
CC 72 (release time (up to ~30ms fade out))
CC 73 (attack time (up to ~30ms fade out))
CC 120 (all sound off)
CC 121 (reset all controllers)
Note that volume, panning and expression, like velocity, will respond acording to a particular sounds response curve. A sound with Inverse Square Root response curve selected will pan with that same algorythm applied.
You can also send some 1-byte SYSEX commands for global controls, currently:
0x01 = WiFi on
0x02 = WiFi off.
So a sysex file to turn off wifi would look like "F0 02 F7". (F0 and F7 are the SYSEX start and end bytes)
web midi
The WVR Web UI can act as a MIDI destination for your DAW or other MIDI applications, and in turn send MIDI data over Wifi to WVR. Using this technique you can play your WVR wirelessly.
On macos, open Audio MIDI Setup, open the MIDI Studio panel, double click the IAC Driver to open its preferences, and check the Device is online box.
In your DAW's preferences, make the IAC Driver a midi output. Select the IAC Driver as the MIDI destination for your midi track.
Google Chrome currently considers Web MIDI to be a "powerful feature" and so access is limite
Related Skills
node-connect
350.1kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
109.9kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
350.1kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
350.1kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
