Close

Experimental:Bitwig

Bitwig Studio

Bitwig Studio is a digital audio workstation (DAW) and music production software. It offers both linear and non-linear workflows for sound creation, recording, live performance, and environmental audio. Bitwig Studio is designed to be a complete package for sound exploration and delivery of audio experiences.

Bitwig Studio Logo RGB.png

TouchDesigner Integration

  • Bitwig is integrated with TouchDesigner through the TDBitwig component set.

Key Bitwig Features

  • Audio Mixing: Bitwig has a superior mixing bus for mixing sound.
  • Modulation System: The modulation system allows you to modulate any device, VST plug-in, parameter, in turn supporting bidirectional modulation of TouchDesigner parameters through TDBitwig.
  • Hardware Controller Integration: Bitwig supports a wide range of music creation and performance controllers, making it an ideal solution for controlling TouchDesigner through TDBitwig.
  • The Grid: The Grid is a modular sound design environment, sharing a modulation paradigm similar to both Analog FM Synthesis and TouchDesigner's CHOPs.
  • Sampler: Includes a powerful multisample editor.
  • Extensibilty with the Bitwig SDK: Bitwig supports a publicly available SDK for extending functionality with custom Java code.
  • Links...

TDBitwig

TDBitwig is a set of TouchDesigner components that allow for communication between Bitwig Studio and TouchDesigner. The TDBitwig functionality enables users to create custom audio-visual performances by integrating real-time visuals with live audio output.

With TDBitwig, TouchDesigner can control Bitwig Studio parameters, such as tempo, track properties, clip launching, and device parameters. Conversely, Bitwig Studio can also control TouchDesigner parameters for creating tightly integrated audio and visuals.

Bitwig supports a wide array of hardware controllers for live performances and show control. TouchDesigner can now deeply connect with these devices through Bitwig. TouchDesigner is an interoperability platform that provides access to a wide array of hardware devices, APIs, the internet etc. Read more about TouchDesigner interoperability. Bitwig artists can deeply interface with a wider range of systems through TouchDesigner. Bitwig controlling TouchDesigner can operate as an advanced show controller for live theatre, environmental experiences and music performances.

TDBitwig is a powerful tool that enables the creation of generative, immersive audio-visual performances and installations by combining the real-time audio processing capabilities of Bitwig Studio with the real-time 3D rendering capabilities of TouchDesigner. With its ability to generate audio visual effects simultaneously, TDBitwig empowers artists to craft complex and captivating experiences that seamlessly blend sound and vision.

Overview

The TDBitwig components are designed to enable users to control and manipulate various features of Bitwig Studio from within TouchDesigner. These components provide a bridge between the two software platforms, allowing for seamless integration and communication via OSC messaging.

Installation

Components

Palette:tdBitwigPackage: The entire toolset of TDBitwig components is provided with updating capability for deployed TDBitwig components. When an update for TDBitwig is released go the Palette and place tdBitwigPackage into your file and press Update button. All your deployed components will be udpated automatically. Then delete the package when you finished as this package component is not required for operation.

Palette:bitwigMain: A singleton component that houses the Python extension responsible for communication with Bitwig Controller Java Extension via OSC protocol. You need only one of these components, and you need this component first to start using TDBitwig as it hosts the extension communication and OSC layer.

Palette:bitwigSong: A component that communicates with the main Bitwig transport and arranger. It has bidirectional access to all transport features like Play Stop BPM etc. It connects to the arranger timeline and supports callbacks for passed timeline cues.

Palette:bitwigTrack: A component that communicates with the specified track object in Bitwig. Standard controls for Volume, Mute and Solo are bidirectional. A level channel receives the track amplitude envelope at control rate.

Palette:bitwigClipLauncher: A component that communicates with the specified track objects and clipLauncher system. Permits the firing of specified clip from the Bitwig track’s clipslots. Clipevents are received as playing clipIndex channels and Python callbacks for playing and queued clips.

Palette:bitwigNote: A component that receives Note events as chop channels where each of the 128 notes has its own CHOP channel. By default only Note events that have triggered in the past are exposed. A python callback for onNoteEvent is generated for passing noteOn events and noteOff events. Note with velocity 0 is assumed as a Note Off event.

Palette:bitwigRemotesDevice]: A component that communicates with Bitwig remote control pages. Remote control page banks are groups of UI elements that can be mapped to any parameter found in a device. Each remote page gives bidirectional control to device parameter. Remote control pages are groups of 8 parameters per page. Unused remote parameter slots in a Bitwig remotes page look like empty parameters in TouchDesigner. Used ones are dynamically matched to the label name of the controller name in Bitwig.

Palette:bitwigRemotesTrack: A component with identical function to the bitwigDeviceControls component dedicated to global track control of Bitwig parameters. Track parameters can be mapped to any parameter in any track in bitwig. This means any parameter in the device chain can be mapped to these global controls. This gives TouchDesigner global control of any selected set of parameter in any track, in groups of 8 controls per page. Unused remote parameter slots in a Bitwig remotes page look like empty parameters in TouchDesigner. Used ones are dynamically matched to the label name of the controller name in Bitwig.

Palette:bitwigRemotesProject: A component with identical function to the bitwigRemotesDevice and bitwigRemotesTrack component(s) dedicated to global project control of Bitwig parameters. Project remote parameters can be mapped to any parameter in Bitwig. This means session wide, any parameter can be mapped to these global controls. This gives TouchDesigner global control of any selected set of parameter, in groups of 8 controls per page. Unused remote parameter slots in a Bitwig remotes page look like empty parameters in TouchDesigner. Used ones are dynamically matched to the label name of the controller name in Bitwig.

API and Communication Explained

  • TDBitwig is a set of components that communicate with Bitwig using the Bitwig Controller Extension API (Java).
  • The OSC protocol is used to bidirectionally communicate with Bitwig and TouchDesigner.
  • bitwigComps bidirectionally communicates via OSC to an abstract general Bitwig cursor track object. This Bitwig object creates a generic interface through which TouchDesigner creates a durable, re-name-able, moveable connection. No word strings are used for mapping data. Instead, a fixed number of cursor objects are made available to TouchDesigner through which each bitwigComp connects to the desired Bitwig object through an automatically assigned cursor object. The connection to TouchDesigner is durable in the sense that the cursor object will persist as long as it is pinned and the TouchDesigner component is not deleted. If the TouchDesigner object is deleted, a new connection is easily recreated by adding a new Bitwig comp and pinning the scope of the TDBitwig component to the desired Bitwig user interface object.
  • TouchDesigner maps to individual parameters using a Bitwig page object that holds a fixed set of 8 customizable remote control/parameter slots. This offloads the mapping of parameters to the standard workflow in Bitwig. TouchDesigner can simply scope any Bitwig controller page and on the TouchDesigner side you will have direct access to the knobs in Bitwig via the corresponding parameter in TouchDesigner.

TouchDesigner and Bitwig Grid

The Bitwig Grid device provides a pathway for passing audio and controller data at audio rates. This feature is powerful permitting an easy way for Bitwig and TouchDesigner to communicate in the audio rate domain both as an audio signal or control voltage (CV). This feature set is outside the scope of TDBitwig which works at controller rate via an OSC communication layer. The TDBitwig OSC protocol domain provides a framework to enable complete integration and bidirectional control of TouchDesigner and Bitwig via parameters, other user interface elements, clip events and note events. Meanwhile, Bitwig Grid and TouchDesigner’s CHOPs profide a procedural toolset for manipulating high-resolution audio and cv data.