Open Sound Control recording and playback

OSCseq is a basic OSC sequencer. It's a timeline tool that can record and play back any Open Sound Control message, has basic editing functionality, supports automatic OSC device discovery (Bonjour), has an unrestricted address and argument space and fully supports NTP time tags.


Quick overview

Here's an overview of the functionality in the main screen:

1) Transport controls
  • Back (F5)
  • Toggle Play (F6)
  • Toggle Record (F7)
  • Toggle Loop (F8)

2) Info controls
  • BPM (double-click to edit)
  • Step size in bars per cell (double-click to edit)
  • Amount of time selected
  • Caps lock keyboard base octave (double-click to edit)

3) OSCseq's IP address and port
If your OSC source doesn't support auto-detecting OSC devices on the network, use these to manually set its destination to OSCseq. OSCseq's receiving port number can be changed in the Preferences.

4) Connectivity indicators
Red = incoming, green = outgoing. These indicators blink when OSC messages are received or sent. If the green indicator shows a cross, this means that there are no active output destinations. You can add output destinations in the OSC Connections screen.

5) Add detected OSC destinations
Whenever an OSC message is received that is not already in your arrangement, the plus icon will blink red. Clicking it will pop up a menu that allows you to add the detected addresses to your arrangement.

6) Track OSC address
This is the OSC address that all events in this track are sent to and recorded from. Double-click to edit. When you collapse a track, the address is displayed in a grouped mode (as seen to the right).

7) Loop indicators
Click and drag to re-position. Also, pressing Cmd + R sets the loop to match the current selection.

8) Selection
Clicking and dragging in the grid creates a selection area that you can use to perform actions on events, such as Copy, Paste, Quantize, Interpolate, etc.

9) Events
Recorded or newly created OSC messages are displayed as events in the grid. An event can contain any type of value, including Integers, Floats and Strings. How events are displayed can be changed in the Track settings. Alternatively, you can switch the view to Overview mode by pressing Tab.

Shortcut keys

The power of OSCseq lies in the shortcut keys. Most functionality is not visible except for in the menu. The best way to get an overview of the shortcut keys in OSCseq is to browse the menu.

OSC Connections

The OSC Connections screen is used to add output destinations.

1) Enable sending
If you check this box, OSCseq will send all events it plays to this destination.

2) Enable sending system messages
If you check this box, OSCseq will send system messages to this destination. System messages include playing state (/Playing 1 or 0) and tempo changes (/Tempo 136.0).

3) New destination dropdown
If you want to add a new OSC destination, check this menu to see which destinations have automatically been detected on your network. If you can't find the destination you're looking for or your OSC destination does not support automatic discovery, you can add it manually by filling in its IP address and port. Make sure though that it is in the same network as OSCseq.

Track settings

Open the track settings by positioning the selection area on the track you want to configure and pressing Cmd + ' or choosing Settings from the Track menu.

1) OSC Address
The track's OSC address can be edited here in addition to double-clicking the track's title in the main window.

2) Track type
The track type determines how the events of this track are displayed.

3) High density input filter
Sometimes, continuous OSC event streams (i.e. sensor data) can generate a lot of redundant events. In order to limit the amount of events that are recorded, this setting filters events during recording. The filtering is based on how close the value of a new event is to the previously recorded event and to how close the events are in time.

There is one track setting that is not represented in the Track Settings window; the collapsed state. By pressing Cmd + ; or choosing Toggle Collapse from the Track menu, you can change the visual appearance of a track, making it more narrow. This also chooses a different representation of the OSC address in the title, grouping equal address nodes.

Overview mode

By pressing Tab, you can switch between normal mode and overview mode. In overview mode, events are represented more graphically based on their values and the track type of their track.

The grid, zooming and step size

The grid in OSCseq represents time in beats. This means that the speed at which your events are played back is based on the Beats Per Minute set in the Info controls. Note though that the grid is not limiting the time resolution of your events, it is merely used for navigation. To navigate the time line in a higher granularity, zoom in by pressing Cmd + (plus) or - (minus) on your numpad. This will decrease the step size found in the info controls. The step size simply determines the amount of beats per grid cell.

Caps lock keyboard

If you want to create events with values that conform to MIDI notes (C4 = note number 60) more easily, use the caps lock keyboard. If caps lock is on, letters typed on your keyboard will be translated to note numbers. Note the octave indicator in the top bar: Q = C4. Double-click this to adjust the base octave or use the menu (Control -> Octave Up / Down) or the keyboard shortcuts (Cmd Shift + and Cmd Shift - or numpad / and *).

Receiving events with time tags

OSCseq makes good use of time tags. If your OSC source generates time tags (as of yet, most implementations don't), take care of the following. The system clock of your OSC source needs to be synchronized to the one of the computer OSCseq is running on. The more the clocks are out of sync, the more offset you will notice in the position of the events that are recorded by OSCseq. If the time tags of incoming events are off by more than half a second, OSCseq will display a warning and you will need to synchronize the two system clocks before continuing to record events in OSCseq.

Note: if the system clocks of OSCseq and other OSC devices are not matched exactly, this doesn't mean you can't benefit of time tags. They will still be used to keep a very accurate relative distance between the evens, preventing network latencies to play games with your timing.

Sending events with time tags

OSCseq always sends messages with time tags. If your OSC destination takes time tags into account (as of yet, most implementations don't), it will wait with executing the incoming events until exactly the moment specified by the time tag. If the OSC messages have arrived earlier than the time they are supposed to be used, your OSC destination can buffer them internally and when the time of the time tag arrives, it can execute them with very precise timing, overcoming issues like network jitter.

This means that typically you will want OSCseq to send your messages a little in advance. For this you can set the OSCseq's Playback anticipation time in the Preferencs.


The preferences contain OSCseq's global settings.

1) OSCseq's own IP address
This is the IP address of the computer OSCseq is running on. If you want to send OSC to OSCseq from a source that doesn't support automatic detection of OSC devices on the nework, you can fill in this IP address manually.

2) OSCseq's input port
OSCseq will receive OSC messages on this port. If the default port is already in use by another application on your computer when OSCseq is started, OSCseq will automatically search for a new available input port. If you want to send OSC to OSCseq from a source that doesn't support automatic detection of OSC devices on the nework, you can fill in this port number manually.

3) Playback anticipation time
The amount of time OSCseq sends out events too early. For more info see Sending events with time tags.

4) Enable OSC thru
If this box is checked, OSCseq will automatically send all incoming messages to all active destinations added in the OSC Connections.

Controlling OSCseq

To control OSCseq with OSC, send it one of the following messages, prepended with /oscseq:
  • /play (1 or 0, int or float) - sets playing on or off
  • /record (1 or 0, int or float) - sets recording on or off
  • /tempo (int or float) - sets the tempo in beats per minute
  • /doplay - sets playing on
  • /dostop - sets playing off
  • /back - jumps to the loop starting point
  • /cleartrack (track number, starting from 1) - clears all events in a track

For example, sending /oscseq/tempo 130.5 to OSCseq will set OSCseq's tempo to 130.5 beats per minute.