(there's a MIDI controller in my pocket)
(but I'm happy to see you anyway)

Home > Pocket PC > Theresa


Theresa is a simple PocketPC/Windows (targeting the Compact .NET Framework 1.0) client/server application that turns a Pocket PC PDA into a MIDI controller surface. well, that's the plan.

basically you start the server on the desktop PC (the server sits quietly in the system tray), then start the client on the (ActiveSync-connected) Pocket PC et voila, you can use your finger on the PDA touchscreen to move faders, push buttons and XY pads.

faders, buttons and pads that can be freely assigned to MIDI CC. how sweet.

Theresa has customizable layouts, she's skinnable and can save/load presets. last but not least, she's freeware (as in free beer) and open source.

so, if you can't afford a sturdy Doepfer, a powerful Mackie or a classy Novation Remote, and you have an old iPAQ or similar laying around, it's time to meet Theresa and rejoice.

if you have no idea of what I'm talking about, Theresa will probably be useless to you. go play some videogame instead.


default layout and skin the Junolike skin the RolandModern skin
screenshot screenshot screenshot
different layouts and skins (Casiopea) different layouts and skins (Cymbiant) different layouts and skins (NovationRemote)
screenshot screenshot screenshot
the settings screen the controller configuration screen naming a controller
screenshot screenshot screenshot


I stole graphics for the provided skins from either free VST plugins (eg. Casiopea, Junox2) or from actual synth/device pictures googled on the net. I hope this isn't a problem. if someone prefers his/her own graphics to be removed from Theresa, I'll happily cease and desist. it's just eyecandy after all.

and of course, the usual stuff: Theresa is provided "as is", no warranty, no support, your own risk etc. etc.


first of all, have you read the disclaimer? if not, scroll up some lines and do it now. when you're ready, you can return here.

second of all, please note the requirements. Theresa will be of very little use without these fulfilled:

  1. a Windows PC with the .NET Framework installed
  2. a Pocket PC / Windows Mobile PDA with the .NET Compact Framework (1.0, later versions should be compatible) installed
  3. Activesync to connect them (or WLAN)

Linux/Mono/SynCE could also work, didn't test (testers welcome!).

when your setup is ready, grab this:

hysterical raisins can also download obsolete versions:

and don't forget to read on for some useful instructions.

if you are an übergeek and want to mess with the source code, and/or recompile Theresa from scratch, the project is also hosted on github.


  1. put the contents of the "client" directory somewhere on your Pocket PC
  2. put the contents of the "server" directory somewhere on your desktop PC
  3. start the TheresaServer.exe program on your desktop PC
  4. start the Theresa.exe program on your Pocket PC
  5. open the configure screen, select a MIDI output device
  6. enable the corresponding MIDI input device in your favourite music program
  7. map the parameters, do MIDI learn, tweak, tweak, tweak!
in the "vstmap" directory there are example MIDI mappings for some VST instruments. you can load them in VSTHost, then open the corresponding preset in Theresa.


documentation is sparse at the moment. if someone wants to contribute better documentation, contact me.

first of all, Theresa uses MIDI devices configured on the desktop PC, she's not a device herself. this means that if you plan to control VST instruments, you probably need to install MIDI Yoke or equivalent software and route the appropriate MIDI output device to your VST host.

the UI of Theresa should not be hard to understand. everything is designed to be more or less confortably tapped with your fingers. here is a quick, if not laconic, reference for the buttons on the top of the main screen:

load loads a preset. a preset consists of: current skin, current layout, current controllers configuration (CC number and name) and their values. (as a note, the controller values are actually sent to the currently connected MIDI device when loading a preset, so you can "snapshot" the controlled instrument state).
save saves the current Theresa configuration in a preset.
mode switches between numeric (CC number and value) and name display for the controllers. to configure controllers, tap on the tiny LCD-like display above them. a screen will appear where you can set the CC number and enter a name.
settings opens up the configuration screen, where you can choose MIDI device, skin and layout.
quit quits Theresa.

skins and layouts can be customized via XML files (and some photoshopping for skins). please use the provided examples as a reference.


following are the already planned new features and improvements, loosely based on priority. if you have other brilliant ideas, or need a feature that's not listed here, contact me.

  1. better code (error handling, sanity checks, etc)
  2. easy installation for the technically impaired
  3. XY pad (KAOSS, here we come!)
  4. launch the client automatically (via RAPI) when the server starts
  5. multiple pages (have one button switch page to allow more controls)
  6. background bitmap
  7. rotary encoders (with magnify on touch)
  8. improve fader graphics (eg knob shadow...)
  9. tied faders (with configurable tie strength), think eq
  10. logarithmic scale for faders
  11. configurable MIDI channel
  12. rubber (bouncy) faders
  13. ripple pad (don't ask)


oha for motivational support and general interest (well, not complete lack thereof at least). larsen for laughing at this software's name (and the pun intended). my family for the patience. the KVR community for indirect inspiration. all the free VST developers around the world for all the marvelous synths and stuff. you guys rock!