Introduction

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.

Screenshots

default layout and skin

the Junolike skin

the RolandModern skin

different layouts and skins (Casiopea)

different layouts and skins (Cymbiant)

different layouts and skins (NovationRemote)

the settings screen

the controller configuration screen

naming a controller

Disclaimer

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.

Download

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:

a Windows PC with the .NET Framework installed

a Pocket PC / Windows Mobile PDA with the .NET Compact Framework
(1.0, later versions should be compatible) installed

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.

Installation

put the contents of the "client" directory somewhere on your Pocket PC

put the contents of the "server" directory somewhere on your desktop PC

start the TheresaServer.exe program on your desktop PC

start the Theresa.exe program on your Pocket PC

open the configure screen, select a MIDI output device

enable the corresponding MIDI input device in your favourite music program

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

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:

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

saves the current Theresa configuration in a preset.

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.

opens up the configuration screen, where you can choose MIDI device, skin and layout.

quits Theresa.

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

TODO

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.

better code (error handling, sanity checks, etc)

easy installation for the technically impaired

XY pad (KAOSS, here we come!)

launch the client automatically (via RAPI) when the server starts

multiple pages (have one button switch page to allow more controls)

background bitmap

rotary encoders (with magnify on touch)

improve fader graphics (eg knob shadow...)

tied faders (with configurable tie strength), think eq

logarithmic scale for faders

configurable MIDI channel

rubber (bouncy) faders

ripple pad (don't ask)

Credits

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!