Will the Crow max patches/library work with Max 7? I’m thinking about making an ancient Macbook Air I have be my Crow computer, but I don’t want to install past Mavericks (10.9) which won’t run Max 8 but will run Max 7. Barely. Ha. Limitations!
And while I’m thinking about it, how about Live 8?
Can you use m4l with two or more Crows?
currently, yes — 7.3.6 is the minimum. however, since Cycling ‘74 can only improve their current product, there will likely be optimizations in Max 8 that crow will want to take advantage of (namely better handling of Lua) and this may change its compatibility down the road.
fwiw, my test machine has Max 7 and 8 / Live 9 and 10
i think the minimum version of Live is dictated by minimum requirements of Max, so Live 9 might be as low as you can go.
not at the moment, but it’d be trivial to open up. essentially, the devices each used to have a drop down that allowed you to select your crow. for single crow setups, this was insanely cumbersome once you had more than one m4l device. so, to meet the majority of usecases in this phase of crow i opted for a cleaner approach with ^^command_center.
what i also like about this approach is it this uses a send/receive network to queue up crow messages, versus the “each device talks directly to crow” method. this is currently a necessary workaround to defeat a known bug with jit.gl.lua not being stable while receiving bangs in scheduler (apologies for the technical description, but it’s the main reason why we can’t just smash all the data streams to crow together),
- a single crow can have mutlitple m4l devices loaded up, including 4 instances of ^^outs, and handle it all real well. that’s 2 inputs, 4 outputs and i2c simultaneously
- if you have more than one crow and want to use the m4l toolkit across them, let me know! i’ll happily build and send you versions of the devices that have individual dropdowns. it’s just not the cleanest thing in the world, you know?
I’m asking because I’m currently running a MOTU Ultralite mk3 to get cv from Ableton into the modular, and it looks like Crow would be a nice way to add more cv outputs as well as its other features, of which I’m most intrigued by the live coding at the moment, although at some point I need to figure out the II stuff for JF and Ansible…
keep in mind that crow is not an audio interface. CV is event-based, like MIDI but much faster and with slews.
so it is a different thing than a DC coupled audio interface, though many of the same things can be done
I am aware that Crow isn’t a dc coupled audio interface. One of the exciting things about Crow for me is that is can supplement the MOTU with more cv, despite operating on a different principle, but can also do the other cool things it does.
I’ve been reading about live coding for a while but now there’s a clear path to start actually doing it…
Wondering if you could explain a bit more about event-based CV on crow…
I’ve heard that cv to MIDI converters typically aren’t fast enough for audio rate modulation, but don’t know what sample rate they run at.
Is crow fast enough for some audio rates? Is there a sample rate for crow?
experimentally, yes. in the
cv shapes tab (in Max) of the [crow] object’s help patcher, there’s a section that passes hz arguments to crow. you can define these into audio rates, but crow becomes unstable after too much of this (ab)use.
@Galapagoose, any insight?
Crow is “event based” in that it’s designed to be controlled with commands like “make an LFO at 2Hz”, rather than a series of samples sent in real time that make that LFO.
Crow internally generates signals at 48kHz (though the user doesn’t have direct access to these samples). Crow reads inputs at 1.5kHz.
Maybe a dumb question but is it this functionality that makes Crow able to be live coded?
And also, when live coding Crow, am I correct that you still need to send signals from it to other VCOs/VCAs which will actually make the sound? Crow doesn’t make any sound on its own, right?
Lastly, I’ve been curious about the Orca live coding app. Would Crow be able to work with that too, or only Druid? I’m assuming that it’s designed for Druid more or less out of the box…
Great, good to know!
My bad, it’s been a bit since I used Ableton, I meant Live 9 which is one generation back and compatible with 10.9, so thumbs up for me!
reverse order makes the most sense here
crow is designed to listen to a specific scripting syntax. messages to crow must fit a format that crow expects. for example:
crow.output.volts = 3.33
this tells crow “please push 3.33 volts from your first output”. there are currently a few things that know how to talk to crow (norns, druid, and the Max/M4L toolkit), but this is certainly not widely adopted (yet? ).
so, if Orca speaks MIDI to Live and you have Live Suite, you could definitely use the M4L devices to translate events happening in Orca to crow. you could also use the [crow] object in Max to translate these messages. but unless Orca is updated to specifically send commands in the format crow understands, crow will not respond to Orca (running on your laptop) without the M4L or Max layers.
yep – crow is a blank slate, so it requires instructions like the one posted above to know what you’d like it to do at any given moment. you can automate these instructions by telling crow “wait for a voltage pulse at your first inlet and then please emit a random voltage from your third outlet.” these instructions can be relayed to crow through a variety of methods:
- you can live-code it through Druid, typing instructions to crow in real time
- you can create a Max patch that send these instructions to crow on demand / as a sequence of events (a version of live-coding without the command line)
- you can upload a full script to crow so that it knows what it’s meant to do and it just awaits external triggers (like control voltage at it’s inlets or MIDI through a Max patch)
all of these generally fit an abstract “live-coding” paradigm (as does working with a modular synth), but the activity + genre (?) of live-coding music can also totally be achieved through Druid.
bugh, sorry if that got too esoteric.
essentially, yes. for what it’s worth, you can push crow to a (from my testing) unstable limit where you run audio rate lfo’s. but the currently suggested use case is to treat its outputs as control-rate generators.
I won’t be at my case for several days I think, but if someone wants to test this for me that would be ace!
^^derwydd: crow live-coding
Like Druid, but runs in Max4Live in Ableton. Has a scroll history. Can be used to upload and clear user scripts etc.
^^bridges: crow tele-operators
It’s a “bridge” into crow: you give each bridge a name (e.g.
myVar) and then whenever you change the corresponding knob, Crow gets a message like
myVar = <knobValue>.
My main use case is to use this to get data from e.g. a NanoKontrol into Crow so that I can write more elaborate scripts with lots of controllable parameters. You might also consider automating the control knobs or mapping them with other M4L devices.
Changing what variables you are controlling is as easy as typing in new names in the corresponding bridge, or hotswapping an ableton preset to change all 8 at once. You can also remap the range of each knob.
looks awesome! wowowow. what is a good test procedure for folks? I’m assuming this would work in conjunction with Druid or a standalone script, to extend control?
devices updated to include @Rodrigo’s excellent
nb: LFOs on
^^outs is currently broken. able to replicate outside of the device as well, so I’ll dig in this weekend. apologies if everyone wanted LFOs first thing :\
temporary weirdness seems to have resolved itself!
Updated bridges so that you can switch between integer and float output.
I also created ^^derwydd (name subject to change), which is meant to function a bit like Druid but in Ableton. I still need to add some annotations, but the basic idea is to have one textbox for live coding, and then a bunch of other textboxes which you can store macros in (sent by the pressing corresponding keypad number). Macros are stored with the ableton live set. still need to make some docs for it, but it should be working!
Oh, and it has scroll history (10 entries) for the main entry box - forgot to put that in the docs!
In the next few days or so I would like to add the ability to save userscripts onto crow etc.
Also need to set up a display for messages returned from crow
Edit: I tested bridges - it’s working great as far as I can tell!
this is all so amazing, sam!!
Sweet I think ^^derwydd is finished and annotated… I’m splitting the “macros” feature out into a separate device.
You can use ^^startscript and ^^endscript to write your own User Scripts without needing to enter Druid now! (I’ve found that I can’t have druid and ^^commandcenter working at the same time I think?)
The only thing I’ve yet to implement which I would like to is a file browser for the code averse to be able to upload Crow scripts without ever having to enter terminal or type their own scripts into the ^^derwydd terminal window.
@dan_derks maybe longer term we should make a standalone max application - people without Live would be able to download a single app which functions as a GUI for uploading new scripts to crow, running utility functions, live-coding, etc… just a thought. Possible avenue for increasing crow accessibility.
FYI I also had to update ^^commandcenter - I just added a send from the crowmax.lua jit object in order to pass printouts to other M4L devices. I’ll make a PR once I feel like ^^macros is ready…