need a good stepsequencer, lost in the flood of apps

  • Hi,

    i am new to the monome and was looking for a stepsequencer app working with it but got lost pretty quickly when looking for more in-depth info on the different apps.

    What i am looking for:

    basic:

    -standalone with midi out (no Ableton sequencer)
    -syncable via midi clock or as rewire Master
    -16-64 steps patterns
    -velocity/pitch/length/gate AND 1-4 Midi ccs per step
    -12+ tracks
    -swing
    -long notes possible (1-4bar)

    sugar on the ice:

    -force to scale
    -chord possibility
    -steplength per track
    -time signature per track
    -probability of step
    -playdirection per track
    -startstep per track

    Is there anything already developed in that direction? I am currently using the machinedrum for the "basic features" but i figure a 8x16 monome would give a better overview and expandability of features.

    Cheers

  • i would recommend the midi sequencer (poly) page in pages made by phortran.
    http://docs.monome.org/doku.php?id=app:pages

    pages is a great and useful app, with lots of possibilities.

    have fun

  • I've been having fun with [[http://docs.monome.org/doku.php?id=app:soyuz|soyuz]], which is very accessible and has quite a few of the features you've asked about. I think you'll need to run it with MonomeSerial as I don't think there's a serialosc version.

    I'm only just getting into the apps myself, so there may well be better step sequencers out there which I haven't come across yet - looking forward to more suggestions from others...

    *Off to go and try playing with pages*

    p.s. also [[http://docs.monome.org/doku.php?id=app:arpshift|ArpShift]] is an interesting diversion, particularly regarding the different lengths per track, though won't do many of the other things you're after...

  • check out plane p:

    http://stretta.blogspot.com/2011/06/plane-p.html

    courtesy of stretta , a polyphonic, midi version, of the plane sequencer.

    not exactly what you are looking for... but worth looking at.

  • if you really want to get your hands dirty with it you can try making your own step sequencer in pages. i've built a very simple one that can be easily modified:

    http://code.google.com/p/monome-pages/source/browse/trunk/pages-0.2/scripts/GridStepPage.groovy

    if that doesn't scare you too much and you're getting the urge to tweak it then i'd be happy to help you get started.

  • I tried all your suggestions (with the lemur though) and got all of them working apart form the arpshift which just doesnt want to output notes. There are quite a few good templates though it is not as complex as i want them to be.Page especially is a really nice concept even when i messed up my machinedrum with the dedicated page, lol. I think i might look into the programming.
    Do you think it is possible to do what i want with some basic Java knowledge (i have done a few applets before)?

    I have made a little sketch how i envision the sequencer:

    http://www.pic-upload.de/view-13114585/Monomeproject.jpg.html

    Pressing one of the function buttons takes you either to a fader like page to set the value per step (eg cc values) or let you specify a step on each track (eg last step). Though i think i leave out direction for an octave setting.

    Hard to do? Anything special that really opens a can of worms?

  • no, i don't think it'll be very difficult if you have previous java experience, groovy is basically java + some nice scripting language features. here's some basic documentation on how this works:

    http://pages.post-digital.net/docs/groovy_page

    i apologize, some of this is a little out of date, use the GridStep.groovy page as a starting point.

    here's a few other examples:

    http://code.google.com/p/monome-pages/source/browse/#svn%2Ftrunk%2Fpages-0.2%2Fscripts

    they're also in the scripts folder of the archive.

    the basic idea is to define listener methods (press(), cc(), note(), clock(), etc.) to do what they should do when those events happen. there are also some utility methods to make things easier like ccOut(), noteOut(), led(), led_row(), etc. you'll see examples of them throughout the code. the code for those utility functions is here:

    http://code.google.com/p/monome-pages/source/browse/trunk/pages-0.2/src/org/monome/pages/api/GroovyAPI.java

    you can also make use of any of the pages classes which you can browse through on the google code interface. this is definitely more advanced but you'll see some examples of it throughout the included groovy scripts, including pattern recorders and how to get at the connected devices and talk between pages.

    any questions just let me know, or hit me up on the irc channel.

    edit: a few videos of some of these pages. the videos show:
    GridStepPage.groovy
    LivePage.groovy
    MIDILoopPage.groovy
    ArcControlPage.groovy

    http://vimeo.com/34207934
    http://vimeo.com/34208190

  • moin electrofux. possible that i "met" you at maschine forum? ;)

    2-3 years ago i was in almost the same situation like you. i've tried out many sequencers with my 128, and found molar (not standalone, but vst/au). pages i loved aswell, but the sequencers were at this time too limited (though the idea of phortran seems very promising).

    after a while i found out molar was also too limited (no note recording, max note lenghts of 1bar, limited pitch range... but a cool app!) - and now i'm an ordinary maschine user. ;) BUT in combination with ctrlr (http://ctrlr.org/index.php) hosted, this is a hardware automation beast! with ctrlr you can create any hardware-plugins which is imaginable - almost no limits anymore with cc, nrpn, sysex...

    now i'm hoping for maschine 2 (maybe a dedicated sequencer controller?), ha ha...

    machs jut

  • @photran: thx for the links. that will get me started :) Have to get up my old programming environment first which will take a while :/

    @mmai:

    that was probably me at the machine forum on my search for a stepsequencer.
    I checked out ctrlr but i didnt get very far since there are no docs, no tutorials no videos at all. I tried to load the jp8080 into a vst host, set the midi out (in the ctrl midi setting or the hosts midi out settings) but there was nothing coming out. I am at a total loss with that program. But you say you can load ctrl as a vst plugin in Maschine for a Sound and then get macro controls according to the loaded ctrl file to automate in a maschine pattern and the plugin then sends all midi including ccs to you hardware synth? So basically you can overcome the whole midi out automation issue with maschine? That would be cool because that was the only Reason that kept me from getting Maschine (the machinedrum is kinda cool to as a sequencer though)?

  • i forgot to mention electrofux, no programming environment needed. no compiling needed, no eclipse needed. it's all done within pages. you just write the scripts and click 'run'.

  • Yes, Ctrlr can do all this things. You don't have to take the 8 macro controls in Maschine. Imagine that Ctrlr can be a plugin. So you load it as any other usual plugin to Maschine, and immediately ALL parameters are controlable/automatable. And the other cool thing is, that you can give names to the parameters. So the overview of Ctrlr (in Maschine's display) is MUCH more better than with any other plugin.

    Actually Ctrlr is very easy to learn (if you know some MIDI basics). 95% of it's functions are not important for your wishes. I'd suggest you create your own panels, then you know what is what - and you're independent to the currently available panels. You can build plugins for any MIDI device. :)

    On the other hand I have to admit that Maschine's sequencer is VERY limited, this can be frustrating! And the quality of Maschine's hardware feels cheap. That's why I'm not really satisfied with it, but there are not much alternatives on the market (hardware/software integration). I'm waiting for the next big update, and then I'll decide if I change the sequencer, or not.

    If you have questions about Ctrlr, don't hesitate to ask, or register to the forum.

    By the way: phortran your engagement/support is unique, this I already wanted to say some time ago! :)

  • It seems like programming is pretty straight forward with pages.

    I am going to start coding my "perfect sequencer" today :)

  • exciting! let me know if you have questions and keep me updated on your progress. i'd love to roll this in to the official release.

  • yeah, it will take some time though. Loads of trial and error and step by step.
    I understand most of the source code of the apps in the links above but i will have to get back to you on some things- it is too early though as i think some things wil clear up once i have something running to work on.
    Atm i am adjusting and fiddling around with the existing code to get something basic running and then try to implement my ideas.

    Stay tuned ;-)

  • There's this:

    http://stretta.blogspot.com/2011/06/plane-p.html

  • So i started modifying the gridstep sequencer with stuff from the pages sequencer and i have the first tiny results. I realized though that my programming has become a little bit rusty ;-) and my imagined sequencer is gonna be a pretty huge undertaking but i get along slowly. It might take ages or get never finnished but i want to give it a try anyways since it is quite fun to program the device.

    But questions arise obviously:

    Is there an example of an internal midi clock for the groovey page? In the end version i want to have that and in the meantime it would slim down my setup.

    Also (noob question incoming) how do i print out variables to the log window the log () command doesnt work for me.

  • hey electrofux,

    nice to hear you're having fun with it! there is no built in internal clock but you could create one. the idea would be to create a new thread that infinite-loops and triggers the clock call every so often. it would look something like:

    class InternalClock implements Runnable {
    GroovyAPI page;
    boolean running;

    public InternalClock(GroovyAPI page) {
    this.page = page;
    running = true;
    }

    public void stop() {
    running = false;
    }

    public void run() {
    while(running) {
    try {
    Thread.sleep(30);
    page.clock();
    } catch (InterruptedException e) {
    }
    }
    }
    }

    you can stick this class right in your groovy page. here's an example of that:

    http://code.google.com/p/monome-pages/source/browse/trunk/pages-0.2/scripts/MIDIXYPage.groovy

    only thing left is to start the thread, keep a reference to it at the top of your class:

    InternalClock clockThread;

    in your init() method start the thread:

    clockThread = new InternalClock(this);
    new Thread(clockThread).start();

    then make sure you kill the thread in the page's stop() method:

    clockThread.stop();

    that should do it!

    as for log, it only takes String arguments currently, but you can easily print out any type of variable by concatenating it to a string. for example if you have:

    int x;

    and you try to do:

    log(x);

    it'll say "no method signature exists for log(integer)" or something to that effect. however, if you do:

    log(""+x);

    it should work.

    hope this helps!

  • Is that how other apps within Pages handle timing, or is it generally better to use an external clock? (e.g., syncing to Live's tansport)

    (that's not a loaded question; I ask purely out of ignorance.)

  • all other apps use an external clock source, this would be the first instance of an internal clock in pages that i'm aware of. curious how it turns out.. java is notorious for terrible timing so those sleep(30)'s may fluctuate a bit, but hopefully it's a good enough approximation for testing at least?

    edit: a little googling indicates that a 'Timer' might be a better approach:

    http://stackoverflow.com/questions/1453295/timer-timertask-versus-thread-sleep-in-java

    if the accuracy is really bad you might try using this instead.

  • Interesting...

    I very much like the idea of running different apps at independent / fluctuating tempos, and then maybe using arc to nudge things closer to sync occasionally. Must experiment!

    (this fits in nicely with my notion of "repeated elements should degrade into chaos, forcing you to interact with them")

  • @>0, thats a good notion there.

  • cool ideas guys, if this notion of an internal clock becomes more popular i'm happy to move that class into the app proper so you don't have to include it in each of the groovy pages and can use centralized clocks, there would be a potential for sharing them (or not) between groovy pages as well if we did that.

  • As you may know, I recommend pages for everything from clip launching to a companion for a good night out; but I have the Ableton / IAC / midi issue with it's step sequencers - Ableton thinks midi is arriving, but it doesn't end up in any channel. I've never been able to fix it properly.

    Other sequencer apps seem to work OK with the IAC drivers, but have their own issues:

    Plane mi-c-v is amazing but requires double presses where it shouldn't, and if you move the x/y position with the mouse it resets again when you push a button

    Soyuz is where I started but is old monomeserial and feels a bit antiquated.

    Plane P doesn't work at all for me

    So I am also looking for the dream step sequencer...