PDA

View Full Version : Clear/reset button on template.



evenfloyd
08-08-2011, 07:42 PM
Hey Camille


I hope to be as clear as possible, my English skills aren't good.


The thing is: I made a huge step sequencer in ableton, TouchOSC & OSCulator. Basically several multitoogles that are assigned to enable/disable mute buttons in ableton.


The final idea would be to have a "clear" button in TouchOSC in order to get a empty step sequencer again, no sound at all. (ie, all muted).


I was searching and reading on the forum and the closest I get is this: In OSCulator I created a duplicate toggle -> on each duplicates I assigned the Meta / Enable Combine event -> and in the value column I selected the targets events (ie, all the buttons on the step sequencer)


The result: Isn't a back-to-zero button, is like a general mute button.

For expample: I have a drum pattern, I don't like it, I want the empty step sequencer again without having to touch button by button and to start from zero with my drum pattern.
I wish I could make a total clear button and I can't find how to do it.



I hope I explained well.


Any suggestions?


Thanks in advance.

evenfloyd
10-04-2011, 10:52 AM
any suggestions?

camille
10-05-2011, 05:34 PM
Hi evenfloyd,

Sorry for the late answer, I think I've missed your message.

Could you give precisions on what you call "back to zero"?
What exactly should happen in Live when the reset button is pushed?

Thanks for the precisions!


Best,
Cam

evenfloyd
10-09-2011, 11:59 AM
Hey Camille,


I'll try to be quite clear, despite my English. :D


For example: Imagine I have a 8x8 matrix (multi-push buttons in TouchOSC) running horizontally as a ordinary step-sequencer.


In Ableton: a series of chains, each multi-push in touchOSC is mapped to the activator chain (the little yellow button inside the chains in Ableton). Then, when I play with the TouchOSC stepsequencer all that's happening is enabled or disabled this button in order to hear or deactivate this particular chain.


So far I hope you understand what I say.


Now, I wish I had a chance to reset the stepsequencer: disable all chain activator/deactivator button in Ableton at once.


in short: With a single button I want to make that 64 others buttons back to 0 (off), regardless of the status of each.


Perhaps I think this could do it from OSC Route editor in Osculator, but I can't figure out how to do it.


Thanks.

swokki
10-09-2011, 02:19 PM
Hi there,

I was thinking about the same thing too. Would be great to be able to do this. I'll keep an eye on this post.

Paul

camille
10-10-2011, 11:34 AM
Hi evenfloyd and swokki,

I have made some tests, and I think I have a nice solution. It is easy to setup, but there is a bit of knowledge to understand, please read on:

This solution is based on OSC pattern matching.
OSC pattern matching is a way to trigger one or several messages based on a 'pattern'.

For example, suppose you have several message like : /1/fader1, /1/fader2, etc. and you want to trigger them all with one single OSC message. If you send Osculator the message "/1/fader*", it will match the wildcard character with any string made of zero or more character. Therefore /1/fader1 and /1/fader2 will match and will be triggered.

(for a more detailed reference on pattern matching, see the end of this post)

Now back to your problem: first of all, download the lastest beta release (http://www.osculator.net/forum/threads/1410-OSCulator-2.11-beta) (2.11-beta23). I have fixed some issues regarding OSC pattern matching for that occasion.

What you want to do is send a message that will reset all button of the multitoggle, and also send MIDI messages to reset the state in Live as well. The idea here is to send Osculator a message to itself that pretends that you have reset every buttons of the multitoggle. So for example if you have /1/multitoggle/1/1, /1/multitoggle/1/2, ..., /1/multitoggle/6/16, you can reset them all by sending /1/multitoggle/* with an argument value of 0 to Osculator itself.

I make the assumption that all controls are mapped to Live, and that bi-directional communication is correctly configured, meaning that when you make a change in Live, it reflects in TouchOSC as well.

Now, the configuration:

Go in the Parameters Window, and display the OSC tab
In the targets table, second row (make sure it is empty), click the gear button, and select localhost:8000 (this document). This defines a target that is actually the OSC server of the document itself. When a routing using that target is triggered it will be sent to Osculator itself.
In the routings table, click the + button to add a new routing, and change the target from Đ to 2. This explicitely means that you want to this routing to send OSC message to the target 2.
Open the OSC editor, and change the rewrite address to /1/multitoggle1/*. Actually you need to change it to the name of you multitoggle control, followed by the asterisk (*) character, but I believe you guessed it.
Optionally: change Route when to: "the value goes from positive to 0". (if you want to be strict, set that option, if you want to keep things simple, just don't touch it). This tells the OSC routing to send the message only when the push button is released.
Now close the Parameters Window.
In the main window, locate the message for the push button you want to use for reset, and assign the newly created OSC routing.
That should be all, when you press the push button, Osculator will trigger every /1/multitoggle/* messages, sending MIDI messages to Live, which in turn replies to Osculator with MIDI messages. Because the MIDI messages are configured bi-directionally, they will send OSC message to TouchOSC and reset the multitoggle buttons.

Please find attached a trimmed-down example that uses the Beatmachine layout. It shows how to reset the two toggle buttons with the first push button. To use it, map the toggle buttons to Live's tracks mute button.


All the Best,
Cam


OSC pattern matching reference, taken from the OSC Specification 1.0 (http://opensoundcontrol.org/spec-1_0).

A part of an OSC Address Pattern matches a part of an OSC Address if every consecutive character in the OSC Address Pattern matches the next consecutive substring of the OSC Address and every character in the OSC Address is matched by something in the OSC Address Pattern. These are the matching rules for characters in the OSC Address Pattern:

'?' in the OSC Address Pattern matches any single character
'*' in the OSC Address Pattern matches any sequence of zero or more characters
A string of characters in square brackets (e.g., "[string]") in the OSC Address Pattern matches any character in the string. Inside square brackets, the minus sign (-) and exclamation point (!) have special meanings:

two characters separated by a minus sign indicate the range of characters between the given two in ASCII collating sequence. (A minus sign at the end of the string has no special meaning.)
An exclamation point at the beginning of a bracketed string negates the sense of the list, meaning that the list matches any character not in the list. (An exclamation point anywhere besides the first character after the open bracket has no special meaning.)

A comma-separated list of strings enclosed in curly braces (e.g., "{foo,bar}") in the OSC Address Pattern matches any of the strings in the list.
Any other character in an OSC Address Pattern can match only the same character.

evenfloyd
10-10-2011, 12:53 PM
Many thanks Camille, works perfect. A very clear explanation.

Also, your explanation about the routing over the OSCulator Itself opens a lot of additional possibilities which I hadn't even thought of.
OSCulator never ceases to amaze me. The same goes to your support in the forum.


Thanks again.

evenfloyd
04-01-2012, 05:53 PM
Hey Camille,


is there any problem with this adress? /1/multitoggle/1/*/color (inside the arguments field: gray).

The thing is, I would like to change the color of a single row with a button, so by logic the routing adress for all the toggles in that row would be /1/multitoggle/1/* or /1/multitoggle/1/[1-16] right?, in fact this adress works also with the explanation above, I actually can delete all buttons in a single row. But apparently it doesn't work if you want to change color.

Other example of the same problem would be: /1/{button2,button3,button4}/visible and inside the arguments field: (0,1).
Doesn't work either.

any suggestion?

Thanks in advance


all the best
axel

camille
04-01-2012, 11:04 PM
Hi Axel,

I was wondering if you were asking if OSCulator was able to process the message /1/multitoggle/1/*/color or if TouchOSC was able to understand it. I just tested with OSCulator, with a bunch of message, and I confirm that it correctly handles the wildcard in the message (broadcasting to every messages that match the pattern). However, I believe TouchOSC does not follow this part of the OSC standard. That would be handy if it did.


Best,
Cam

evenfloyd
04-02-2012, 12:21 AM
Hey,

Yes, I realized that OSCulator was ok, but maybe I was missing something (there's always something else :D ).
Thanks for the confirmation about the message, apparently TouchOSC can not handle it.

All the best,
Axel

ps: as always, awesome support.