New (very very alpha stage) Tool (3.2): PushyPushPush - Ableton Push 1 Integration

Hi all you cool people.

If anybody is stinking rich like me (joke), and has access to a Push 1, perhaps this will be of interest.

I’ve been tapping away a few evenings over the last week, getting the foundations set up for using Push to control Renoise.

So far, it’s working just as a demonstration of the building blocks. Very basic. There are four modes (which do nothing basically):
Sequencer is entered using the Note button
Matrix is entered using Session button
Instrument is entered with Device button
And Track is entered with, drumroll… The Track button!

You can start and stop Renoise from any of the modes, it defaults to restarting the pattern, but holding shift and pressing play will continue from current line.

The play button also reflects the playing status of Renoise.

If you hit the pads they light up red like the rose you gave to your first love.

The sequencer mode will show you the note of the first 8 lines of your pattern, extremely useful i think you’d agree. Leftmost pad is C, and on, etc.

If anybody has any ideas for things they would like to do to Renoise, using a Push to do them with, please chip in and let me know what comes to mind. I am aiming to make it quite functional, but not insane, as i hate having to hold loads of keys to get into modes etc. I just want a nice experience.

The code is horrible. I mean, truly terrible. It’s a shitload of table lookup to get things done. Lots of redundancy, inconsistent naming etc. I’m sure this will change. But basically am trying to write it to be portable, so that i can convert this work into a Reason Remote tool too.

Oh, and it should be able to run with both Ableton and Renoise at the same time. Not yet, but eventually. Cool huh.

The code is all on github here:

And this is the tool in its current state:

PushyPushPush.xrnx (5.5 KB)

Bye bye.

1 Like

Fixed a crash at start-up if Push not connected. New version below should be safe to use. Still does nothing useful. But will do shortly.

PushyPushPush.xrnx (6.0 KB)

1 Like

Massive update pushed to the github page and new version below.

The tool now has a quite functional sequencer mode. It allows you to set and delete notes in (currently only) the first note column of a track by pressing a pad. Each line represents a pattern line. The playback line position can be manipulated by using the tempo dial or pressing the cursor up or down. Holding shift multiplies the movement by 10. You can set/delete a note for any line of the pattern visible on Push though, not just the edit/playback line.

The pads show notes entered in the first note column of the selected track. The track can be changed with the left and right cursor. If you try to enter a note on the master or send tracks it will probably crash the tool!

The lights for the notes are C-B on the pads in column 1-7 and note off is always the last pad of a row. If you hit an existing note light it will delete it from the pattern. The octave is fixed at the current octave setting of renoise. It will always delete a note whatever octave it’s in (hard to show this on the pads). Eventually sharps will be indicated somehow.
Mute button mutes the selected track. Play and record reflect and set the state of these controls in renoise.

Limited still, but heading somewhere i hope. If anybody has time to try it out i’d love some feedback and to know if it accidentally kills your computer and your dog.

More coming soon. pip pip x

lil.cupcake.PushyPushPush-v0.003.xrnx (8.3 KB)

1 Like

Fixed some bugs introduced by yesterday’s commit.

I realised that the drawing of sequences and note entry was strange on short patterns. All fixed now as far as i can tell. I changed the line movement to be on the Swing knob instead of Tempo (thinking tempo will be used to change patterns/sequence position). Introduced shitty brute force data thinning on the encoder values which are numerous and cause Renoise to yelp in pain.

Also, now the record button must be active to enter/change note data. You can change track via an encoder, and also now change instrument by encoder two. Also set master volume from the volume encoder.

Some naming rationalisation. Also blocked a few crash situations. Erm, probably other things i forgot.

New version with fixes: alpha alpha alpha alpaca - lil.cupcake.PushyPushPush-v0.003a.xrnx (9.0 KB)

1 Like

Spent the last two days heavily refactoring (i think that’s the right term) the code into a more object-oriented style. I didn’t need to have inheritance features or anything, and just wanted to have the Push object as a ‘top level domain’ under which the other objects live and communicate, so tried out an idea to initialise the sub-objects with a reference to the parent. To my surprise it worked! And i later found out this model of programming is called ‘composition’. So now i’m a composer…

Anyway, it works well, and i’m very pleased to have split the model into a more modular approach, with the Push object representing the physical device, a State object holding the state of Renoise and the interaction with the representation via the display and lights and such, Midi object to control the actual comms side of things, and a Mode object which can be easily modified to add different behaviours to the script/Push tool.

So now things are getting somewhere i think, maybe it’s possible to add a lot of functionality from here on in.

Todos include: adding more sensing of the Renoise song state and getting that into the model to be manipulated and displayed on the Push, and of course, bug hunting.

It’s still rudimentary, and i feel i’m shouting into the void a bit here as nobody has said anything, but it works so far, and that’s a lot of fun.

New version up on the github (code only) and here also as .xrnx:
lil.cupcake.PushyPushPush-v0.005.xrnx (11.9 KB)

very happy to see this! always loved my push 1 but never really got into ableton for full tunes. look forward to grabbing the WIP and seeing how it develops.

Thanks, if you have any ideas about features you’d like to see on the tool, do write them here and i’ll see if they can be added. I don’t want it to be complicated to use, but i’m sure everybody has different things they do in Renoise, and may see a way to use Push to do them.

Just had to do some nuclear bomb housekeeping and totally destroyed the history on the github repo. Sorry to anybody who has pulled it, please delete the old repo and start again. Nothing has changed in the source, but the history is now much cleaner and will be easier to maintain. Some weird shit was going on due to the esoteric mystery of git refs and whatnot.