Sure! It works with a grayscale 128 (I use one myself), and it shouldn’t interfere with Tidal.
You’ll want to check out not the master branch, but the windowsCanMove branch, which I’m currently working on. (It already works, I’m just making it better.)
The St (state) type includes the following field:
_stWindowLayers :: Map MonomeId
[ ( (X,Y) -- ^ the top-left corner
, Window app ) ]
The MonomeId type is just an enum for my three monomes. You can change it to whatever you want. Currently it’s this:
data MonomeId = Monome_256 | Monome_128 | Monome_old
(My Monome_old is also a 256.)
Note that monome coordinates are like CGI coordinates: (0,0) is the top-left, and they increase as you go down or right.
Montevideo.Monome.Main defines where the windows are on each monome.
I should note that this design is going to change a little. If you check out this commit:
you won’t have to deal with those changes. The upcoming changes will be to give each “keyboard window” (there are also a Shift window to shift the keys, a Sustain window that functions kind of like a piano sustain pedal, and windows for changing parameter values) separable timbres and sustain facilities.
You get your choice of which windows to use, and where. See Montevideo.Monome.Main’s edoMonome function for how I set the values of stWindowLayers and edoKeyboards.
You could modify the code if you wanted to make it so that most of the time, most of the area of your 128 is the keyboard, but sometimes it instead lets you control the parameters of the synth. (Currently I put a keyboard window on the two 256s and use the 128 for parameter control. That’s how you’ll find the code when you clone the repo.)