Jump to content


Photo

OSC and Renoise, anyone using it?


  • Please log in to reply
11 replies to this topic

#1 The_Traveler

The_Traveler

    Super Advanced Member

  • Normal Members
  • PipPipPipPip
  • 173 posts
  • Gender:Male
  • Interests:Exploring timbrality ...

Posted 18 April 2018 - 22:23

Howdy all. After looking through Neurogami's Ossia Score post http://forum.renoise...-stuff-via-osc/ I got thinking about a project I've shelved using Renoise and vst's. As the music data will be generated from algorithms in an external program, like Ossia Score, Sonic Pi or even Processing, OSC seems like a natural way to transmit it to Renoise.

 

I'm just wondering if anyone is using OSC in Renoise and if so, would you care to spend a few lines describing what you've done? Perks, pitfalls, hair removal moments, the usual stuff.

 

Cheers and thanks. :)



#2 Gavin Graham

Gavin Graham

    Advanced Member

  • Normal Members
  • PipPipPip
  • 113 posts
  • Gender:Male
  • Location:Brisbane, Australia
  • Interests:Chiptune, Bitpop, 8bit Core

Posted 18 April 2018 - 22:30

Personally I tried it just for some remote control capabilities but I found it to be too much effort to set-up. I guess I don't need that functionality enough to persist with it though....


  • gimmeapill likes this
Me on Soundcloud: My link

#3 Neurogami

Neurogami

    Big Super GrandMasta Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPip
  • 748 posts
  • Gender:Male
  • Location:Scottsdale AZ
  • Interests:Art, music, technology

Posted 19 April 2018 - 00:39

I wrote a tool, OSC Jumper: https://github.com/N....OscJumper.xrnx

 

It defines a number of custom OSC handlers for looping and jumping around patterns.

 

The intent is to use Renoise for live performing, and being able to change the pattern loop on-demand (likely by using predefined messages to navigate to a planned sequence of loops).

 

The tool runs its own OSC server, so Renoise is listening for OSC on two different ports.  In order to still be able to send the standard Renoise OSC messages my tool forwards on any messages it does not know how to handle.

 

One issue I've run into is matching the available OSC messages that can be sent from a client to what can be handled by Renoise.

 

For example, if you use TouchOSC there may be cases where you cannot craft an outgoing message and arguments that aligns to what Renoise wants. (This might have changed; I haven't checked in a while.)  

 

I think this comes up in cases where what is really an argument appears as part of the message. 

 

For example:

/renoise/song/track/XXX/mute

The track number is going to change and not all OSC clients let you define messages with variables embedded into the address pattern.  

 

Worse, some OSC clients don't let you define the messages at all.

 

I've been using Control (http://charlie-roberts.com/Control/) on my phone because (while quirky) it allowed me to design suitable custom screens and OSC messages.  But I don't think I manged to get it to embed variables in the address pattern either.

 

My solution was to write an OSC proxy that runs on the same machine as Renoise.  It accepts the messages coming from TouchOSC or wherever and remaps them to Renoise format.

 

I then wrote an Android app that looks something like a numeric keypad, sending fairly generic messages.  I then remap these via proxy to whatever I happen to need.

 

I use this quite a bit with Reaper; it makes track comping much easier, as I use OSC commands to change what tracks are muted (as I A/B test different takes).

 

I need to do the same with Renoise so I can quickly alter some fx (compression, eq) settings and compare how they sound. (For example, if I want to compare a boost at 100 Hz vs one at 250 Hz, and quickly toggle one or the other or neither.  Doing that by hand would get too tedious.)

 

I think what I will have to do is employ fx naming conventions, as that makes it easier in Renoise Lua to find a specific fx.

 

Once you decide to try to use OSC to control Renoise you still have to sort out how to make Renoise do your bidding.   : )


  • El°HYM and The_Traveler like this

#4 Raul (ulneiz)

Raul (ulneiz)

    Guruh Motha Fakka is Levitating and Knows Everything About Renoise Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPip
  • 1526 posts
  • Gender:Male
  • Location:Spain

Posted 19 April 2018 - 01:16

Well, OSC seems to have two usage scenarios:

  1. An external remote control program compatible with OSC.
  2. Directly from a script tool (something like "integrated" into Renoise).

I have used it several times to program several tools, basically to control the notes, (trigger note_on note_off). The reason is because there is no choice but to use OSC to be able to play the notes from the tool. There is no other way yet. Some examples:

  1. A virtual piano to record notes with mouse clicks (and sound).
  2. A chord trigger.
  3. A step sequencer of 32 steps.
  4. A trigger of multiple notes, (or multiple phrases).

All these tools use these 2 things (trigger/ note_on() or note_off() ):

---- Realtime Messages
 /renoise/trigger/note_on ( instr(int32/64), track(int32/64), note(int32/64), velocity(int32/64) )
 /renoise/trigger/note_off( instr(int32/64), track(int32/64), note(int32/64) )
The only real practical problem that I have detected is the synchronization of what you intend to play with the tool adjusted to the playback of the song, with the progress of the pattern editor, since it could be useful for live recording. This, unfortunately, is aggravated by the use of VSTi's, which for some reason does not work well with Renoise (at least the 64-bit version with Windows). I'm sure Taktik will review all this at some point, because it does not work properly (VSTi + tools + Renoise = problems).
 
But, despite these drawbacks, the use of OSC is the closest thing to what can make a tool fun. Most available tools are made to manipulate data here and there, they can be useful, but tremendously boring. With OSC you make "the tool sound".
 
However, I find it useful to use OSC for a tool. Because the tool is together with Renoise. You see it with your eyes, and you know what you are doing. Through an external program, remotely, I find it difficult to imagine how to use the OSC for a specific control. That is, if you do not visually see what happens in the Renoise window, it seems that you lose control.
 
If, in addition, configuring OSC from a remote program unrelated to Renoise implies following certain rules or guidelines that even cost to understand or simply costs some time to apply, its use will be reduced to very few interested people. Nowadays, everyone wants things very fast and uncomplicated, easy to manage. Only people who are dedicated and eager to experiment will actually use OSC.
 
From my point of view, it is something too complicated that only a few have taken advantage of it. In the end it all comes down to "ease of use".
 
Having said all this, I would prefer Renoise to have an API capable of offering sound control, specifically what it can execute in real time, without forcing the user to have to activate OSC.
 
If we analyze most scenarios, Renoise alone is already quite complex software to control in its entirety. Adding remote control through OSC may seem great, just like Rewire. But do people really use it in depth? I can not imagine having to use two DAWs to compose a song through Renoise. Similarly, if MIDI In control exists, It is strange to use OSC to control certain basic parts of Renoise, such as play, stop or similar.
 
In the end, using OSC remotely seems to be reduced to an experimental scenario, rather than something really useful or habitual to use.

  • afta8 and The_Traveler like this

:excl: Development of my tools: KangarooX120SamRenderPhraseTouch  |  GT16-Colors (old)

 

:excl: My API wishlist R3.1 (updated 24 July 2017):

Spoiler

 

:excl: My Renoise 3.1 wishlist (updated 26 September 2017):

Spoiler

#5 The_Traveler

The_Traveler

    Super Advanced Member

  • Normal Members
  • PipPipPipPip
  • 173 posts
  • Gender:Male
  • Interests:Exploring timbrality ...

Posted 19 April 2018 - 14:10

Thank you for the information guys. It appears I will spend a bit more time researching, and reading Neuro's book as well, before I commit my time to this project. I know where my destination is, it's now just a matter of how to get there. :)

 

Cheers.


Edited by The_Traveler, 19 April 2018 - 17:59.


#6 Neurogami

Neurogami

    Big Super GrandMasta Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPip
  • 748 posts
  • Gender:Male
  • Location:Scottsdale AZ
  • Interests:Art, music, technology

Posted 19 April 2018 - 19:29

One other use of OSC with Renoise I had been looking at was to control Renoise from the Leap Motion and/or the Microsoft Kinect.

 

I recently got around to updating my Processing library for the Leap, so I should work on an example that sends OSC to Renoise.

 

(My larger goal is a program that allows proper address message and argument configuration.)



#7 The_Traveler

The_Traveler

    Super Advanced Member

  • Normal Members
  • PipPipPipPip
  • 173 posts
  • Gender:Male
  • Interests:Exploring timbrality ...

Posted 19 April 2018 - 22:07

Processing, very cool. I've been messing around with it for a couple of years myself. Right now, I'm working with 3.3.7, the oscP5, Combinatorics and GenerativeDesign libraries. My current project is inspired by works of Oskar Fischinger, Walter Ruttmann and Viking Eggeling from the '20's and '30's. It's not real time as I prefer to arrange and choreograph my work.

 

BTW Neuro, I really enjoyed your book. Cleared up some questions, learned some stuff and the graphics were a hoot. :)

 

Cheers.


Edited by The_Traveler, 19 April 2018 - 22:17.

  • Neurogami likes this

#8 Neurogami

Neurogami

    Big Super GrandMasta Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPip
  • 748 posts
  • Gender:Male
  • Location:Scottsdale AZ
  • Interests:Art, music, technology

Posted 20 April 2018 - 02:55

Here's an example OSC handler I wrote to help me manipulate an "EQ 10" device.

 

This code gets added to your local copy of GlobalOscActions.lua

 

 
      -- Set NG 10 EQ value for given frequency index
      add_track_action { 
        pattern = "/ng/eq10/frequency", 
        description = "Set track XXX's 'NG EQ 10' frequncy, value, and Q for given param index.\n"..
        "XXX is the track index, -1 the currently selected track",

        arguments = { argument("freq_index", "number"), argument("freq", "number"), argument("value", "number"), argument("q", "number") },

        handler = function(track_index, freq_index, value, freq, q)
          local track = renoise.song().tracks[track_index]
          local ng_eq_device = nil
          print("See if we can set NG EQ 10 ...")
          for index, device in ipairs(track.devices) do
            if device.display_name == "NG EQ 10" then 
              print("*** FOUND NG EQ 10 ***")
              ng_eq_device  = device
              ng_eq_device.parameters[freq_index].value    = freq 
              ng_eq_device.parameters[freq_index+10].value = value 
              ng_eq_device.parameters[freq_index+20].value = q
              print("Did it change NG EQ 10?")
              break
            end
          end
        end
      }

 

 

It assumes the target track has a single EG 10 device that has been renamed to NG EQ 10.

 

(I like using custom names for anything to be targeted by code as it makes it easier to find the right device.)

 

Once that is in place you can send messages such as this:

/renoise/song/track/1/ng/eq10/frequency 5 500 -6 1

to change EQ values.



#9 The_Traveler

The_Traveler

    Super Advanced Member

  • Normal Members
  • PipPipPipPip
  • 173 posts
  • Gender:Male
  • Interests:Exploring timbrality ...

Posted 20 April 2018 - 03:41

Wonderful! Thanks for taking the time to post this example. The osc coding basics are getting much clearer. B)

 

If I understand correctly, I need to copy the original GlobalActionsOsc.lua file into my username/AppData/Roaming/Renoise/V3.1.1/Scripts directory and modify it.

I'll use your code as a basis and hack it for a couple of Renoise devices to see if I grok it and then try and send some data from Processing. Let you know how I get on.

 

Cheers and thanks again. :)


Edited by The_Traveler, 20 April 2018 - 04:21.

  • Neurogami likes this

#10 Neurogami

Neurogami

    Big Super GrandMasta Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPip
  • 748 posts
  • Gender:Male
  • Location:Scottsdale AZ
  • Interests:Art, music, technology

Posted 20 April 2018 - 06:13

BTW,  this is a hack I used to get parameter names:

 

 

local track = renoise.song().tracks[1]
local ng_eq_device = nil

for index, device in ipairs(track.devices) do
  if device.display_name == "NG EQ 10" then 
    print(device)
    ng_eq_device  = device
  end
end

for i,l in ipairs(ng_eq_device.parameters) do
  print(l.name)
end

 

You'l need to change what device it inspects

 

I ran that in the scripting terminal editor and copy/pasted the code to file for reference.

 

 

Note: I learned A LOT by looking at the source of other people's tools.  And by asking questions here.  

 

This is a very cool, helpful, community.


Edited by Neurogami, 20 April 2018 - 06:15.


#11 niNja_pWn3d

niNja_pWn3d

    Big GrandDaddy Member

  • Normal Members
  • PipPipPipPipPipPipPipPip
  • 465 posts
  • Gender:Male
  • Location:Tha' 204!
  • Interests:..:: My kids - Music - Production - Promotion - 8bit - amen - Hax0r ::..

Posted 22 April 2018 - 15:24

I'm currrenlty making a OSC eurorack device ;) shhhh


Youtube!
Soundcloud!

"The magnitude of pleasure reaches its limit in the removal of all pain. When such pleasure is present, so long as it is uninterrupted, there is no pain either of body or of mind or of both together." -Epicurus

#12 qwanapus

qwanapus

    New Member

  • Normal Members
  • Pip
  • 2 posts
  • Gender:Male

Posted 28 May 2018 - 14:19

Hello for your inspiration Iam usin OSC for control live setup in renoise

Its simple midi action for muting and effecting channels + change Vsti plugins presets.

Plus i mapped two nanoKontrol2 for eq and volume settings and finnaly i use Gridpie renoise plugin for control patterns.

 

photo of my setup

https://photos.app.g...uD4dTCtyfN4BdB3


  • Neurogami likes this