I am thoroughly enjoying the learning process with crow! I have a quick question though.

Running the latest version of crow (1.0.3), I noticed that when I run a script (r samplehold.lua) the command works, although druid replies with ‘running First.lua’ even if this is not true anymore. Could this be a problem with druid? I also noticed there was a new release of druid in November, but I am not sure how to check which version I have. If I rerun ‘pip3 install monome-druid’ the terminal says all requirements are satisfied.

1 Like

I believe this is a bug in how crow reports it’s status after an r command from druid. Crow is really telling you what is the stored script, rather than what is running. I’ve made a github issue to get this fixed in the next update.

4 Likes

hi everyone
i get a strange message when i load druid

ModuleNotFoundError: No module named ‘prompt_toolkit.eventloop.defaults’

1 Like

When and how did you install druid exactly?
Could you show the output of pip freeze | grep -i prompt (or if you’re in Windows whatever the equivalent thing is :grimacing:)?

So, I just updated my OS into Catalina Recently and every time I open a Terminal I get this message:
The default interactive shell is now zsh.

To update your account to use zsh, please run chsh -s /bin/zsh.

For more details, please visit https://support.apple.com/kb/HT208050.

should i update?

You don’t need to, this is just pointing out that zsh is the new default (for new accounts). You can retain your current shell for now and all should be good.

I’ve not tested Druid under zsh, it most likely is fine but some common shell options will differ.

1 Like

I’ve been using zsh for years and have had no issues with Monome scripts. There is a subset of scripting commands that work with most shells, bash and zsh included, and most script developers will use that subset to make sure scripts work with with any shell. If you use shell customizations, you may need to update them for zsh but if you don’t, you most likely won’t even notice the difference. But, like sanderson said, you don’t need to switch to zsh. Hope that helps.

2 Likes

hi guys, back here

have 2 problems:

i’ve already checked python and reinstaled version 3.8.1

ok i managed to update crow, by reinstalling homebrew

Hi there: I’ve got druid running on macOS, Crow updated to firmware 1.0.3, sending live commands to the module, loading scripts from the bowery repository – all good! It’s really fun!

However, working on a new script that has a medium-large Lua table (viewable here), when I run

r script_with_medium_large_table.lua

the Crow dies, outputs all zeroed out, and it refuses to reply to any commands through druid until the module is power-cycled, at which point it reverts to the script loaded before my (failed) run/upload of the script with the medium-large table.

The same script works fine with truncated table, so I’m wondering what limit I’m hitting here? The only documented value I could find was “8kB of local script storage” and my script with the medium-large table is 2kB.

Also, I will just offer that, if the issue is simply that “tables of this size are not allowed, sir,” it might be helpful to receive an error message from either druid or Crow. The system’s current response had me scratching my head for a while before narrowing it down to the table.

(Oh and, finally, if this isn’t the right place for this kind of report/question, just let me know!)

I think this is actually a Mac OS problem where the serial port (on the PC) doesn’t wait for the receiver to be ready before blasting on the port. We worked around this in druid by adding a small delay between transmission of each line in a script, but your error suggests there is some character limit to how long a line can be.

(Hopefully) the easy solution, is just to insert some carriage returns in that super long line. That line has 1296 characters.

Here's what I'd do
local notes =
{ 4.8, 4.0, 4.1, 4.4, 4.8, 5.0, 5.1, 5.4, 5.8, 6.0, 6.1, 6.4, 6.8, 7.0, 7.1, 7.4
, 7.8, 7.4, 7.1, 7.0, 6.8, 6.4, 6.1, 6.0, 5.8, 5.4, 5.1, 5.0, 4.8, 4.4, 4.1, 4.0
, 4.5, 4.7, 4.8, 4.1, 4.5, 4.7, 4.8, 5.1, 5.5, 5.7, 5.8, 6.1, 6.5, 6.7, 6.8, 7.1
, 7.5, 7.1, 6.8, 6.7, 6.5, 6.1, 5.8, 5.7, 5.5, 5.1, 4.8, 4.7, 4.5, 4.1, 4.8, 4.7
, 4.8, 4.0, 4.1, 4.4, 4.8, 5.0, 5.1, 5.4, 5.8, 6.0, 6.1, 6.4, 6.8, 7.0, 7.1, 7.4
, 7.8, 7.4, 7.1, 7.0, 6.8, 6.4, 6.1, 6.0, 5.8, 5.4, 5.1, 5.0, 4.8, 4.4, 4.1, 4.0
, 4.5, 4.7, 4.8, 4.1, 4.5, 4.7, 4.8, 5.1, 5.5, 5.7, 5.8, 6.1, 6.5, 6.7, 6.8, 7.1
, 7.5, 7.1, 6.8, 6.7, 6.5, 6.1, 5.8, 5.7, 5.5, 5.1, 4.8, 4.7, 4.5, 4.1, 4.8, 4.7
, 4.5, 4.8, 4.2, 4.4, 4.5, 4.8, 5.2, 5.4, 5.5, 5.8, 6.2, 6.4, 6.5, 6.8, 7.2, 7.4
, 7.5, 7.4, 7.2, 6.8, 6.5, 6.4, 6.2, 5.8, 5.5, 5.4, 5.2, 4.8, 4.5, 4.4, 4.2, 4.8
, 4.7, 4.0, 4.4, 4.5, 4.7, 5.0, 5.4, 5.5, 5.7, 6.0, 6.4, 6.5, 6.7, 7.0, 7.4, 7.5
, 7.7, 7.5, 7.4, 7.0, 6.7, 6.5, 6.4, 6.0, 5.7, 5.5, 5.4, 5.0, 4.7, 4.5, 4.4, 4.0
, 4.5, 4.8, 4.0, 4.4, 4.5, 4.8, 5.0, 5.4, 5.5, 5.8, 6.0, 6.4, 6.5, 6.8, 7.0, 7.4
, 7.5, 7.4, 7.0, 6.8, 6.5, 6.4, 6.0, 5.8, 5.5, 5.4, 5.0, 4.8, 4.5, 4.4, 4.0, 4.8
, 4.6, 4.0, 4.2, 4.5, 4.6, 5.0, 5.2, 5.5, 5.6, 6.0, 6.2, 6.5, 6.6, 7.0, 7.2, 7.5
, 7.6, 7.5, 7.2, 7.0, 6.6, 6.5, 6.2, 6.0, 5.6, 5.5, 5.2, 5.0, 4.6, 4.5, 4.2, 4.0
}
1 Like

I appreciate the tip! I’ll try this out.

Edit: it worked! Thanks again. Perfect advice.

I’d like to run a very slow metro - 60s time intervals

I’m using the following code, and seeing “process” called at ~20 sec intervals. If I bump the time value down to something lower, I can start to get “accurate” intervals. It has me thinking that there’s a max metro time of 20s?

Does anyone know if I should be able to get 60s intervals on a metro?

metro[1].init{ event = process
			, time = 60.0
			, count = -1
			}
metro[1]:start()

Yes, the limit of the metros is about 20seconds. That’s the longest time interval I could get the hardware timers to run at our clock speed. We should eventually extend this in the crow software.

In the interim I’d set a faster metro in your program and increment a counter, performing the action on overflow. Not as elegant, but should only add a handful of lines.

Perfect. That’s exactly what I did, running a metro at 1 second intervals with a counter.

I’m loving crow, the best source of modulation in my system now.

2 Likes

Hey :wave:

I bought a used crow some days ago but have a hard time using it right now.
The first days, it’s been recognised by druid erratically - meaning I had to reboot my system and druid more than 10 times before it being reachable. At that point I was able to upload a first script which worked, then uploaded a much larger script, that printed “not enough memory”, then druid sort of crashed. Since then, rebooting the system > 10 times doesn’t get any result anymore.

Today, I tried to put it in bootloader mode but nothing happens after sending a ^^b message. I also downloaded the latest release but it does not contain the flash.sh file that I’m supposed to run.

Last bit of info: I failed at updating the Just friends because (I believe) of grounding issue.
Is it possible that the same situation is happening with the crow?

Any help would be greatly appreciated :+1:
Hugo

I would love to see how you are using crow for modulation. This is a great use case for me. Thanks @yoyu

Which version of druid & crow firmware are you using?

In a new terminal session type druid --version.
Then start druid and type ^^v, upon which crow should echo it’s current version number (if you can get it to connect).

Regarding the ‘out of memory’ issue- scripts are limited to 8k characters. Is the script you’re trying to upload online anywhere?

Regarding the bootloader, you’ll only be able to use the ^^b command if you’re successfully connected to crow in druid. If you can’t connect to the device, you’ll likely need to force the bootloader.

There is no longer a flash.sh file, instead use the *-update_firmware.command for your operating system. If you could let us know where you read the flash.sh step that’d be great so we can remove that outdated information.

hi! i’m trying to run https://github.com/monome/crow-studies/blob/master/crow-grid.lua with a grid connected to my laptop. however, i get attempt to index a nil value (global 'grid'). sorry for the potentially silly question—is there anything special i have to do to get the grid to be recognized in this environment?

That script is assuming that you have a Norns connected to crow. It wont work otherwise.