Welcome to %s forums

BrainModular Users Forum

Login Register

PUSH for usine

I need help on a Patch
Post Reply
Fléau
Member
Posts: 99
Contact:

Unread post by Fléau » 09 Mar 2014, 19:09

patched some tools for push:

-push pad coord to matrix index
-display all colors and their velocity
-rotary encoders with acceleration factor
-string to sysex for lcd display

(i'm not familiar with hollyhock and i didn't managed to send sysex, but it works under V5.8)

PUSH4USINE
PUSH4HOLLYHOCK

@NAY: does sysex is yet implemented?
and i seen that:
sysex
Sysex array (data of byte) to send to the external Midi device.
Usine adds automatically a BEGINSYSEX at the beginning and ENDSYSEX at the end of the byte array.
does it mean it add 240 at the begining and 247 at the end of the array?

ceasless
Member
Posts: 330
Contact:

Unread post by ceasless » 10 Mar 2014, 10:05

Awesome! I'll try to give this a look soon. Maybe we should put the wkp file on github so that we can more easily collaborate?

SYSEX should be working fine in Hollyhock, at least its been an inlet/outlet option on midi devices for quite some time.

Enjoy your Push!!

ceasless
Member
Posts: 330
Contact:

Unread post by ceasless » 10 Mar 2014, 22:45

Hey fléau,

Great work on the acceleration rotaries, the feel is really smooth. The color map is also a great resource. Unfortunately I have the same trouble as you with the sysex LCD control. It works fine in Usine 5, but I don't really know that platform very well.

I tried concating 240 at the beginning and 247 at the end and also running the array through the sysex editor module but no luck.

The possibilities are going to be amazing. I have some ideas on some ways I'd like to interact with Usine through Push and will post them here.

But first: we must know what the problem is with the sysex.

ceasless
Member
Posts: 330
Contact:

Unread post by ceasless » 11 Mar 2014, 00:03

I've started my part of the adventure by documenting the buttons on the Push. My plan is to write a script that can translate from the Push user mode to normal Usine outputs. It would also have inputs for each control. Also with the ability to input/output the grid as an array. Obviously we need to be able to send text to the display via sysex as well.. ;)

It also has me thinking that a similar approach could be used in a module that would communicate to the Push via OSC? I know almost nothing about OSC in practice though.

Anyway, hopefully this will be a handy reference for anyone out there who just wants to quickly look up a CC value for a control.

Code: Select all

      
// ----- ----- ---- ----- Notes 
   
// values related to notes
const PADS                  = 64;
const ROWS                  = 8;
const COLUMNS               = 8;
const PAD_FIRST_NOTE        = 36;
 
// modulation options
const PITCH_BEND            = 12; // sends PB data too
const TOUCH_ENCODER_TEMPO   = 10;
const TOUCH_ROTARY_QUANTIZE = 9;
const TOUCH_ROTARY_1        = 0;
const TOUCH_ROTARY_2        = 1;
const TOUCH_ROTARY_3        = 2;   
const TOUCH_ROTARY_4        = 3;
const TOUCH_ROTARY_5        = 4;   
const TOUCH_ROTARY_6        = 5;   
const TOUCH_ROTARY_7        = 6;   
const TOUCH_ROTARY_8        = 7;   
const TOUCH_ROTARY_VOLUME   = 8;   
                       
// ----- ----- ---- ----- CCs  

// playback control
const PLAY                  = 85;
const RECORD_               = 86; // RECORD seems to be a keyword
const TAP_TEMPO             = 3;
const METRONOME             = 9;   
const ROTARY_QUANTIZE       = 15;
const ENCODER_TEMPO         = 14; 

                                  
// quantization buttons
const QUARTER               = 36;
const QUARTER_TRIPLET       = 37;
const EIGHTH                = 38;
const EIGHTH_TRIPLET        = 39;
const SIXTEENTH             = 40;
const SIXTEENTH_TRIPLET     = 41;
const THIRTY_SECOND         = 42;
const THIRTY_SECOND_TRIPLET = 43;

// surface modifier keys    
const OCTAVE_UP             = 54;
const OCTAVE_DOWN           = 55;
const REPEAT_               = 56; // same with REPEAT
const ACCENT                = 57;
const SCALES                = 58;
const USER                  = 59;
const MUTE                  = 60;
const SOLO                  = 61;

// display mode keys
const BROWSE_FORWARD        = 62;
const BROWSE_BACK           = 63;
const DEVICE                = 110;
const BROWSE                = 111;
const RACK                  = 112;
const CLIP                  = 113;
const VOLUME                = 114; 
const PAN_SEND              = 115;
const MASTER                = 28;
const STOP                  = 29;
                    
// modifier pads 
// ---- row 1: 20 - 27
// ---- row 2: 102 - 109
 
// arrow keys
const ARROW_LEFT            = 44; 
const ARROW_RIGHT           = 45;             
const ARROW_UP              = 46;
const ARROW_DOWN            = 47;

// clip management                            
const NEW                   = 87;
const DUPLICATE             = 88; 
const AUTOMATION            = 89; 
const FIXED_LENGTH          = 90;    
const QUANTIZE              = 116;              
const DOUBLE_               = 117; 
const DELETE                = 118;     
const UNDO                  = 119;

Fléau
Member
Posts: 99
Contact:

Unread post by Fléau » 11 Mar 2014, 08:57

hello,
some colors were missing:

PUSH4HOLLYHOCK

cc button lights:

HALF =1
HALF_BLINK_SLOW =2
HALF_BLINK_FAST =3
FULL = 4
FULL_BLINK_SLOW =5
FULL_BLINK_FAST =6
OFF =0
ON =127

pad button color

BLACK =0
DARK_GREY =1
GREY =2
WHITE =3
RED =5
AMBER =9
YELLOW =13
LIME =17
GREEN =21
SPRING =25
TURQUOISE =29
CYAN =33
SKY =37
OCEAN =41
BLUE =45
ORCHID =49
MAGENTA =3
PINK =57
increase by 2 for darker color
increase by 1 for half shade


edit:
colors for scene launch buttons.

GREEN = 22
GREEN_HALF = 19
GREEN_BLINK_SLOW = 23
GREEN_BLINK_FAST = 24
RED = 4
RED_HALF = 1
RED_BLINK_SLOW = 5
RED_BLINK_FAST = 6
YELLOW = 16
YELLOW_HALF = 13
YELLOW_BLINK_SLOW = 17
YELLOW_BLINK_FAST = 18
AMBER = 10
AMBER_HALF = 7
AMBER_BLINK_SLOW = 11
AMBER_BLINK_FAST = 12
OFF = 0
ON = 127



about sysex:
Image

nothing happen on the midi out device and in the trace window,
tried everything,
may come from hollyhock.

ceasless
Member
Posts: 330
Contact:

Unread post by ceasless » 11 Mar 2014, 09:08

Do you have any other MIDI devices you can test some sysex transmission with? If it's only Push it may be harder for sensomusic to fix, but if it is affecting sysex on other devices maybe the issue will be easy to identify.

I would rather stay home and test myself, but it's time to go to work :/

User avatar
nay-seven
Site Admin
Posts: 5684
Location: rennes France
Contact:

Unread post by nay-seven » 11 Mar 2014, 19:05

Cool project !

if you need to send Sys ex in hollyhock you need to link it also in the Midi device Out itself :

Image

ceasless
Member
Posts: 330
Contact:

Unread post by ceasless » 11 Mar 2014, 19:21

Awesome nay! I had never used syssex in Usine before, but this feature actually makes a ton of sense.

I can confirm that this works for me. Though the first knob now affects the second graphical field, while in the Usine version it affects the first. Byt maybe this is something in the Hollyhock workspace?

Fléau
Member
Posts: 99
Contact:

Unread post by Fléau » 11 Mar 2014, 20:33

thanks a lot Nay. should not it be auto wired?

About the textfield: it's a wrong wiring,
look at the 'string to sysex' patch:
the text is wired to the second input.

great!

seamus
Member
Posts: 484
Contact:

Unread post by seamus » 11 Mar 2014, 22:56

i have never used sysex either. Its great to see this work on incorporating the push into Usine! keep up the good work guys!

ceasless
Member
Posts: 330
Contact:

Unread post by ceasless » 12 Mar 2014, 00:36

Was just wondering about you seamus, glad you found the thread.

I've gotten all the color, note, and cc constants all defined. That took a while, but it should make for some real fun.

So the definitions work great :)

But I've hit a bug while implementing the first function that uses them. Memory access violation -- in my experience this is caused by something stupid I'm not seeing right now.

ceasless
Member
Posts: 330
Contact:

Unread post by ceasless » 12 Mar 2014, 20:48

Sure enough, the issue was with

Code: Select all

case N of:
That little colon on the end breaks compilation at a stage where it can't even tell you what line number to look on :)

Code: Select all

case N of
Fixed it.

I've almost got pad clearing implemented. Hope to have more for you folks soon.

ceasless
Member
Posts: 330
Contact:

Unread post by ceasless » 12 Mar 2014, 23:40

May I present to you the Push pad color chooser - Mono edition.

Instructions: touch a pad. Then use the combobox to select a color. Now that pad will appear in that color.

A very simple beginning, but I wanted to get the grunt work done before starting on anything cool.

In the patch is a script which:

* provides a 'clear pads' button which sends the proper midi to turn off all the pads
* gives two parameters per the three color type as provided by fléau: one is the array of values to send and the other is a commatext you can use to make a select-mapping with those values

Note that the 'note pads' array params don't do anything yet.

Still a bunch of things to do, and design to think about.

Also, I've got an issue where the lights are blinking. The clear and color options work fine but the pads are always blinking. Any idea how to fix that?

BTW, fléau can you post a fixed version of your patch? I couldn't see what you meant when I looked through it.

Fléau
Member
Posts: 99
Contact:

Unread post by Fléau » 13 Mar 2014, 10:48

update:
push4holly

No blinking here, did you tried to restart the push?
I had blinking issues only with sysex when the string lines weren't multiplexed.
(seems you can makes matrix pads blink via sysex)

if i can make some suggestion about your color setup procedure,
-it would be better to choose the color then press the pads (in case you have a lot of pad to setup)
-increase the color mapping value by 2 (it makes an 'off pad' and that way, you'll just have do decrease by 2 when it'll be on)
-don't worry, keep monophonic, it's just a setup page

I repatched all the novation launchpad engine, and now fusioning it with the push patch,
it will give you some ideas.
I will post it asap.

I'm sorry i can't help with scripting, but i can give some procedure and variable ideas,
maybe some diagram.
What is your native language?

ceasless
Member
Posts: 330
Contact:

Unread post by ceasless » 13 Mar 2014, 15:20

Indeed, it's not a very fun patch at the moment, it was just a quick way to highlight the color selection options I'd coded together.

Feel free to change it around, etc. I'm hoping to have a "scrolling text display" demo patch sometime soon.

Thanks for the updated Hollyhock workspace, and very much looking forward to the new fusion patch you mentioned!

No worries about the programming, it's great just to have someone else to work with in imagining a new control surface for Usine.
So your advice will definitively come in handy. I've been thinking about all sorts of approaches, will try to present them to you and seamus soon.

Hope you don't mind that we do the work in Hollyhock?

My native language is English and unfortunately I don't speak any others very well :(

ceasless
Member
Posts: 330
Contact:

Unread post by ceasless » 15 Mar 2014, 14:17

After looking at the Youtube videos a few times I bought the PXT Live scripts. Still not in love with Live but I think better of it than I did before. 90% of the time I'm interacting with the Push and these scripts bring a lot more functionality to that interaction.

One thing I'm definitely inspired by is the clip launching functionality. The pads are divided into two halves, the bottom half select the clip playback length and the top half gives 32 trigger slices. These slices are based on the selected playback length, or can be set to manual quantization.

I think I've found a good first not-about-pad-color patch to build.

ceasless
Member
Posts: 330
Contact:

Unread post by ceasless » 23 Mar 2014, 14:37

Today I'm happy to present you with an updated fastscript file. Today's version adds outputs for all the 'touch rotaries', by which I mean the note values which are produced when the rotaries are touched. I'm providing them as 0 and 1 on individual outputs as I hope this will help reduce the time it takes to start making new Push functionality possible within your patches and workspaces.

Luckily I've managed to figure out a 'quick' way to code this, so that the actual dispatching to outputs requires far less code than typing out all these constants, creating the arrays, etc.

Some brief thoughts on where I plan to take the scripts. Please feel free to comment or propose new/different approaches.

# Push Core

This is the script I'm currently working on. It will be the extra-large version of bringing Push into your workspace, as it will contain things you won't need for every place you'd like to give and get feedback with Push in a patch. It will all go here first until it's fully functional and then I will break things out into different modules.

For instance this touch rotary functionality I just added would make a fine patch of its own. Maybe you only want those on a workspace level, maybe for turning on and off different modulation sources, or whatever. So you only have to have that code in one place, whereas maybe you will have dozens of pad related patches across your racks.

It's the 'or whatever' that I'd like these scripts to allow most.

## Next steps (in no particular order)
- create more commatext/array pairs to allow some combobox patches which allow you to choose which values you want to send to button parameters (for instance, 'blink fast')
- finish adding parameters for all the other buttons on the Push
- get the pad array working, as well as parameters to get changed values as x,y,note,and velocy as pads are pressed. it should also be possible to double buffer, so you can set a color to switch to rapidly
- implement 'transitions' so that you can trigger different wipes,explosions of color,nyan cat rainbows,etc to the pads that can be optionally triggered when you "return to" a specific pad interface mode (for telling different patches/racks apart, for instance)
- write text to the LCD, make it dead simple to choose how values are displayed and use all the special symbols
- scrolling text on the pads

Probably some other things I'm forgetting as well.

Then there's the stuff I want to build on top of these functionalities...

P.S. fleau, were you asking me to change the color values coming out of the script to have +2, or were you commenting on the overall patch?

User avatar
nay-seven
Site Admin
Posts: 5684
Location: rennes France
Contact:

Unread post by nay-seven » 23 Mar 2014, 14:53

I can't test your work , but it's cool to see such a project growing !
I'm sure some hollyhock users will buy a push with this patch (ask a percentage to ableton! ;-) )

ceasless
Member
Posts: 330
Contact:

Unread post by ceasless » 23 Mar 2014, 15:12

You should 'push' the trigger yourself, I think ;-)

It shouldn't be too hard to beat Ableton at integration. Their's is pretty bad, even with their own stuff (and quite worse with third parties). I'm demoing the 9 Suite, but it's not all that compelling versus what I can do in Intro with regards to the Push. Plus, I've already got plenty of synths and sounds. Stuff like PXT Live shows how many crazy ways we can interface through this device, and will keep me having fun making music until we've got a framework for creating instruments in Hollyhock with it.

For instance we should be able to automatically create pages and pages of parameters just through grabbing the params list off of a VST. With IML we can create a structure you can follow which will allow you to group params according to containers you yourself set up (yes this is kind of a pain, but you get organized knobs on your racks for free too ;-)

I'm also dreaming of 'Patch Happy', an 8x8 grid of pads. Hold an empty one down and scroll through your patches. Add one. Toggle it on and off with multiple presses (loop mode) or have them react as triggers. Hold it down and press the 'Note' button and then dive into whatever pad sequencer/interface has been setup within that patch.

Fléau
Member
Posts: 99
Contact:

Unread post by Fléau » 23 Mar 2014, 17:27

Both, i was thinking that colors should be darker, because when setting up them, they are supposed to be at 'off' state.

here is mine:
push for v5.8
i'm really sorry but i can't make it works under hollyhock ( error, crashes)
but it will certainly give you some ideas.

-8 pages of encoders selectable via: volume,pan,track,clip,device,browse,master, stop buttons
-quantize buttons are assignable to functions (page select or whatever)
-the rest of the right buttons are assignable to 32 matrix page
those matrix page have a setup popup page where you can select:
-colors
-toggle,button or group button
-up to 4 clock bar lighting

Fléau
Member
Posts: 99
Contact:

Unread post by Fléau » 23 Mar 2014, 17:30

an i forget that:
about color transition, it can be donne via sysex:
http://cycling74.com/wiki/index.php?title=Push_Programming_Oct13_03

BEWARE with sysex, it can do wrong thing on the firmware!

ceasless
Member
Posts: 330
Contact:

Unread post by ceasless » 23 Mar 2014, 19:01

Thanks for trying with Hollyhock, too bad it didn't work out yet. Give me some time to set up these scripts and then maybe it will flow nicer if you want to try again.

Taking a look at the the 5.8 patch, I see a lot of impressive stuff happening. I'm going to have to digest it a little bit before I really understand what is going on. Quick question: is it supposed to be making any sound? There's a pad mode that looks like a sequencer of some sort, and knobs labelled as if they might control levels for instruments. It's a deep example either way, I just wanted to be clear that my setup is working correctly.

Also, it's slightly shocking how differently Usine and Hollyhock operate. I'll have to read up a bit on that.

By switching to a new version of Hollyhock and not copying the config, I was able to get the pads to stop flashing. I think some bad sysex got stuck in the device setup in the previous version. The color transition link looks great but I'm going to put the more aesthetic stuff on the backburner and focus on getting the pads array operational.

Fléau
Member
Posts: 99
Contact:

Unread post by Fléau » 23 Mar 2014, 20:25

will give some explanation tomorow.
i agree , not easy to understand, it not makes any blip, it's just an interface between usine and push.

plus, i totally forget to said that exemple pages are on
addeffect,addtrack,note,session,select buttons. AND 'up arrow' for the isomorphic keyboard
you should understand it a lot more now

ceasless
Member
Posts: 330
Contact:

Unread post by ceasless » 25 Mar 2014, 18:52

Thanks fléau! Unfortunately I'm still a bit confused by the workspace, but I think this is probably more me not understanding Usine 5 than anything wrong with your patches. Also I'm relatively new to grid-based sequencing, so my imagination is probably not working as well as it could.

I can understand this as a feast of patches for interfacing with the Push in Usine 5, and I can imagine doing a lot of things with these grids, but I don't yet know how to make anything happen in Usine 5. I did not realize what a big shift it is to Hollyhock before.

I noticed that the isomorphic keyboard is in a very different style than the Push version. Can you explain a bit more how it works? Did you decide from experience that this version works better for you?

ceasless
Member
Posts: 330
Contact:

Unread post by ceasless » 02 Apr 2014, 22:03

Back again with an updated version. I'm hosting the script at github: https://raw.githubusercontent.com/ab5tract/PatchPusher/master/Push%20Core.fastscriptr

For now we will call it 'Patch Pusher'. I'm hoping to get lots of people addicted to patching with this one, so it seems fitting.

The changes are:

Code: Select all

- Provides an 'off' version of the pad colors. This is for you fléau :)

- CC values now transmitting from rotaries/encoders
The Push sends its encoder values in a relative format already ( 1+n is
turned right, 128 - n is turned left, where n is a value that increases
with the speed of the turn ). These values now show up on  'rotary rel'
param outputs.

All other new parameters are not yet functional.
I'm going to look into using the ptCombobox from the beginning, so that users don't need to wire a combobox to a mapper in order to use the outputs.

Oh, and speaking of outputs... I have a surprise on the way with regards to a certain I/O element of the Push. It's working I just need to add some input params to control it with :D

ceasless
Member
Posts: 330
Contact:

Unread post by ceasless » 06 Apr 2014, 23:23

Another Sunday, another update. We are really starting to get somewhere, now that LCD text is working! Just wire up 68 characters of text and it will be shown on your Push.

Between this and the ability to understand the knobs that I added last week, you've got a whole lot of opportunity already. There is one feature still missing in this patch: the 8-segment LCD inputs aren't ready. After that we can easily build a template patch for making the knobs with arbitrary values (such as to your favorite VST synths, perhaps?).

Get it on github

Code: Select all

Changelog:

Hot fresh text inputs straight to LCD
The liquid crystals on your Push's text display are yours to patch.

Each line can take 68 characters. It probably won't work if you send it
more.

NOTE: The 'LCD 8' segment inputs are not yet ready, these will be
commatext and should make setting up some generic CC send patches easy
as pie.
Image

ceasless
Member
Posts: 330
Contact:

Unread post by ceasless » 02 Jul 2014, 12:40

Hey fleaux, seamus,

Just curious what you guys are up to with Push/Usine, and whether you owuld be willing to share some of it?

I've gotten distracted by a new influx of hardware, but I will be back to working on this soon. But would love to get some inspiration from you both.

seamus
Member
Posts: 484
Contact:

Unread post by seamus » 03 Jul 2014, 04:00

I haven't worked on it. I have a new touchscreen so I am trying to design some controls for that.
It would be worth getting back on the push Usine horse so to speak. They could be an amazing combo!

Fléau
Member
Posts: 99
Contact:

Unread post by Fléau » 03 Jul 2014, 09:22

Hi,
same here, i've been very busy and stopped the development at this point:
http://www.sensomusic.com/forums/viewtopic.php?pid=29194#p29194
I've just implemented it in my workspace (now using touchscreen only for vst presets combobox and a routing matrix),
and it works like a charm.
I didn't managed to translate it into hollyhock, so i send all the datas via localhost osc.

ceasless
Member
Posts: 330
Contact:

Unread post by ceasless » 05 Feb 2015, 12:44

Just a heads up that drakh's recent APC mini patches, especially the push-style keyboard one, have restarted my desire to get this patch working. (Sorry fleau, I was just never able to understand the in-scale keyboards you made in Usine 5 :( ).

Last night I wired up a "grid monitor" that translates midi notes to matrix indices. This should be a good first step for world domination, I think :)

barabou
Member
Posts: 19
Contact:

Unread post by barabou » 03 Apr 2015, 10:55

Hi usiners.

I am looking for a matrix controller and therefore very interested in your work on integration of push in usine.

Just saw this from nativeKontrol, it seems to be done to integrate push in any DAW :

PTX general

Did one of you try to used PTX-general in usine (or HH or HH2)?

Thanks a lot

ceasless
Member
Posts: 330
Contact:

Unread post by ceasless » 03 Apr 2015, 11:30

Hi barabou,

Yes I have PXT General. It's a pretty cool script, but for me it does not work well for my imaginary "ultimate Usine" controller.

Why? Because it takes over the Push. It does provide the note grid, but then it is only the note grid. So any Usine native grid patches will not work (or at least I was unable to get them to).

So it always seemed to me that the best option was to have the same note grid but implemented as a patch in Usine. But I could not motivate myself to make it.

Luckily drakh has put in the hard work to make this part easy. I hope to have an update here about it soon.

I think I will also be porting the existing Push scripts into C++ and releasing them with documentation. Stay tuned here for more info! :)

(Oh, and if you are considering a Push, I can say that it is a really really nice piece of hardware).

barabou
Member
Posts: 19
Contact:

Unread post by barabou » 03 Apr 2015, 11:59

Hi Ceasless,

thanks for the information and the work done!
I stay tuned ; )

Post Reply

Who is online

Users browsing this forum: No registered users and 11 guests