What's New in 1.5
The following information is current for our 1.5 release of Cosmovox now available in the App Store. Open Sound Control (OSC) support for Cosmovox was added in our 1.3 update, however Cosmovox's OSC support has undergone an overhaul for 1.5 introducing several new messages, a new namespace, and OSCulator support. OSCulator is a powerful software hub for multimedia devices which runs under MacOS X. With OSCulator as a middleman, Cosmovox can be used to control MIDI devices and software (among other things).
Open Sound Control (OSC)
By using Open Sound Control (OSC) with Cosmovox, you are given the powerful ability to control an Open Sound Control (OSC) compatible software musical instrument on a desktop computer (or other OSC compatible device) through use of the iPhone's accelerometer. Open Sound Control (OSC) is a powerful and general communications protocol for computers, sound synthesizers and multimedia devices. Open Sound Control (OSC) was conceived and developed at the UC Berkeley Center for New Music and Audio Technology (CNMAT). An in-depth description of Open Sound Control (OSC) can be found here.
Cosmovox is not intended to be a general OSC client for the iPhone like TouchOSC, OSCemote, and Mrmr OSC Controller. These are interesting and useful OSC clients for the iPhone and are quite worthy of purchase. What is interesting and unique about Cosmovox as an OSC device, is how its innovative motion-controlled performance interface and its powerful tuning abilities can be used to control synthesizers, samplers and effects processors of your own design. OSC support expands the sonic palette of Cosmovox immensely while preserving the unique individuality of the instrument.
Cosmovox cannot act as an OSC server and be controllable by other OSC clients at this time. We will add this ability in the future -- demand can move this feature higher up on our todo list.
Cosmovox OSC Support
Cosmovox (versions 1.3 and higher) can act as an OSC client by broadcasting performance information to an OSC server which is listening for OSC network packets. Cosmovox sends its OSC information using UDP datagrams. For greater reliability, it is recommended that a Wi-Fi network be used between Cosmovox on your iPhone and your OSC server host, however Cosmovox will allow OSC to be sent over a carrier-based network such as EDGE or 3G after providing a warning.
How to Enable OSC with Cosmovox
Cosmovox Open Sound Control functionality is enabled under the Cosmovox menu in the iPhone Settings application. There are several relevant controls under Settings:
When this toggle is set to the ON position, Cosmovox will immediately broadcast OSC datagrams upon launch and will continue until the program is terminated. When set to the OFF position, Cosmovox will not broadcast any OSC information.
This is the IP address or domain name of an OSC server, typically a desktop computer running a software synthesizer which can parse and act upon OSC messages. The default value of 127.0.0.1 is a special network address which refers to "localhost" or the iPhone itself. We chose this default such that casual users of Cosmovox who might experiment and turn OSC on do not spam network packets across their carrier network. We think AT&T would probably appreciate this default setting. The user needs to change this value to a reachable IP address which has a functioning OSC server that can parse Cosmovox's OSC messages.
OSC Server PortThis default port value, 8888, can be used in most circumstances. The server needs to be configured to listen on the same port number as the Cosmovox OSC client broadcasts on.
Cosmovox OSC Messages
The following are the currently supported Cosmovox Open Sound Control messages. An OSC server needs to be programmed or configured to respond to a subset of these messages for Cosmovox to exert remote control over it. More messages will be added in future updates.
/Cosmovox/Frequency floatValue (Hz)
The current instantaneous frequency. The current Cosmovox scale selection, range, and fundamental values determine the set of possible frequency values. When the Cosmovox built-in synthesizer is rendering audio, this value is updated 20 times per second. When the built-in synthesizer is off, this value is updated 100 times per second.
/Cosmovox/Amplitude/Ramptime floatValue (0.0 - 1.0) floatValue (milliseconds)
The current instantaneous amplitude and suggested interpolation duration. This pair of values is updated 20 or 100 times per second.
/Cosmovox/Portamento floatValue (milliseconds)
The last selected Portamento value from Cosmovox. This message is only sent when the Cosmovox portamento slider is changed.
/Cosmovox/Acceleration/xyz floatValue floatValue floatValue
These are raw, unmodified values obtained from the iPhone's 3-axis accelerometer hardware. These values are updated 20 or 100 times per second.
/Cosmovox/Note/Normalized floatValue (pitch) floatValue (amplitude) integerValue (trigger)
This is a note event with a pitch value, an amplitude, and an integer trigger (note on/off). Cosmovox converts its instantaneous frequency to a MIDI pitch value, and normalizes it to the range of 0.0 to 1.0 in order to create the pitch value for this event. The application OSCulator requires pitch information in this form. Several of Cosmovox's scales will not be accurately represented using pitches quantized in this manner. Please blame the lingering malaise of MIDI not Leisuresonic. The amplitude value is also in the range of 0.0 - 1.0. The trigger is either 1 (note-on) or 0 (note-off). A note-on event, and a note-off for the previous event are sent when motion of the iPhone changes Cosmovox's current scale degree.
/Cosmovox/note/midipitch integerValue (pitch) integerValue (velocity) integerValue (trigger)
This is a note event with a pitch value, a velocity, and an integer trigger (note on/off). Cosmovox converts its instantaneous frequency to a MIDI pitch value in the range of 0 to 127 for this event. Several of Cosmovox's scales will not be accurately represented using pitches quantized in this manner. Please blame the lingering malaise of MIDI, not Leisuresonic. The velocity value has a range of 0 to 127. The trigger is either 1 (note-on) or 0 (note-off). A note-on event, and a note-off for the previous event are sent when motion of the iPhone changes Cosmovox's current scale degree. The case of "note" and "midipitch" in the message name will change in Cosmovox 1.6+. It will reflect the same namespace conventions as our other messages: "/Cosmovox/Note/Midipitch". Oops.
/Cosmovox/Note/Frequency floatValue (frequency) floatValue (amplitude) integerValue (trigger)
This is a note event with a frequency value, an amplitude, and an integer trigger (note on/off). It is recommended that this note event be utilized, when possible, in lieu of /Cosmovox/Note/Normalized and /Cosmovox/Note/Midipitch. All of Cosmovox's scales are accurately represented using this note event. This OSC event is easily supported in Max5 and most of the other OSC compatible audio environments listed on this page (with the exception of OSCulator and Reaktor). Cosmovox provides its unmodified instantaneous frequency value of 0 to 22050 Hz for the frequency value of this event. The amplitude value has a range of 0.0 to 1.0 and the trigger is either 1 (note-on) or 0 (note-off). A note-on event, and a note-off for the previous event are sent when motion of the iPhone changes Cosmovox's current scale degree.
Selecting OSC Messages with Cosmovox
It is helpful to reduce Cosmovox's workload by choosing which OSC messages to be sent during performance. This is particularly important if you are choosing to transmit OSC messages over a carrier network. The following OSC configuration switches are accessible in the Settings application (as of the 1.5 update):
Continuous DataWhen set to the "On" position, Cosmovox enables the /Cosmovox/Frequency and /Cosmovox/Amplitude/Ramptime messages.
Accelerometer DataWhen set to the "On" position, Cosmovox enables the /Cosmovox/Acceleration/xyz message.
OSCulator EventsWhen set to the "On" position, Cosmovox enables the /Cosmovox/Note/Normalized message.
Midipitch EventsWhen set to the "On" position, Cosmovox enables the /Cosmovox/Note/Midipitch message.
Frequency EventsWhen set to the "On" position, Cosmovox enables the /Cosmovox/Note/Frequency message.
Slider EventsWhen set to the "On" position, Cosmovox enables the /Cosmovox/Portamento message. All of Cosmovox's sliders will have OSC messages synthesizer control sliders will have corresponding OSC messages in a future update. This switch will enable them as a group.
OSC Compatible Software
There are a growing number of music applications which support OSC. We provide a Cosmovox OSC interface example for Cycling 74's Max5 (/Max/MSP/Jitter). Max5 is a graphical programming environment for music and multimedia and is arguably the most popular OSC development platform. A 30-day free trial can be downloaded here for both Mac OS X and Windows XP/Vista.
Cosmovox-OSC-FM.maxpat is a software synth example built using Max5. It demonstrates each of the currently implemented OSC messages in Cosmovox.
While Max5 is Leisuresonic's recommended OSC platform for Cosmovox, there are notable alternatives:
Thanks to the kind help of the developer of OSCulator, Cosmovox will have Osculator support in version 1.5; with this interface between OSCulator and Cosmovox, you will be able to use Cosmovox to control conventional MIDI applications that run under MacOS X.
We have listed OSC capable software environments that we are confident have the ability to reconcile Cosmovox's OSC message subset. In a future update we will expand Cosmovox's OSC messages to allow smooth support within Reaktor and other legacy MIDI environments which have added Open Sound Control support.