1. Foreword
    1. Disclaimer
    2. About bugs
    3. Known issues
  2. Requirements
  3. Setup
    1. MacOS X
    2. Linux
    3. Windows
    4. DS
  4. Example Applications
    1. DS MIDI Keyboard
    2. Kaos DS
    3. Pulse DS
  5. Development



DSMI was developed as a hobby project. We think we know what we were doing, but bugs are probably still there. Use it at your own risk. If it causes damage to your DS or your computer, your data, your guineapig, whatever, we do not take responsibility!

About bugs

If you find a bug, please send me a patch that fixes it. If you are not a programmer, try to reproduce the bug, then get in contact and describe exactly the setup your are runnung and the steps to reproduce it.

Known issues

  • Sometimes, the DS does not receive anything. If this happens, restart the DS.
  • Under Windows, there is a noticable latency, which is Windows' fault.


First of all, you need a DS game that uses the Nintendo Wi-Fi connection (for example Mario Kart or the Opera Webbrowser). This is needed only once to set up the WiFi settings of the DS.

Second of all, you need equipment to run homebrew software on your DS. Recommendable solutions are (in no particular order):

I will not go into detail on this, so just Google it.



Double-click the dmg, drag and drop the program into your applications, and you're done.

After you launch the DSMIDIWiFi server, it should automatically show up in all MIDI-aware applications.

If you have a Mac, you don't need an access point to connect the DS. Just follow this guide to set up your airport card to talk to the DS.


If you don't have it already, install ALSA and make sure the module snd_seq is loaded, then launch the application.

After you launch the DSMIDIWiFi server, it should automatically show up in all MIDI-aware applications.


Because of the inflexible design of the Windows MIDI framework, you first need to install a MIDI loopback driver, for example MIDI Yoke1 for Windows XP (please read the note about MIDI Feedback on the page!) or LoopBe1 for Windows Vista/7. Then you can launch the DSMIDIWiFi server.

After you launch the DSMIDIWiFi server, select LoopBe1's in- and output devices in the DSMidiWifi server as well as in the MIDI application you use.


First, configure the DS's WiFi settings using a WiFi-enabled game like Mario Kart or the Opera Browser. The settings are saved in the DS, so you don't need a Wifi game in the DS when using DSMIDIWiFi applications. Then, copy the application(s) to your CF/SD card, DS-Xtreme or whatever device you are using and launch them.

If you have connection problems, see the troubleshooting page for help.

Example Applications

These applications are very basic and all have potential for improvement. They serve both as examples as well as inspirations for new DSMI applications. If you are a coder and you want to improve them, go ahead!

DS MIDI Keyboard

Use the keyboard to play :-) Push the D-Pad left or right to change the octave, and up or down to change the MIDI channel. When you play a note and leave the stylus on the touch screen, you can change the pitch by sliding up and down. By sliding vertically, you can adjust the first MIDI control of the channel.

If your MIDI application supports control learning, you can use X button to send a pitch signal, and the Y button to send a control 0 signal.

Kaos DS

Slide over the screen with the stylus or a finger to change MIDI controls. The X axis is MIDI control 0, and the Y axis is MIDI control 1.

If your MIDI application supports control learning, you can use X button to send a signal on control 0, and the Y button to send a signal on control 1.

Pulse DS

On the DS-side Pulse DS is non-interactive. Use a sequencer on the computer to send MIDI signals to it. Channels 0-5 are pulse wanes with different wave duties, and channels 6-7 are noise. The only MIDI events that Pulse DS processes currently, are note on and note off.


So you're a coder, and you have set up devkitPro and libnds and you know how to write DS applications? If not, you should look into that first. Good starting points are:

To use libmidiwifi in your applications, you first need to set up the wifilib by sgstair. Then, install libmidiwifi:
  • Copy libdsmi.h to libnds/include
  • Copy libdsmi.a to libnds/lib
Now you should be able to compile the example programs. The usage of the library is pretty self-explanatory by looking at libmidiwifi.h and the example source code.

If you come up with a cool application, don't hesitate to get in contact!

Have fun!

0xtob and TheRain