Skip to content

All BitwigBuddy Actions

This page combines all available Bitwig actions.

Clip Actions

Clip actions allow you to manipulate clips in Bitwig Studio. These actions include creating, renaming, and coloring clips.

Clip Actions List

ActionDescriptionExample
Clip CreateCreates a new clip (Slot, Length). If in Arranger mode, slot param will be ignoredClip Create(3, 16)
Clip DeleteDeletes the selected clipClip Delete()
Clip SelectSelects a clip by indexClip Select(2)
Clip DuplicateDuplicates the selected clipClip Duplicate()
Clip Loop OnEnables looping for the selected clipClip Loop On()
Clip Loop OffDisables looping for the selected clipClip Loop Off()
Clip RenameRenames the selected clipClip Rename("Intro")
Clip ColorSets the color of the selected clipClip Color("#FF0000")
Clip MoveMoves the selected clip to a specified positionClip Move(4)
Clip OffsetSets the playback start offset for the selected clipClip Offset(2.5)
Clip AccentSets the accent value for the selected clipClip Accent(0.75)
Clip LengthChanges the length of the selected clipClip Length(8.2)

Clip Actions Example

plaintext
// Create a clip and set its properties
Clip Create(3, 16)
Clip Rename("Intro")
Clip Color("#FF0000")

// Enable looping for the clip
Clip Loop On()

// Set the clip's accent and length
Clip Accent(0.8)
Clip Length(8)

Device Actions

Device actions allow you to manipulate devices in Bitwig Studio. These actions include inserting devices and VSTs.

Device Actions List

ActionDescriptionExample
Insert DeviceInserts a Bitwig deviceInsert Device("Drum Machine")
Insert VST3Inserts a VST3 pluginInsert VST3("Reverb")

Device Actions Example

plaintext
// Insert a device and a VST
Insert Device("Drum Machine")
Insert VST3("Reverb")

Drum Pad Actions

Drum pad actions allow you to manipulate drum pads in Bitwig Studio. These actions include selecting pads, inserting devices, and managing files within drum pads.

Drum Pad Actions List

ActionDescriptionExample
Select Drum PadSelects a drum pad by noteDrum Pad Select ("C1")
Drum Pad Insert EmptyCreates an empty drum padDrum Pad Insert Empty("C#2", "Name", "#D00000)
Drum Pad Insert DeviceInserts a Bitwig device into the drum padDrum Pad Insert Device("C1", "Reverb")
Insert File In Drum PadInserts a file into the selected drum padInsert File In Drum Pad("C1", "c:\MySamplesDir\sample.wav")
Insert VST3 In Drum PadInserts a VST3 plugin into the selected drum padInsert VST3 In Drum Pad("C1", "Reverb")

Drum Pad Actions Example

plaintext
// Select a drum pad
Drum Pad Select("C1")

// Insert a device into a drum pad
Drum Pad Insert Device("C1", "Reverb")

// Create an empty drum pad with name and color
Drum Pad Insert Empty("C#2", "Snare", "#D00000")

// Insert a file into a drum pad
Insert File In Drum Pad("C1", "c:\MySamplesDir\sample.wav")

// Insert a VST3 plugin into a drum pad
Insert VST3 In Drum Pad("C1", "Reverb")

State Functions and Variables

BitwigBuddy provides a set of functions to retrieve state information from Bitwig Studio. These functions can be used in macros to access information about the current track, device, clip, transport, and more.

Overview of State Functions

State functions allow you to:

  • Get information about the current track (name, number, color, etc.)
  • Retrieve details about the current device
  • Access clip properties and status
  • Check transport settings (BPM, time signature, etc.)
  • Get project information

These values can be used in your macros for conditional logic, displaying information, or creating dynamic behaviors.

Function List

Track Information

FunctionReturn TypeDescription
getCurrentTrackName()StringGets the name of the currently selected track
getCurrentTrackNumber()IntegerGets the position of the current track (1-based index)
getCurrentTrackColor()StringGets the color of the current track as hex code (without #)
isCurrentTrackMuted()BooleanChecks if the current track is muted
isCurrentTrackSoloed()BooleanChecks if the current track is soloed
isCurrentTrackArmed()BooleanChecks if the current track is armed for recording
getCurrentTrackVolume()DoubleGets the current track volume (0.0 to 1.0)
getCurrentTrackPan()DoubleGets the current track pan position (-1.0 to 1.0)
getTrackCount()IntegerGets the total number of tracks in the current project

Device Information

FunctionReturn TypeDescription
getCurrentDeviceName()StringGets the name of the currently selected device
isCurrentDeviceEnabled()BooleanChecks if the current device is enabled
isCurrentDeviceWindowOpen()BooleanChecks if the current device window is open
getDeviceCount()IntegerGets the total number of devices in the current track

Clip Information

FunctionReturn TypeDescription
getCurrentClipName()StringGets the name of the currently selected clip
getCurrentClipColor()StringGets the color of the current clip as hex code (without #)
isCurrentClipLooping()BooleanChecks if the current clip is set to loop
getCurrentClipLength()DoubleGets the length of the current clip in beats
isCurrentClipPlaying()BooleanChecks if the current clip is playing
isCurrentClipRecording()BooleanChecks if the current clip is recording
isCurrentClipSelected()BooleanChecks if the current clip is selected

Transport Information

FunctionReturn TypeDescription
getCurrentBpm()DoubleGets the current project tempo in BPM
getTimeSignatureNumerator()IntegerGets the numerator of the current time signature
getTimeSignatureDenominator()IntegerGets the denominator of the current time signature
isPlaying()BooleanChecks if transport is currently playing
isRecording()BooleanChecks if transport is currently recording
getPlayPosition()DoubleGets the current play position in beats
isMetronomeEnabled()BooleanChecks if the metronome is enabled
isArrangerLoopEnabled()BooleanChecks if the arranger loop is enabled

Project Information

FunctionReturn TypeDescription
getProjectName()StringGets the name of the current project

Scene Information

FunctionReturn TypeDescription
getCurrentSceneIndex()IntegerGets the index of the current scene
getCurrentSceneName()StringGets the name of the current scene

Using State Functions in Macros

Here's an example of how to use these functions in a macro:

Macro: "Get Functions and Variables"
Description: "Examples of get functions."
Author: "Centomila"

// Track and project information example

// Assign the current track name to a variable
var trackName = getCurrentTrackName()

Wait (1500)
// Show the track name in a message popup
Message(Current track name is: ${trackName})

Wait (1500)
// Get track position (number)
var trackNumber = getCurrentTrackNumber()
Message(Track position: ${trackNumber})

Wait (1500)
// Get device information
var deviceName = getCurrentDeviceName()
Message(Current device: ${deviceName})

Wait (1500)
// Get transport information
var bpm = getCurrentBpm()
Message("Project tempo: ${bpm} BPM")

Wait (1500)
// Time signature information
var num = getTimeSignatureNumerator()
var denom = getTimeSignatureDenominator() 
Message("Time signature: ${num}/${denom}")

// Send information to the console for logging
Console("== Bitwig State Information ==")
Console("Track: ${trackName} (#${trackNumber})")
Console("Device: ${deviceName}")
Console("Tempo: ${bpm} BPM")
Console("Time signature: ${num}/${denom}")

Using Variables in Expressions

You can use these functions directly in expressions or assign them to variables:

// Direct use in expressions
Message("Current project: ${getProjectName()}")

// Using variables
var trackName = getCurrentTrackName()
var deviceName = getCurrentDeviceName()
var isArmed = isCurrentTrackArmed()
Message("Track: ${trackName}, Device: ${deviceName}")

// Using in conditional statements
if (${isArmed}) {
    Message("Track is armed for recording!")
}

if (!${isArmed}) {
    Message("Track is NOT armed for recording!")
}

Notes for Using State Functions

  • These functions provide read-only access to Bitwig Studio's state
  • Values are retrieved at the moment the function is called
  • For real-time monitoring, you may need to call these functions periodically

Step Actions

Step actions allow you to manipulate individual steps in a MIDI pattern. These actions include setting velocity, length, and other properties for selected steps.

Step Actions List

ActionDescriptionExample
Step Selected VelocitySets the velocity for selected stepsStep Selected Velocity(100)
Step Selected LengthSets the length for selected stepsStep Selected Length(0.5)
Step Selected ChanceSets the chance value for selected stepsStep Selected Chance(0.75)
Step Selected TransposeTransposes the selected stepsStep Selected Transpose(12)
Step Selected GainSets the gain for selected stepsStep Selected Gain(0.8)
Step Selected PressureSets the pressure (aftertouch) for selected stepsStep Selected Pressure(0.6)
Step Selected TimbreSets the timbre for selected stepsStep Selected Timbre(0.7)
Step Selected PanSets the pan value for selected stepsStep Selected Pan(0.5)
Step Selected Velocity SpreadSets the velocity spread for selected stepsStep Selected Velocity Spread(0.2)
Step Selected Release VelocitySets the release velocity for selected stepsStep Selected Release Velocity(0.5)
Step Selected Is Chance EnabledEnables/disables chance for selected stepsStep Selected Is Chance Enabled(true)
Step Selected Is MutedMutes/unmutes selected stepsStep Selected Is Muted(true)
Step Selected Is Occurrence EnabledEnables/disables occurrence for selected stepsStep Selected Is Occurrence Enabled(true)
Step Selected Is Recurrence EnabledEnables/disables recurrence for selected stepsStep Selected Is Recurrence Enabled(true)
Step Selected Is Repeat EnabledEnables/disables repeat for selected stepsStep Selected Is Repeat Enabled(true)
Step Selected OccurrenceSets the occurrence condition for selected stepsStep Selected Occurrence(FIRST)
Step Selected RecurrenceSets the recurrence pattern for selected stepsStep Selected Recurrence(4, 15)
Step Selected Repeat CountSets the repeat count for selected stepsStep Selected Repeat Count(4)
Step Selected Repeat CurveSets the repeat timing curve for selected stepsStep Selected Repeat Curve(0.5)
Step Selected Repeat Velocity CurveSets the repeat velocity curve for selected stepsStep Selected Repeat Velocity Curve(0.3)
Step Selected Repeat Velocity EndSets the end velocity for note repeatsStep Selected Repeat Velocity End(0.4)
Step SetSets multiple properties for selected stepsStep Set(velocity=100, length=0.5)

Step Actions Example

plaintext
// Set velocity and length for selected steps
Step Selected Velocity(100)
Step Selected Length(0.5)

// Enable chance and set its value
Step Selected Is Chance Enabled(true)
Step Selected Chance(0.75)

// Set recurrence pattern and repeat count
Step Selected Recurrence(4, 15)
Step Selected Repeat Count(4)

Track Actions

Track actions allow you to manipulate tracks in Bitwig Studio. These actions include creating, renaming, and selecting tracks.

Track Actions List

ActionDescriptionExample
Create Instrument TrackCreates a new instrument trackCreate Instrument Track
Track RenameRenames the selected trackTrack Rename("Drums")
Track SelectSelects a track by indexTrack Select (2)
Track NextSelects the next trackTrack Next
Track PreviousSelects the previous trackTrack Previous

Track Actions Example

plaintext
// Create a new track and rename it
Create Instrument Track
Track Rename("Drums")

Transport Actions

Transport actions allow you to control the transport in Bitwig Studio. These actions include setting the tempo and controlling playback.

Transport Actions List

ActionDescriptionExample
BpmSets the tempoBpm(120)
PlayStarts playbackPlay()
StopStops playbackStop()

Transport Actions Example

plaintext
// Set the tempo and start playback
Bpm(120)
Play()

Utility Actions

Utility actions provide general-purpose functionality in Bitwig Studio. These actions include waiting and showing messages.

Utility Actions List

ActionDescriptionExample
WaitPauses execution for a specified timeWait(1000)
MessageDisplays a message boxMessage("Hello World!")
List CommandsLists all registered commands in the console.List Commands

Utility Actions Example

plaintext
// Wait for 1 second and display a message
Wait(1000)
Message("Hello World!")

TIP

You can also access each action category separately through the sidebar navigation.