Connecting via RTP to TouchDAW's local sessions
This covers setting up MIDI connections with TouchDAW's default settings. RTP was chosen as a default, because it's a 'free standard' and does not require any additional installations on at least one platform (OS X).
Also shown - with less text to read - in the Quickstart guide.
We are assuming you have not changed anything in TouchDAW itself so far.
TouchDAW is preconfigured with 2 device-local RTP sessions and multicast DNS enabled for service announcement and discovery. Nothing needs to be done in the app at this point.
- On the DAW computer
- Create a session in those control panels
(Below screenshots are from a Mac. Both the procedure and the UI are exactly the same when using rtpMIDI on Windows, though).
This is done by clicking the upper "+" button underneath the "My Sessions" window. It will default to something like Session 1 (Mac) or the friendly name of your PC (rtpMIDI), but you can rename sessions to whatever you like with the "Local" and "Bonjour" names field on the right. Virtual MIDI ports will be created and appear in your DAW with the name you chose here. A new session is inactive by default, so you will need to enable it before it becomes useable. This can be done using the checkbox preceeding the session's name or by checking the "Enabled" box on the upper right hand side.
- Start TouchDAW if it was not already running.
After a short moment you should see two new entries in the directory listing on the lower left hand side of the window, named "tdaw (and.XXX) RTP 1 & 2" with XXX replaced by the last octet of the Android device's IP address. These are the two sessions that the phone exposes. The control panel should look something like this:
Once the phone's sessions are present, you are ready to connect them. This is done by selecting a session in the Directory listing (1) and clicking the "Connect" button underneath it (2). After this the session will appear under "Participants" on the right hand side as illustrated below (3). Do not connect both sessions in one go! We want separate connections - the phone's first session will be used by the DAW controller and the second for general purpose MIDI communication.
In order to establish the second connection (which will be used by TouchDAW's keyboard and XY-controllers) another session needs to be created on the PC side. Do as described in 'Step 1' above, then connect the phones' second session to the newly created one (ie. repeat 'Step 2').
There is no step 3. The RTP connections are now made and the phone is ready to exchange MIDI data with the computer. Note that on OS X it will take a couple of seconds (during which OS X's Network MIDI driver checks out the connection quality) until the session becomes fully functional.
What is left to do is setting up your sequencer so that it uses the correct network MIDI ports in the correct places. This is covered under sequencer setup
RTP with mnet / MIDIHub
mnet should detect TouchDAW's sessions automatically and will add two channels named "tdaw (and_XX) RTP 1 & 2" to the list of networked devices on the left hand side (XX being replaced by the last octet of the device's IP address). In case MIDI ports 1 and 2 are not currently patched anywhere, these two sessions will also automatically be connected MIDI wise. Alternatively drag patchlines to the MIDI ports that you want the sessions to send to. The control panel should look something like this in the end:
This only needs to be done once. After TouchDAW shuts down or when it has not yet been launched on a subsequent run, the driver will silently try to find and (re)connect the patched sessions. Note that it can take up to 15 seconds before the connection is actually made after TouchDAW comes online and your sequencer had loaded the mnet driver before.
Connecting via RTP to a session offered by the DAW machine
This covers an alternative way of making RTP connections. It may be easier in the end, but it has some prerequsites. If you just started playing around with TouchDAW it is recommended that you stick with the before-mentioned way of using the phones' local sessions and become used to the tools involved before returning here!
TouchDAW uses multicast DNS to announce its local sessions to other machines on the network. In the same way that the DAW PC will pick these up, the Android device will also pick up sessions offered by other hosts on the network, namely by the computer running the DAW.
Note: Some phones are crippled by manufacturers and can not receive multicast traffic. This is a known problem with some HTC devices and makes it impossible to detect other sessions.
Sessions that have been discovered this way will appear in an additional configuration dialog following a previous selection of "WIFI / RTP" for the app's MIDI connections. An example is shown on the right hand side (session names will be different on your system of course).
If you set TouchDAW's MIDI connection(s) to one of these sessions, it will automatically connect the session soon as it opens the corresponding MIDI port and the manual process described before is obsolete. You will see a participant appear automatically in rtpMIDI / Apple's Network MIDI control panels (which you basically do not even need to open with this approach). However, this requires that the PC side MIDI system is up and running when TouchDAW starts. On Windows this is not an issue as the rtpMIDI service will usually start at boot time, but on OS X some program using Network MIDI must be active for the system to run. Keeping this in mind and always starting the DAW before starting TouchDAW it still presents a very easy - one time configuration - way to connect: Everything should always be back in place right away.
- Both rtpMIDI and OS X will only accept connections made this way when the "Who may connect" dropdown is set to "Anyone" unless you take further action !
- On OS X a connection made this way takes a little longer to become fully functional
mnet / MIDIHub
When you set TouchDAW to connect to a session offered by the mnet driver - mhb (nilsi7_21) RTP 1 & 2 in the TouchDAW screenshot above - the control panel will show a connected device with a green name string:
mnet by default runs two local RTP sessions. To learn how to configure servers in mnet / MIDIHub see the mnet documentation.
Connecting to access restricted RTP sessions
Both rtpMIDI and Apple's MIDI Network have an option to restrict access to their RTP sessions. When the "Who may connect to me" dropdown in the lower left hand corner is set to "Only computers in my directory" then only explicitely whitelisted peers will be allowed to connect. It is not enough when a device appears 'in the directory' by means of mDNS discovery, it does take a manually added whitelist entry with full IP address and port number. Now that means that both the address and the port number need to be known. TouchDAW however will by default not use fixed local port numbers in client mode (because clients shouldn't do that and shouldn't be forced to either, it's just bad, ugly design). Instead it will let the operating system pick one. Version 1.54 adds an option to disable that behavior and run client connections to remote sessions on predefined local ports: Go to Setup / Global / MIDI System and set the 'RTP Client Flags' option to 'Fixed local ports'. Then go back to rtpMIDI / Audio MIDI setup, click the '+' button underneath the 'Directory' list and create whitelist entries for your device in the little dialog that will come up:
You can use any name you like. The device's IP address can be read from the system info dialog in TouchDAW (Setup / Global) and the port numbers will be:
6504 for the DAW controller connection and
6506 for the MIDI tools
OS X has a seperate field for the portnumber. In rtpMIDI append it to the IP address as shown in the image above. After clicking OK you should see new entries in the directory (which on OS X look different). Leave them as they are, do not connect them. With the whitelist entries in place you can now connect to the restricted sessions from TouchDAW.
iConnectMIDI (and possibly others)
There's some hardware RTP MIDI interfaces out there that equally do not allow everybody to connect to their sessions. These however do not have a whitelist, but do consider everyone who announces RTP MIDI sessions via mDNS as being 'in the directory' and ok to connect. In my eyes this is conceptually flawed, because clients do not necessarily need to also be servers or vice versa (the best example being the iConnectMIDI boxes themselves, which only operate in server mode). It also raises the question why one would need to restrict something in first place when everybody can unlock it by further cloaking the network with Bonjour anouncements anyway.
However, if it doesn't work, the 'bug' will of course be in the Android app, so there's another option that will not only nail down the local ports, but also keep publishing services via DNS. Set this before selecting one of the interface's sessions as a MIDI connection in TouchDAW.
Additionally please be aware that the iConnectMIDI boxes will only accept a single client per session and will reply with the same "connection refused" opcode on every further connection attempt. If you had set the new options in TouchDAW but still can not connect, it is likely that some other client is already connected.
Only make use of these options when you need to. Reset them when you don't. Just allowing 'Anyone' to connect may be both the simpler and the better solution in the end (it's only about your local network after all). Especially the second option creates useless network traffic and may have confusing side-effects as it announces sessions that do not really exist.