pages 2 alpha release

  • just tried with a49, same thing.

  • hey declutter, tough to say w/out the line numbers (not sure why those didn't come through? maybe different jvm, or could be my compile flags..) but i did find a piece of potentially crashy code in Pattern.clearPattern and added a check to prevent it. give it a shot and let me know if you hit it again!

  • That's great phortran, works perfectly, thank you. And congratulations on version 50! Your golden jubilee!

  • Hello Phortran,
    First of all thanks for this amazing app!!!
    It is changing myself now that I finally got a monome and stopped using the launchpad simulation.

    But I am encountering one issue:

    I would like to use this app:
    With external app page but it does not seem to work.
    POsted also on the topic of the app but there seem to be no solution so far.

    DO you know of any issue?

    Please consider that I use the external app application succesfully with many other external apps (M4L and max) but I am not using the zc version of serialosc but the one you can download form the setup page of this website.

    Hope you can shed some light


  • hey bassik, i'm surprised that the standard serialosc works at all with external app! i can't imagine how it's even working. it's definitely not a configuration that is officially supported, as it were. i just tried ml(ive)r and couldn't get it to see pages external app either. about as much as i can tell you is that it uses a patch called 'serialosc_live' for its serialosc layer, not sure if that's standard or has a zeroconf version.

    here's the problem: the way the new osc discovery works is serialosc listens on a specific port, i believe it's 12002, and monome discovery happens over that hard-coded port. if serialosc is running and listening on 12002 then no other app can sit in between and do external app type things (ie. pages). additionally there is no way to register a virtual monome for discovery with serialosc, so it's just not possible to properly integrate it.

    zeroconf support has been maintained in serialosc proper however and is the supported way to connect with pages external apps. you just have to switch out the serialosc maxpat and add the zeroconf externals.

    unfortunately if the app doesn't support zeroconf then i really don't know how you'd make it work through external app. if you can find a zeroconf-enabled replacement for that serialosc_live subpatch inside the app then you might have some luck.

  • Hello Phortran,

    thank you for your answer.

    Actually it happened to me that using the zc serailosc was giving me problems with many applications.
    I needed to change to the latest serialosc to get some of my favourite M4L apps to work (mlr, flin).

    I will have a go with the app to find out if I can modify is a long time I would like to put myself into monome based max programming and mybe this is the time to do it...or simply use mlr and forget about new apps.


    Keep up the great job!!!


  • Hello Phortran,

    investigating this in a bit more details I have realised that I actually have both version of serialosc in my max path.
    So that is the reason.
    Regarding the ml(ive)_r patch, I have had a discussion on teh forum with the uys that developed it and they say it uses its own serialosc patch that does not work with zc serialosc.

    so my question is: how hard it is updating pages to the new serialosc (64 bit vs 32 bit of the previous zc serialosc)?

    In my view this will help many of us who are still in love with grids (monome only) and love pages.
    this will allow to use all new applications that will be developed in teh future instead of staying with the old applications developed years ao now.

    I am a new user on pages but I love it instantly from the first use.
    If you think that you can do easily the same thing with an emaulator for launchpad, I found it disrupted for the community to not have a monome native application to use multiple patches at once.

    So this is a gentle request for updating (unfortunately I am not familiar with Java so I could have offered myself for help).


  • hi bassik,

    64 bit support for zeroconf should be possible, it should just require a recompile of the max externals but this hasn't been figured out yet. i'll have to take a stab at it someday but my knowledge in this area is sorely lacking. see:

    the new serialosc maxpatch removes zeroconf support, and external apps are not possible currently without it, just no way to do it. so ml(ive)_r would still need to use bonjour/zeroconf itself in addition to the externals needing fixed.

    there's really nothing that can be done to pages itself to fix this. :(

  • a thought just occurred...

    so new osc protocol, serialosc listens on 12002 on all available interfaces.

    what if pages only listened on 12002 on the localhost interface, you run pages first before you run serialosc. this gets pages bound to localhost:12002. then you run serialosc, it fails to bind to localhost:12002 but will bind to any other interfaces.

    now as long as apps are broadcasting the osc messages to, which i believe they are, both pages and serialosc should be able to receive these messages and respond -- serialosc with your real monomes, pages with your external app monomes.

    hacky as shiiiiit but it just might work? will try this out sometime...

  • hey raja, thanks for the thoughtful response. i have been a bit lazy on this front, relying on old methods instead of finding new solutions.

    i do think reliance on zeroconf is an issue as the community as a whole is clearly moving away from it.

    i'm still a fan of dedicating multiple serialosc ports. we've already got 1, what's the harm in adding a couple more? on a flight a month or 2 back i hacked up the new serialosc.maxpat to work with multiple ports but i haven't quiiite finished the pages side of this yet. no technical issues really, just time/motivation i suppose. your post actually reminded me of it, i had practically forgotten. i'll take another stab at that and post the results if i get it working for possible inclusion in the main serialosc.maxpat distribution.

  • Hello karaokaze and phortran,

    thank you for the interest in my request.
    I personally believe that the development of a unified way of connecting apps in the community will also benefit to open the patches and hardware to more people.
    I know many musician friends that love monome, when I show it to them, but are not keen to buy one as they see it as a "hacky" and "esoteric" hardware for some people who love coding.

    I believe sorting this issue with pages can open more possibilities to open the patches to people that are not really into programming or in fiddling too much around with different protocols of transmission.

    I reckon serial osc works way better than monome serial and it is way more stable...please develop it!!!
    If you need help in beta testing I am available.

  • hey. i'm also interested in helping solve this issue - for Gridlock I've had to make a minor change to serialosc.maxpat to get serialosc working (added port 12003), so a common solution would stop us all having to do little changes like this. I know there was some discussion a few months ago, but seems to have fizzled out.

    Happy to help out building 64-bit Windows zero-conf too, if that would help in short-term, but agree that updating the serialosc stuff to work with multiple ports is the best way to go...

  • ok great! i think it's worth us at least trying the approach to see how viable it is, ie. creating a proof of concept solution, and then offering that up to everyone else. i'll see if i can take a look at this in the next few days.

  • Please!!!
    As said I am very happy to beta test!!!

    Waiting for the new version...
    THank you for considering this update phortran, much appreciated!


  • hey sorry friends, i've had to work a bit of overtime this weekend and it's looking like another week at least.. stay tuned

  • hi @phortran! is there a +/-1 offset for clip/scene launcher pages in the latest release?

  • So, I can't seem to get the quadrants to work properly. I get MIDI and LED feedback on one half, but not the other. I'm using the two/halves quadrant.


  • I am also using an emulator. Monemur. It's funny, I have a real 40h, but the emulators help me understand the software better and are, in reality, for me, more fun to use.

  • NEVERMIND! I don't know what I did, but I fixed it. Works perfectly via "monemur".

  • Bought a new laptop, having an issue. I have everything installed as said in the setup tutorial. I am using the zeroconf because I intend to use external apps. When i try and discover devices in pages it does not find my monome. When I run the test patch I am able to connect no problem. I ran the troubleshooting app and the only NOT OK was --copy serialosc.maxpat to /Applications/Max6/patches--. I'm assuming why it doesn't think the file is there is because it's the zeroconf version? Any help is much appreciated.

    monome gs 128
    OSX 10.9

  • @g_gordon88

    Phortran made a video for quadrants here. I was stumped but follow prompts exactly as shown and you should be good

  • Sorry mate saw he had fixed it

  • Hi fellow monomers :)
    I'm thinking about updating to OSX Maverick (to use the new XCode 5) and I was wondering if any of you had experienced any incompatibility with Pages? (java version or so ...)

  • i'm still on 10.8 myself but don't know why it wouldn't work...

  • after reinstalling max, live and pages and following all the setup set again Pages no longer discovers my monome when i try to set configurations. any ideas?

  • after reinstall having same issue as @jessemiller. Pages is not recognizing my monome any more. I am using the current serialosc patch because I am not going to be using the external apps page. please help, otherwise I will be stuck doing a boring set tomorrow using a launchpad...

  • hello, it looks like jessemiller got his issue resolved by reinstalling max/msp?

    to discover a monome it should just take a working serialosc installation (the app itself not the max patch). if it's not discovering device at all i'd say first make sure monome_test works. if not this could indicate an issue with the serialosc installation. if monome_test does work try switching from Apple to JmDNS in the dropdown when discovering devices in pages.

  • @phortran
    I'm having a strange issue with Pages. Whenever I try to use Pages to run multiple external apps, the first monome app I try to connect will connect just fine and work, but once I try to connect the second app, it doesn't work. The external app pages populate in the monome connections list, but when you select the page you want and hit connect, the external app page never makes the connection after connecting the first app. I am testing this using a custom m4l app, nerd scroll standalone, and straw standalone, all 3 apps work perfectly on their own directly connecting to my 256. Any time I try to run these apps at the same time in Pages, whatever app is connected first works, but the other 2 won't connect after that. Do you know why it is that I can only connect one app inside Pages successfully? Thanks in advance, can't wait to get this figured out.

    osx 10.8.5, ableton 9.1, max 6.1.5

  • hmm! my first guess would be to set the in ports to different values in each external app page. the /prefix messages could be getting picked up by previously configured external apps if they're sharing the same in port.

  • I've tried multiple different independent numbers for the apps, but only the app that's connected first works. If I connect to the first app, then try to connect to the second app, the second app won't connect. But if close the first app I connected the second one connects no problem after that. I just can't seem to figure out why this is, and all I want is to run 2 apps at the same time for my live setup, my custom app I've made and nerd scroll, really unfortunate.

  • really feels like a port conflict. my best advice is to make sure that each app is on its own set of ports.

    1) open an ext app page
    2) change the ports to something else
    3) hit update prefs in external app
    4) open the m4l app and connect to the extapp entry

    repeat for another app, but pick completely different ports in #2, and make sure you're picking the 2nd extapp entry in step 4.

    check the extapp windows to see how the extapps are affecting them when you connect. they could be changing ports or prefixes. again, make sure it's all distinct.

  • @phortran
    I have another query that I have not been able to resolve looking around in teh forum and searching the wiki.

    Midi sequencer page

    Is it a melodic/harmonic sequencer?
    I cannot find a way of changing the scales and not even the notes. seems like it is based on c major (all white keys on a piano) and I would love it to be harmonic.
    especially the poly senquencer would be amazing.

    is there a way to make it work built-in in pages? or any workaround with live?


  • hello! yes, there is a way, i'm not in front of it at the moment but there's a dropdown that has the options Row 1, Row 2, ... Row 16. when you select one of those it should populate a text field with the note name/octave, like C-2, F#-2 etc. you can change these note names to customize it. let me know if you have any trouble with that and i'll take a closer look.

  • Hello Phortran,
    thank you for your answer.
    I would check tonight but I am wondering if there is another way without editing the text file that seems a bit fiddly.

    You know something like the midi keyboard but on the sequencer so I can decide which scale to use and its root note.

    I will let you know how I go with the manual changes.


  • sorry if i was unclear, you don't have to edit the text file, there is a gui interface for it.

  • Hello Phortran,
    Tried it and it works but I have to admit it is a bit fiddly.
    Also if I want to try different scales I need to have loads of pages.

    so this is time for a request:
    Would it be possible to have a melodic/harmonic sequencer?
    Maybe reducing the number of banks to add the possibility of defining scales and dominant.
    Like in the keyboard page.
    I know it can be overcome by an external app but the built-in functionality are just so easy to use.


  • oh yes, agreed, it isn't really ideal for that.. and it really looks terrible in osx! :(

    it's been so long since i've extended pages, i don't know if i'll be doing much more work on it, but i will keep this suggestion in mind. do you use ableton? if you haven't already, you might try the midi scale effect in conjunction with the pages sequencer to quickly shift scales.

  • Hello phortran,

    thanks for keeping it in mind.
    Yes I use ableton and m4l.
    I thought about using scales but a monome controlled change would be amazing.

    is it very difficult to do in teh groovy pages?
    Maybe I can have a try if you can share the basic code for the sequencer.

    Just a try.

  • that'd be fantastic! i don't think the groovy pages are very difficult at all and i'd be happy to help you work through it. i do have a basic sequencer here:

    quick code overview:

    init() is called when Run gets clicked, stop() when Stop is clicked
    press() when a button is pressed, i'm just setting an array representing the steps and setting the led
    redraw() when the page is changed generally, it should draw the led state entirely
    note() when a midi note comes in, you can do something with it
    cc() when a cc message comes in
    clock() when a midi click signal comes in, 1/96 resolution (standard midi clock rate)
    clockReset() when you click stop twice in ableton, reset playhead position
    sendCommand() you can send commands from other groovy pages, this page is set to receive swing/length/velocity, i've sent these values from an arc groovy page previously

    any other questions let me know!

    edit: oh one more good resource, the GroovyAPI class, these are all the methods you have available within groovy. you can also use any object within pages, it's a bit more syntax but there are some examples of that floating around the groovy script examples.

  • Thanks for this phortran.
    I will have a look in the next weeks, unfortunately I am moving home now so I am not sure I will have a lot of time. Let's see.

    is there a code that shows how the change of the scale in key module works?


  • @nowawakelow @phortran Having the same problem. Did you guys every solve this? Can't connect to any external apps.

  • hi @phortran
    i know you are little out of the project, but as allways, i have to try :D
    would it be possible to implement some kind of midi in data to the arcCC groovy page,
    I'm working with 10 of these pages right now and would be awesome to have a feedback position from live.

    thanks so much

  • wow! 10 of them! :) you are a braver man than me... i will look into feedback for you.

  • for feedback, add this to the bottom, above the last curly brace in the file. then enable a midi input for the page:

    void cc(int num, int val, int chan) {
    if (chan != midiChannel) {
    for (int enc = 0; enc < 4; enc++) {
    if (ccNum[enc] == num) {
    cc[enc] = val;

    i will push this up to github and the release zip shortly.

  • 80
    fast and easy,
    haven't enought words again to say thanks
    works great!

    i just upgraded my arc to the 4.
    next step check deeper the arc control page

    thanks Tom!!

  • glad it works! :) enjoy my friend

  • hey guys, quick update, i've fixed a bug in the quadrants page where pattern quantization/length wasn't getting set properly. i've also updated the MIDILoop.groovy page and added a new MIDIChannelooper.groovy. Channelooper is laid out as follows:

    top 4 rows: midi triggers
    5th row: midi triggers, ignored by pattern recorders, shows an overlay of the first 2 ableton looper device states
    6th row: midi triggers, ignored by pattern recorders, used for effect toggles in the video
    7th row: song selector, sends a midi CC at values 0, 16, 32, 48, etc (every 16) to use with a chain selector to pick different drum racks. also sends a bpm message to change ableton bpm.
    8th row: pattern recorder toggles

    midi looper is similar but the program change buttons have been replaced with midi CC messages similar to midi channelooper (easy to use with chain selector). there are also now two modes per buffer: record and play. when play is on no patterns will play and no notes will be recorded, you can just play.