Of all the coolness in crow, after my 1st night playing my biggest takeaway was how powerful ASL seems. In the ASL section of the readme:

There is a reference to the to the ASL spec page

I certainly don’t understand a good deal of what that page dove into, but from a high level I was a little confused at the reference to the user function “toward(destination, time, shape)” where the crow readme and most the other crow docs reference “to(destination, time)”.

Is “toward(…)” an earlier iteration of “to(…)” or something unique? And if so, does shape also apply to “to(…)”?

In any case, very much excited by how much potential that system opens up.

yes! oy, we gotta clean these old bits out of the system, apologies!

toward is now to, all the potential still applies :wink:

2 Likes

That’s really awesome! The system feels reminiscent of the line~ and curve~ objects from max, but with a bunch of extra tricks wrapped around them. :exploding_head:

Poked around a few of the other ASL lua docs, but I have yet to find the place where the possible shapes are defined. The ASL spec makes mention of ‘linear’, ‘sine’, and ‘log’. But I was curious if there were others and/or other ways to specify them?

I’m abusing the shape field - I’m just using it to store strings for different modes. The strings you see there are not actually ASL things; they are specific to that script.

2 Likes

Ah! Apologies for the misinformation :sweat_smile:

No, just one. There’s no interface to switch between scripts, so we opted for the simpler one-at-a-time option. That said, uploading a script takes <1 second.

Absolutely. Crow doesn’t care whether a USB device is connected or not. You could have a standalone script running on Crow, and send additional messages to push it in certain directions. This is probably how most live-coding setups will work.

No. You can always bring it back by sending Crow the ^^clearscript command (from druid, or the Max help patcher).

This is totally true (and a primary use-case of druid), but we’re also building this functionality into norns, and likely a Max & M4L device. Hopefully within a couple weeks you’ll be able to upload scripts from any of the supported host applications.

Crow has some on-board docs you can query to learn more about the supported II devices. Try ii.help() which will give you a list of supported devices, and how to talk to them. Then, for example, you can send ii.wslash.help() to get a list of all the W/ commands supported on Crow.

These are forthcoming once things settle down on the documentation side of things. There’s a github issue if you want to be involved.

9 Likes

Here’s a silly question - should I expect Crow to appear as a USB device in Norns’s devices?

1 Like

I’m still not clear on the order of things that should happen when changing scripts. I am finding that whenever I change scripts on norns, or wish to go back to first, I have to power down the rack and power back on for crow to work again, after making the change. I’m sure I am missing something or doing something out of order, but I’m not sure what.

Based on this:

From what I understand, First should always be running when you change Norns scripts. What’s not clear to me is what takes precedence if Norns tells output 1 to do one thing and First tells it to do another.

Also, if both norns and the standalone script define a “change” function on an input, will the norns script overwrite this function, and what state will the standalone script be in after changing norns scripts? I am guessing the function is still overwritten which is why you would have to power cycle to get first back to it’s initial state.

The only way to really know how they will interact is to look at the code that is running (ie, First which is saved as default.lua), and see what your changes will do to that.

In First, everytime a trigger is detected on input 1, all 4 outputs are set / triggered. If you set an output (eg. from druid), it will take effect until the next trigger on input 1, when First will continue. In this way, your remote control can interact with the running script.

Whichever happens last will overwrite previous definitions. This allows programs to change their behaviour over time.

When you restart Crow, things will return to whatever was uploaded in flash (or return to First if you haven’t uploaded anything).

Note: You can reset the Lua environment & reload the saved script (or First if no script is saved) by sending Crow ^^kill which is like a soft restart.

1 Like

How did you get this to work? When I connect the i2c pins from JF to crow, then load Awake (2.0) on norns, I don’t seem to get any interaction from JF.

Thats literally all I did. hooked up i2c from crow to JF. Powered on, then monitored JF “mix” out. If yours isn’t working, maybe try a different or shorter i2c cable? If read that alot of times when people can’t get i2c to work, trying different cables can help solve the problem.

That was my first thought but I have the crow studies loaded on to norns and the ii script is working fine to play notes from my JF over i2c. Feels like the issue is on the Awake side of things.

Did you select Just Friends as the output in the PARAMETERS menu? Also, did you update Awake after updating Norns?

2 Likes

That was it, thanks. The fact that my Awake version still showed as 2.0 threw me off, and I never re-applied the Awake update after updating norns. After updating Awake, I now have JF ii in the output options and things are working nicely! As usual, thanks so much.

6 Likes

alright got my crow. i have a just friends, w/ and ansible. do i just daisy chain them together using female to female dupont cables while making sure the gnd cables are connected together?

1 Like

Yup, gnd <-> gnd, sda <-> sda, scl <-> scl. So just keep the pins all in order (I think only ER301 uses a different order?) If it gives you trouble on the first go maybe try adding one module at a time.

1 Like

My situation exactly…

1 Like

thank you! alright here we go

i2 SEE you man. 20 characters of pun

1 Like