Open Sound Control: Difference between revisions
imported>Achenar No edit summary |
No edit summary |
||
(26 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
= Open Sound Control | = Open Sound Control = | ||
Open Sound Control was created as a successor to the MIDI control protocol. It enables communication between computer software, sound synthesizers and other multimedia devices that support OSC. | Open Sound Control (OSC) was created as a successor to the MIDI control protocol. It enables communication between computer software, sound synthesizers and other multimedia devices that support OSC. | ||
Its advantages over MIDI include: an open-ended and dynamic URL-style symbolic naming scheme, symbolic and high-resolution numeric argument data, pattern matching language to specify multiple recipients of a single message, high resolution time tags and "bundles" of messages whose effects must occur simultaneously. The protocol is also not bound by specific hardware (i.e. MIDI cables and ports) and can be transferred across any network connection, even remotely via the internet. | Its advantages over MIDI include: an open-ended and dynamic URL-style symbolic naming scheme, symbolic and high-resolution numeric argument data, pattern matching language to specify multiple recipients of a single message, high resolution time tags and "bundles" of messages whose effects must occur simultaneously. The protocol is also not bound by specific hardware (i.e. MIDI cables and ports) and can be transferred across any network connection, even remotely via the internet. | ||
Line 7: | Line 7: | ||
This makes OSC much more powerful than MIDI, but due to its open-ended specification, both the OSC client ''(which sends OSC data)'' and the OSC server ''(which receives data, i.e. Renoise)'' must be separately configured, unlike MIDI which is essentially "Plug & Play". | This makes OSC much more powerful than MIDI, but due to its open-ended specification, both the OSC client ''(which sends OSC data)'' and the OSC server ''(which receives data, i.e. Renoise)'' must be separately configured, unlike MIDI which is essentially "Plug & Play". | ||
For more general information about OSC | For more general information about OSC, see the [http://en.wikipedia.org/wiki/Open_Sound_Control OSC Wikipedia page] and the [http://opensoundcontrol.org/ official OSC homepage]. | ||
Line 14: | Line 14: | ||
Renoise can use OSC in one of two ways: | Renoise can use OSC in one of two ways: | ||
# Using Renoise as an OSC server | # Using Renoise as an OSC server (receiving messages) via a preconfigured OSC message set. | ||
# Using the fully configurable and customisable Renoise scripting API. This allows you to send and receive any form of OSC message and define your own communication protocol, but obviously requires programming | # Using the fully configurable and customisable [http://scripting.renoise.com Renoise scripting API]. This allows you to send and receive any form of OSC message and define your own communication protocol, but obviously requires programming. | ||
[[Image: | |||
To set up Renoise as an OSC server, open the OSC options panel by choosing ''[[Preferences#OSC|"Edit > Preferences > OSC"]]'' from the [[Main_Screen#Upper_Status_Bar|main menu]]: | |||
[[Image:3.2_preferences-osc.png]] | |||
* '''Enable Server:''' This starts the Renoise OSC server and the network port is changed to a listening state, so you may get a firewall warning the first time this is enabled. | * '''Enable Server:''' This starts the Renoise OSC server and the network port is changed to a listening state, so you may get a firewall warning the first time this is enabled. | ||
Line 30: | Line 31: | ||
* '''Explanation Panel:''' When clicking on a command in the Command List, an explanation of what the command does is displayed here. | * '''Explanation Panel:''' When clicking on a command in the Command List, an explanation of what the command does is displayed here. | ||
* '''/evaluate(string)''' | == The Default OSC Implementation of Renoise == | ||
* '''/renoise/evaluate(string)''' | |||
Evaluate a custom Lua expression ''(e.g. renoise.song().transport.bpm = 234)''. | Evaluate a custom Lua expression ''(e.g. renoise.song().transport.bpm = 234)''. | ||
* '''/song/bpm(number)''' | * '''/renoise/song/bpm(number)''' | ||
Set the song's [[ | Set the song's [[Transport Panel#Song Parameters|current BPM]] value [20 - 999]. | ||
* '''/song/edit/mode(boolean)''' | * '''/renoise/song/edit/mode(boolean)''' | ||
Set the song's global [[Recording_and_Editing_Notes#Edit_Mode|Edit Mode]] on or off. | Set the song's global [[Recording_and_Editing_Notes#Edit_Mode|Edit Mode]] on or off. | ||
* '''/song/edit/octave(number)''' | * '''/renoise/song/edit/octave(number)''' | ||
Set the song's [[ | Set the song's [[Transport Panel#Song Parameters|current octave]] value [0 - 8]. | ||
* '''/song/edit/pattern_follow(boolean)''' | * '''/renoise/song/edit/pattern_follow(boolean)''' | ||
Enable or disable the global [[ | Enable or disable the global [[Transport Panel#Song Controls|Pattern Follow]] mode. | ||
* '''/song/edit/step(number)''' | * '''/renoise/song/edit/step(number)''' | ||
Set the song's current [[Pattern_Editor#Pattern_Editor_Control_Panel|Edit Step]] value [0 - 8]. | Set the song's current [[Pattern_Editor#Pattern_Editor_Control_Panel|Edit Step]] value [0 - 8]. | ||
* '''/song/ | * '''/renoise/song/instrument/XXX/macro1-8(number)''' | ||
Set | Set instrument XXX's [[Sampler#Macros|macro]] parameter value [0 - 1].<br /> | ||
''(XXX is the instrument index, -1 chooses the currently selected instrument)'' | |||
* '''/renoise/song/instrument/XXX/monophonic(boolean)''' | |||
Enable or disable instrument XXX's [[Instruments#Instrument_Properties|mono mode]].<br /> | |||
''(XXX is the instrument index, -1 chooses the currently selected instrument)'' | |||
* '''/song/ | * '''/renoise/song/instrument/XXX/monophonic_glide(number)''' | ||
Set instrument XXX's [[Instruments#Instrument_Properties|mono glide]] amount [0-255].<br /> | |||
''(XXX is the instrument index, -1 chooses the currently selected instrument)'' | |||
* '''/song/ | * '''/renoise/song/instrument/XXX/phrase_playback(string)''' | ||
Set the global [[ | Set instrument XXX's [[Phrase_Editor#Phrase_Controls|phrase playback mode]] [Off, Program, Keymap].<br /> | ||
''(XXX is the instrument index, -1 chooses the currently selected instrument)'' | |||
* '''/renoise/song/instrument/XXX/phrase_program(number)''' | |||
Set instrument XXX's [[Phrase_Editor#Phrase_Controls|phrase program number]] [0 - 127].<br /> | |||
''(XXX is the instrument index, -1 chooses the currently selected instrument)'' | |||
* '''/renoise/song/instrument/XXX/quantize(string)''' | |||
Set instrument XXX's [[Instruments#Instrument_Properties|quantization method]] [None, Line, Beat, Bar].<br /> | |||
''(XXX is the instrument index, -1 chooses the currently selected instrument)'' | |||
* '''/renoise/song/instrument/XXX/scale_key(string)''' | |||
Set instrument XXX's [[Instruments#Instrument_Properties|note scaling]] key [C, C#... B].<br /> | |||
''(XXX is the instrument index, -1 chooses the currently selected instrument)'' | |||
* '''/renoise/song/instrument/XXX/scale_mode(string)''' | |||
Set instrument XXX's [[Instruments#Instrument_Properties|note scaling]] mode.<br /> | |||
''(XXX is the instrument index, -1 chooses the currently selected instrument)'' | |||
* '''/renoise/song/instrument/XXX/transpose(number)''' | |||
Set instrument XXX's [[Instruments#Instrument_Properties|global pitch transpose]] [-120 - 120].<br /> | |||
''(XXX is the instrument index, -1 chooses the currently selected instrument)'' | |||
* '''/renoise/song/instrument/XXX/volume(number)''' | |||
Set instrument XXX's [[Instruments#Instrument_Properties|global volume]] [0 - db2lin(6)].<br /> | |||
''(XXX is the instrument index, -1 chooses the currently selected instrument)'' | |||
* '''/renoise/song/instrument/XXX/volume_db(number)''' | |||
Set instrument XXX's [[Instruments#Instrument_Properties|global volume]] in dB [0 - 6].<br /> | |||
''(XXX is the instrument index, -1 chooses the currently selected instrument)'' | |||
* '''/renoise/song/lpb(number)''' | |||
Set the song's current [[Transport Panel#Song Parameters|Lines Per Beat]] value [1 - 255]. | |||
* '''/renoise/song/record/metronome''' | |||
Enable or disable the [[Transport_Panel|metronome]]. | |||
* '''/renoise/song/record/metronome_precount''' | |||
Enable or disable the global [[Transport_Panel|metronome]] precount. | |||
* '''/song/record/quantization(boolean)''' | * '''/renoise/song/record/quantization(boolean)''' | ||
Enable or disable the global [[Pattern_Editor#Pattern_Editor_Control_Panel|Record Quantization]]. | Enable or disable the global [[Pattern_Editor#Pattern_Editor_Control_Panel|Record Quantization]]. | ||
* '''/song/sequence/schedule_add(number)''' | * '''/renoise/song/record/quantization_step(number)''' | ||
Set the global [[Pattern_Editor#Pattern_Editor_Control_Panel|Record Quantization]] step value [1 - 32]. | |||
* '''/renoise/song/sequence/schedule_add(number)''' | |||
Add a scheduled [[Pattern_Sequencer#Triggering_Patterns|sequence playback position]]. | Add a scheduled [[Pattern_Sequencer#Triggering_Patterns|sequence playback position]]. | ||
* '''/song/sequence/schedule_set(number)''' | * '''/renoise/song/sequence/schedule_set(number)''' | ||
Replace the currently scheduled [[Pattern_Sequencer#Triggering_Patterns|sequence playback]] position. | Replace the currently scheduled [[Pattern_Sequencer#Triggering_Patterns|sequence playback]] position. | ||
* '''/song/sequence/slot_mute(number, number)''' | * '''/renoise/song/sequence/slot_mute(number, number)''' | ||
Mute the [[Pattern_Matrix#Muting_Blocks|specified track at the specified sequence slot]] in the matrix. | Mute the [[Pattern_Matrix#Muting_Blocks|specified track at the specified sequence slot]] in the matrix. | ||
* '''/song/sequence/slot_unmute(number, number)''' | * '''/renoise/song/sequence/slot_unmute(number, number)''' | ||
Unmute the [[Pattern_Matrix#Muting_Blocks|specified track at the specified sequence slot]] in the matrix. | Unmute the [[Pattern_Matrix#Muting_Blocks|specified track at the specified sequence slot]] in the matrix. | ||
* '''/song/sequence/trigger(number)''' | * '''/renoise/song/sequence/trigger(number)''' | ||
Set the playback position to the specified [[Pattern_Sequencer#Triggering_Patterns|sequence position]]. | Set the playback position to the specified [[Pattern_Sequencer#Triggering_Patterns|sequence position]]. | ||
* '''/song/tpl(number)''' | * '''/renoise/song/tpl(number)''' | ||
Set the song's current [[ | Set the song's current [[Song_Options#Playback_Options|Ticks Per Line]] value [1 - 16]. | ||
* '''/song/track/XXX/device/XXX/bypass(boolean)''' | * '''/renoise/song/track/XXX/device/XXX/bypass(boolean)''' | ||
Enable or disable the [[Effect Chains#Common_Effect_Layout_and_Controls|bypassing]] of an [[Effect Chains|effect device]].<br /> | |||
''(XXX is the device index, -1 chooses the currently selected device)'' | ''(XXX is the device index, -1 chooses the currently selected device)'' | ||
* '''/song/track/XXX/device/XXX/set_parameter_by_index(number, number)''' | * '''/renoise/song/track/XXX/device/XXX/set_parameter_by_index(number, number)''' | ||
Set the parameter | Set the value of a parameter of an [[Effect Chains|effect device]] [0 - 1].<br /> | ||
''(XXX is the device index, -1 chooses the currently selected device)'' | ''(XXX is the device index, -1 chooses the currently selected device)'' | ||
* '''/song/track/XXX/device/XXX/set_parameter_by_name(string, number)''' | * '''/renoise/song/track/XXX/device/XXX/set_parameter_by_name(string, number)''' | ||
Set the parameter | Set the value of a parameter of an [[Effect Chains|effect device]] [0 - 1].<br /> | ||
''(XXX is the device index, -1 chooses the currently selected device)'' | ''(XXX is the device index, -1 chooses the currently selected device)'' | ||
* '''/song/track/XXX/mute''' | * '''/renoise/song/track/XXX/mute''' | ||
Mute track XXX.<br /> | [[Pattern_Editor#Muting_Tracks|Mute track]] XXX.<br /> | ||
''(XXX is the device index, -1 chooses the currently selected device)'' | ''(XXX is the device index, -1 chooses the currently selected device)'' | ||
* '''/song/track/XXX/ | * '''/renoise/song/track/XXX/unmute''' | ||
[[Pattern_Editor#Muting_Tracks|Unmute track]] XXX.<br /> | |||
''(XXX is the device index, -1 chooses the currently selected device)'' | ''(XXX is the device index, -1 chooses the currently selected device)'' | ||
* '''/song/track/XXX/ | * '''/renoise/song/track/XXX/solo''' | ||
[[Pattern_Editor#Muting_Tracks|Solo track]] XXX.<br /> | |||
''(XXX is the device index, -1 chooses the currently selected device)'' | ''(XXX is the device index, -1 chooses the currently selected device)'' | ||
* '''/song/track/XXX/ | * '''/renoise/song/track/XXX/output_delay(number)''' | ||
Set track XXX's [[ | Set track XXX's [[Effect_Chains#Pre_and_Post_Mixer_Effects|pre-FX delay]] in ms [-100 - 100].<br /> | ||
''(XXX is the device index, -1 chooses the currently selected device)'' | ''(XXX is the device index, -1 chooses the currently selected device)'' | ||
* '''/song/track/XXX/ | * '''/renoise/song/track/XXX/postfx_panning(number)''' | ||
Set track XXX's [[Mixer#Pre.2FPost_Volume_and_Panning_Concept|post FX | Set track XXX's [[Mixer#Pre.2FPost_Volume_and_Panning_Concept|post-FX panning]] [-50 - 50].<br /> | ||
''(XXX is the device index, -1 chooses the currently selected device)'' | ''(XXX is the device index, -1 chooses the currently selected device)'' | ||
* '''/song/track/XXX/ | * '''/renoise/song/track/XXX/postfx_volume(number)''' | ||
Set track XXX's [[Mixer#Pre.2FPost_Volume_and_Panning_Concept| | Set track XXX's [[Mixer#Pre.2FPost_Volume_and_Panning_Concept|post-FX volume]] [0 - db2lin(3)].<br /> | ||
''(XXX is the device index, -1 chooses the currently selected device)'' | ''(XXX is the device index, -1 chooses the currently selected device)'' | ||
* '''/song/track/XXX/ | * '''/renoise/song/track/XXX/postfx_volume_db(number)''' | ||
Set track XXX's [[Mixer#Pre.2FPost_Volume_and_Panning_Concept| | Set track XXX's [[Mixer#Pre.2FPost_Volume_and_Panning_Concept|post-FX volume]] in dB [-200 - 3].<br /> | ||
''(XXX is the device index, -1 chooses the currently selected device)'' | ''(XXX is the device index, -1 chooses the currently selected device)'' | ||
* '''/song/track/XXX/ | * '''/renoise/song/track/XXX/prefx_panning(number)''' | ||
Set track XXX's [[Mixer#Pre.2FPost_Volume_and_Panning_Concept|pre FX | Set track XXX's [[Mixer#Pre.2FPost_Volume_and_Panning_Concept|pre-FX panning]] [-50 - 50].<br /> | ||
''(XXX is the device index, -1 chooses the currently selected device)'' | ''(XXX is the device index, -1 chooses the currently selected device)'' | ||
* '''/song/track/XXX/ | * '''/renoise/song/track/XXX/prefx_volume(number)''' | ||
Set track XXX's [[Mixer#Pre.2FPost_Volume_and_Panning_Concept|pre FX | Set track XXX's [[Mixer#Pre.2FPost_Volume_and_Panning_Concept|pre-FX volume]] [0 - db2lin(3)].<br /> | ||
''(XXX is the device index, -1 chooses the currently selected device)'' | ''(XXX is the device index, -1 chooses the currently selected device)'' | ||
* '''/song/track/XXX/ | * '''/renoise/song/track/XXX/prefx_volume_db(number)''' | ||
Set track XXX's [[Mixer#Pre.2FPost_Volume_and_Panning_Concept|pre-FX volume]] in dB [-200 - 3].<br /> | |||
''(XXX is the device index, -1 chooses the currently selected device)'' | ''(XXX is the device index, -1 chooses the currently selected device)'' | ||
* '''/song/track/XXX/ | * '''/renoise/song/track/XXX/prefx_width(number)''' | ||
Set track XXX's [[Effect_Chains#Pre_and_Post_Mixer_Effects|pre-FX width]] [0, 1].<br /> | |||
''(XXX is the device index, -1 chooses the currently selected device)'' | ''(XXX is the device index, -1 chooses the currently selected device)'' | ||
* '''/transport/continue''' | * '''/renoise/transport/continue''' | ||
Continue playback. | Continue song playback. | ||
* '''/transport/loop/ | * '''/transport/loop/block(boolean)''' | ||
Enable or disable pattern [[Transport Panel#Song Parameters|Block Loop]]. | |||
* '''/transport/loop/ | * '''/renoise/transport/loop/block_move_backwards''' | ||
Move the [[ | Move the [[Transport Panel#Song Parameters|Block Loop]] one segment backwards | ||
* '''/transport/loop/ | * '''/renoise/transport/loop/block_move_forwards''' | ||
Move the [[Transport Panel#Song Parameters|Block Loop]] one segment forwards | |||
* '''/transport/loop/pattern(boolean)''' | * '''/renoise/transport/loop/pattern(boolean)''' | ||
Enable or disable [[Transport_Panel|looping the current pattern]]. | Enable or disable [[Transport_Panel|looping the current pattern]]. | ||
* '''/transport/loop/sequence(number, number)''' | * '''/renoise/transport/loop/sequence(number, number)''' | ||
Disable or set a new [[Pattern_Sequencer#Looping_Patterns|sequence loop]] range. | Disable or set a new [[Pattern_Sequencer#Looping_Patterns|sequence loop]] range. | ||
* '''/transport/panic''' | * '''/renoise/transport/panic''' | ||
Stop playback and silence all playing instruments and | Stop song playback and silence all playing instruments and effects. | ||
* '''/transport/start''' | * '''/renoise/transport/start''' | ||
Start playback or restart playing the current pattern. | Start song playback or restart playing the current pattern. | ||
* '''/transport/stop''' | * '''/renoise/transport/stop''' | ||
Stop playback. | Stop song playback. | ||
* '''/trigger/midi(number)''' | * '''/renoise/trigger/midi(number)''' | ||
Trigger a raw MIDI event.<br /> | Trigger a raw MIDI event.<br /> | ||
''arg#1: the MIDI event as number'' | ''arg#1: the MIDI event as number'' | ||
* '''/trigger/note_off(number, number, number)''' | * '''/renoise/trigger/note_off(number, number, number)''' | ||
Trigger a Note | Trigger a [[Playing_Notes_with_the_Computer_Keyboard#Note_Off|Note OFF]].<br /> | ||
''arg#1: instrument (-1 chooses the currently selected one)''<br /> | ''arg#1: instrument (-1 chooses the currently selected one)''<br /> | ||
''arg#2: track (-1 for the current one)''<br /> | ''arg#2: track (-1 for the current one)''<br /> | ||
''arg#3: note value (0-119)'' | ''arg#3: note value (0-119)'' | ||
* '''/trigger/note_on(number, number, number, number)''' | * '''/renoise/trigger/note_on(number, number, number, number)''' | ||
Trigger a Note-On.<br /> | Trigger a Note-On.<br /> | ||
''arg#1: instrument (-1 for the currently selected one)''<br /> | ''arg#1: instrument (-1 for the currently selected one)''<br /> | ||
Line 181: | Line 230: | ||
Note that the default OSC implementation can be extended by editing the file ''"GlobalOscActions.lua"'' in the ''"Resources/Scripts"'' folder, found within the directory where you installed Renoise ''(on MacOS this is found in the app bundle). | |||
Line 189: | Line 237: | ||
=== TouchOSC via Duplex === | === TouchOSC via Duplex === | ||
The Duplex Tool comes with a Device preset for TouchOSC, an iPhone / iPod Touch / iPad app | The Duplex [[Tools|Tool]] comes with a Device preset for TouchOSC, an iPhone / iPod Touch / iPad app that allows those devices to control Renoise via OSC. To use it, select ''"TouchOSC"'' from the ''"Device"'' drop-down menu in the Duplex Browser and adjust the configuration as needed within the ''"Settings"'' dialog box. Then, using the TouchOSC app on the Apple device, you can change the values of the various knobs and sliders on the screen to control various features of Renoise. | ||
Duplex uses the [https://github.com/renoise/xrnx Renoise Scripting API] to communicate with TouchOSC, meaning that it's fully configurable, and can also be used as an example on how to wrap up your own OSC implementation in Renoise. | |||
=== Pure Data === | === Pure Data === | ||
PD (aka Pure Data) is a real-time graphical programming environment for audio, video, and graphical processing. | PD (aka Pure Data) is a real-time graphical programming environment for audio, video, and graphical processing. PD was created to explore ideas of how to further refine the Max paradigm with the core idea of allowing data to be treated in a more open-ended manner by it up to applications outside of audio and MIDI, such as graphics and video. There are [http://puredata.info/downloads different versions available to download] for PC, Mac and Linux. | ||
==== Using PD With Renoise Via OSC ==== | ==== Using PD With Renoise Via OSC ==== | ||
* First install PD, then download, unzip and open the [http://reg.s63.xrea.com/tutorial-26/sound/test-renoise-osc.zip "test-renoise-osc.pd" file] within PD. | * First install PD, then download, unzip and open the [http://reg.s63.xrea.com/tutorial-26/sound/test-renoise-osc.zip "test-renoise-osc.pd" file] within PD. | ||
* In the top left corner you can set the port number to match the OSC port number you have chosen for Renoise ''[connect localhost XXXX]''. With Edit Mode ''(Ctrl + E)'' you can edit the numbers. | * In the top-left corner you can set the port number to match the [[#Setup|OSC port number]] you have chosen for Renoise ''[connect localhost XXXX]''. With Edit Mode ''(Ctrl + E)'' you can edit the numbers. | ||
* To the right | * To the right you can start and stop playing Renoise with the ''[send / renoise / transport / start]'' and ''[send / renoise / transport / stop]'' buttons. | ||
* The test program comes with a set of commands already loaded in. Make sure a sample is loaded into into slot 00 within Renoise and press the "chord-test" button in PD. You should hear a chord being played. You can also click on the individual commands to hear the individual notes. | * The test program comes with a set of commands already loaded in. Make sure a sample is loaded into into slot 00 within Renoise and press the "chord-test" button in PD. You should hear a chord being played. You can also click on the individual commands to hear the individual notes. | ||
* If you would like to enter new OSC messages yourself: | * If you would like to enter new OSC messages yourself: | ||
** Select from the menu ''"Put -> Message"'', place the box on the screen and enter your desired command (check the | ** Select from the menu ''"Put -> Message"'', place the box on the screen and enter your desired command (check the [[#The_Default_OSC_Implementation_of_Renoise|OSC Command List]] for available commands). | ||
** Connect the new message box by hovering over the bottom left corner (the cursor will become a circle) then clicking and dragging over to the ''"sendOSC"'' box. | ** Connect the new message box by hovering over the bottom left corner (the cursor will become a circle) then clicking and dragging over to the ''"sendOSC"'' box. | ||
** Cancel edit mode with ''(Ctrl + E)'' and click the box to send the message to Renoise via OSC. | ** Cancel edit mode with ''(Ctrl + E)'' and click the box to send the message to Renoise via OSC. |
Latest revision as of 17:59, 1 April 2022
Open Sound Control
Open Sound Control (OSC) was created as a successor to the MIDI control protocol. It enables communication between computer software, sound synthesizers and other multimedia devices that support OSC.
Its advantages over MIDI include: an open-ended and dynamic URL-style symbolic naming scheme, symbolic and high-resolution numeric argument data, pattern matching language to specify multiple recipients of a single message, high resolution time tags and "bundles" of messages whose effects must occur simultaneously. The protocol is also not bound by specific hardware (i.e. MIDI cables and ports) and can be transferred across any network connection, even remotely via the internet.
This makes OSC much more powerful than MIDI, but due to its open-ended specification, both the OSC client (which sends OSC data) and the OSC server (which receives data, i.e. Renoise) must be separately configured, unlike MIDI which is essentially "Plug & Play".
For more general information about OSC, see the OSC Wikipedia page and the official OSC homepage.
Setup
Renoise can use OSC in one of two ways:
- Using Renoise as an OSC server (receiving messages) via a preconfigured OSC message set.
- Using the fully configurable and customisable Renoise scripting API. This allows you to send and receive any form of OSC message and define your own communication protocol, but obviously requires programming.
To set up Renoise as an OSC server, open the OSC options panel by choosing "Edit > Preferences > OSC" from the main menu:
- Enable Server: This starts the Renoise OSC server and the network port is changed to a listening state, so you may get a firewall warning the first time this is enabled.
- Incoming Messages: This panel simply displays messages relevant to the networking process.
- Protocol: Select the protocol which the Renoise server will use:
- Udp: Provides a high transfer rate with lower reliability than Tcp.
- Tcp: Provides a lower transfer rate than Udp with higher reliability.
- Port: Select the Port number for messages to be transferred over. Generally, a number greater than 1024 is used.
- Command List: Lists the various commands that it is possible to use to communicate with Renoise.
- Explanation Panel: When clicking on a command in the Command List, an explanation of what the command does is displayed here.
The Default OSC Implementation of Renoise
- /renoise/evaluate(string)
Evaluate a custom Lua expression (e.g. renoise.song().transport.bpm = 234).
- /renoise/song/bpm(number)
Set the song's current BPM value [20 - 999].
- /renoise/song/edit/mode(boolean)
Set the song's global Edit Mode on or off.
- /renoise/song/edit/octave(number)
Set the song's current octave value [0 - 8].
- /renoise/song/edit/pattern_follow(boolean)
Enable or disable the global Pattern Follow mode.
- /renoise/song/edit/step(number)
Set the song's current Edit Step value [0 - 8].
- /renoise/song/instrument/XXX/macro1-8(number)
Set instrument XXX's macro parameter value [0 - 1].
(XXX is the instrument index, -1 chooses the currently selected instrument)
- /renoise/song/instrument/XXX/monophonic(boolean)
Enable or disable instrument XXX's mono mode.
(XXX is the instrument index, -1 chooses the currently selected instrument)
- /renoise/song/instrument/XXX/monophonic_glide(number)
Set instrument XXX's mono glide amount [0-255].
(XXX is the instrument index, -1 chooses the currently selected instrument)
- /renoise/song/instrument/XXX/phrase_playback(string)
Set instrument XXX's phrase playback mode [Off, Program, Keymap].
(XXX is the instrument index, -1 chooses the currently selected instrument)
- /renoise/song/instrument/XXX/phrase_program(number)
Set instrument XXX's phrase program number [0 - 127].
(XXX is the instrument index, -1 chooses the currently selected instrument)
- /renoise/song/instrument/XXX/quantize(string)
Set instrument XXX's quantization method [None, Line, Beat, Bar].
(XXX is the instrument index, -1 chooses the currently selected instrument)
- /renoise/song/instrument/XXX/scale_key(string)
Set instrument XXX's note scaling key [C, C#... B].
(XXX is the instrument index, -1 chooses the currently selected instrument)
- /renoise/song/instrument/XXX/scale_mode(string)
Set instrument XXX's note scaling mode.
(XXX is the instrument index, -1 chooses the currently selected instrument)
- /renoise/song/instrument/XXX/transpose(number)
Set instrument XXX's global pitch transpose [-120 - 120].
(XXX is the instrument index, -1 chooses the currently selected instrument)
- /renoise/song/instrument/XXX/volume(number)
Set instrument XXX's global volume [0 - db2lin(6)].
(XXX is the instrument index, -1 chooses the currently selected instrument)
- /renoise/song/instrument/XXX/volume_db(number)
Set instrument XXX's global volume in dB [0 - 6].
(XXX is the instrument index, -1 chooses the currently selected instrument)
- /renoise/song/lpb(number)
Set the song's current Lines Per Beat value [1 - 255].
- /renoise/song/record/metronome
Enable or disable the metronome.
- /renoise/song/record/metronome_precount
Enable or disable the global metronome precount.
- /renoise/song/record/quantization(boolean)
Enable or disable the global Record Quantization.
- /renoise/song/record/quantization_step(number)
Set the global Record Quantization step value [1 - 32].
- /renoise/song/sequence/schedule_add(number)
Add a scheduled sequence playback position.
- /renoise/song/sequence/schedule_set(number)
Replace the currently scheduled sequence playback position.
- /renoise/song/sequence/slot_mute(number, number)
Mute the specified track at the specified sequence slot in the matrix.
- /renoise/song/sequence/slot_unmute(number, number)
Unmute the specified track at the specified sequence slot in the matrix.
- /renoise/song/sequence/trigger(number)
Set the playback position to the specified sequence position.
- /renoise/song/tpl(number)
Set the song's current Ticks Per Line value [1 - 16].
- /renoise/song/track/XXX/device/XXX/bypass(boolean)
Enable or disable the bypassing of an effect device.
(XXX is the device index, -1 chooses the currently selected device)
- /renoise/song/track/XXX/device/XXX/set_parameter_by_index(number, number)
Set the value of a parameter of an effect device [0 - 1].
(XXX is the device index, -1 chooses the currently selected device)
- /renoise/song/track/XXX/device/XXX/set_parameter_by_name(string, number)
Set the value of a parameter of an effect device [0 - 1].
(XXX is the device index, -1 chooses the currently selected device)
- /renoise/song/track/XXX/mute
Mute track XXX.
(XXX is the device index, -1 chooses the currently selected device)
- /renoise/song/track/XXX/unmute
Unmute track XXX.
(XXX is the device index, -1 chooses the currently selected device)
- /renoise/song/track/XXX/solo
Solo track XXX.
(XXX is the device index, -1 chooses the currently selected device)
- /renoise/song/track/XXX/output_delay(number)
Set track XXX's pre-FX delay in ms [-100 - 100].
(XXX is the device index, -1 chooses the currently selected device)
- /renoise/song/track/XXX/postfx_panning(number)
Set track XXX's post-FX panning [-50 - 50].
(XXX is the device index, -1 chooses the currently selected device)
- /renoise/song/track/XXX/postfx_volume(number)
Set track XXX's post-FX volume [0 - db2lin(3)].
(XXX is the device index, -1 chooses the currently selected device)
- /renoise/song/track/XXX/postfx_volume_db(number)
Set track XXX's post-FX volume in dB [-200 - 3].
(XXX is the device index, -1 chooses the currently selected device)
- /renoise/song/track/XXX/prefx_panning(number)
Set track XXX's pre-FX panning [-50 - 50].
(XXX is the device index, -1 chooses the currently selected device)
- /renoise/song/track/XXX/prefx_volume(number)
Set track XXX's pre-FX volume [0 - db2lin(3)].
(XXX is the device index, -1 chooses the currently selected device)
- /renoise/song/track/XXX/prefx_volume_db(number)
Set track XXX's pre-FX volume in dB [-200 - 3].
(XXX is the device index, -1 chooses the currently selected device)
- /renoise/song/track/XXX/prefx_width(number)
Set track XXX's pre-FX width [0, 1].
(XXX is the device index, -1 chooses the currently selected device)
- /renoise/transport/continue
Continue song playback.
- /transport/loop/block(boolean)
Enable or disable pattern Block Loop.
- /renoise/transport/loop/block_move_backwards
Move the Block Loop one segment backwards
- /renoise/transport/loop/block_move_forwards
Move the Block Loop one segment forwards
- /renoise/transport/loop/pattern(boolean)
Enable or disable looping the current pattern.
- /renoise/transport/loop/sequence(number, number)
Disable or set a new sequence loop range.
- /renoise/transport/panic
Stop song playback and silence all playing instruments and effects.
- /renoise/transport/start
Start song playback or restart playing the current pattern.
- /renoise/transport/stop
Stop song playback.
- /renoise/trigger/midi(number)
Trigger a raw MIDI event.
arg#1: the MIDI event as number
- /renoise/trigger/note_off(number, number, number)
Trigger a Note OFF.
arg#1: instrument (-1 chooses the currently selected one)
arg#2: track (-1 for the current one)
arg#3: note value (0-119)
- /renoise/trigger/note_on(number, number, number, number)
Trigger a Note-On.
arg#1: instrument (-1 for the currently selected one)
arg#2: track (-1 for the current one)
arg#3: note value (0-119)
arg#4: velocity (0-127)
Note that the default OSC implementation can be extended by editing the file "GlobalOscActions.lua" in the "Resources/Scripts" folder, found within the directory where you installed Renoise (on MacOS this is found in the app bundle).
Examples
TouchOSC via Duplex
The Duplex Tool comes with a Device preset for TouchOSC, an iPhone / iPod Touch / iPad app that allows those devices to control Renoise via OSC. To use it, select "TouchOSC" from the "Device" drop-down menu in the Duplex Browser and adjust the configuration as needed within the "Settings" dialog box. Then, using the TouchOSC app on the Apple device, you can change the values of the various knobs and sliders on the screen to control various features of Renoise.
Duplex uses the Renoise Scripting API to communicate with TouchOSC, meaning that it's fully configurable, and can also be used as an example on how to wrap up your own OSC implementation in Renoise.
Pure Data
PD (aka Pure Data) is a real-time graphical programming environment for audio, video, and graphical processing. PD was created to explore ideas of how to further refine the Max paradigm with the core idea of allowing data to be treated in a more open-ended manner by it up to applications outside of audio and MIDI, such as graphics and video. There are different versions available to download for PC, Mac and Linux.
Using PD With Renoise Via OSC
- First install PD, then download, unzip and open the "test-renoise-osc.pd" file within PD.
- In the top-left corner you can set the port number to match the OSC port number you have chosen for Renoise [connect localhost XXXX]. With Edit Mode (Ctrl + E) you can edit the numbers.
- To the right you can start and stop playing Renoise with the [send / renoise / transport / start] and [send / renoise / transport / stop] buttons.
- The test program comes with a set of commands already loaded in. Make sure a sample is loaded into into slot 00 within Renoise and press the "chord-test" button in PD. You should hear a chord being played. You can also click on the individual commands to hear the individual notes.
- If you would like to enter new OSC messages yourself:
- Select from the menu "Put -> Message", place the box on the screen and enter your desired command (check the OSC Command List for available commands).
- Connect the new message box by hovering over the bottom left corner (the cursor will become a circle) then clicking and dragging over to the "sendOSC" box.
- Cancel edit mode with (Ctrl + E) and click the box to send the message to Renoise via OSC.