I know and I installed python3 but when I ask terminal which version im on, it still says 2. any ideas on that? thank you for helping

if I type ā€œpython3ā€ I get a response followed by >>> so I assume im now using the other python version but I don’t know what to do from here

Do you also have a pip3 command? Or does that tell you it doesn’t exist? I believe this installs along with the Homebrew package for Python 3. The thing is that OSX relies on Python 2 for various things and expects this command to be called python, so when Homebrew installs Python 3 it is accessed through the python3 and pip3 commands.

If you have pip3, hopefully all there is to it is:

pip3 install monome-druid
druid

If the pip3 install monome-druid part works, but druid doesn’t, it’s probably because Terminal doesn’t know where to find the druid program after it’s installed.
I believe on OSX this goes to /Library/Frameworks/Python.framework/Versions/3.8/bin/druid (assuming you have Python 3.8). You would then need to add this folder to your PATH so that Terminal can find it when you ask for druid.

To modify your path, edit your /etc/paths file, something like

sudo nano /etc/paths

to open an editor (nano), paste this path (just the folder /Library/Frameworks/Python.framework/Versions/3.8/bin/ , leaving out the druid part), then use Ctrl+X to quit nano, then Y to agree to save before quitting. You may need to reopen Terminal after this for this to take effect.

thank you so much! I am in druid but now when I type ā€œcd /Users/brendanwilliams/Documents/NORNS STUFF/bowery-1ā€ I’m told ā€œno such file or directoryā€. I’m doing this bc im under the impression this tells the computer where to look for the Lua files I want to upload. am I correct in thinking this is the reason?

I downloaded bowery, put it in a folder I call Norns which is in my documents folder on the Mac. I right click then hit option to get the copy path option to pop up, type cd then paste. where am I messing up?

the reason im going through all of this is that nothing would ever upload to crow, just get stuck at ā€œuploadingā€ and never finish, so I assumed my stuff was out of date.

thanks for the hand holding. I understand and retain more and more with each issue I encounter. appreciate the help/teching

Is that ā€œNORNS STUFFā€ with a space in it? Typically in a terminal spaces are used to separate different arguments from each other, so if you want to pass a single argument that had a space in it you have to quote it:

cd "/Users/brendanwilliams/Documents/NORNS STUFF/bowery-1"

or escape the space with a backslash:

cd /Users/brendanwilliams/Documents/NORNS\ STUFF/bowery-1

but not both (if you had quotes and a backslash, it would think you wanted a literal backslash character too).

Lots of situations did cause upload difficulties with the initial release, you definitely want to update crow to 1.0.1 and druid to 0.2.0 for a lot of stability improvements.

I can’t thank you enough. shift register is loaded on now. thanks for teaching me about the naming conventions. now I know! :slight_smile:

3 Likes

When using the command line, folders and files with spaces in their names are the devil.

4 Likes

Sounds like this is the strategy that you used already, but this post outlines it clearly for others who might be interested!

1 Like

Thanks for the pointer. Though I am using a metro, my solution is a less graceful and somewhat less easy to generalize. I’ll give this method a shot when I have a moment.

1 Like

I found ā€˜pip3 install --upgrade’ pip worked

2 Likes

Can’t get druid to install on mac - getting this msg …

WARNING: The directory ā€˜/Users/admin/Library/Caches/pip/http’ or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo’s -H flag.
WARNING: The directory ā€˜/Users/admin/Library/Caches/pip’ or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo’s -H flag.

Got there - rather than pip3 install monome-druid
I used sudo -H pip3 install monome-druid
which ran very quickly w/o any error messages
then druid - which burst into life! :grinning:
albeit with the message crow disconnected

note I did use csboling’s (above)
To modify your path, edit your /etc/paths file, something like

sudo nano /etc/paths

to set the path

I think, without a ton of OSX experience, that this is preventing you from installing using OSX’s system-included Python distribution (which is Python 2 anyway). This is when you run pip3 install monome-druid? Just pip install monome-druid is not what you want, since this would try to use the default python / pip that comes installed on OSX and is used for various system scripts

I tried the script that @Galapagoose post for the fix but it didn’t work for me. If you have anymore luck then I did I’d love to hear what worked for you. Keep me in the loop!

I finally I just got around to trying the script by @Galapagoose. I messed around with it a bit and got it to work:

delay.lua
--- delay.lua
-- in 1: clock
-- out 1: random value delayed by time delayTime

delayTime = 0.1

function init()
    input[1].mode('change', 1, 0.1, 'rising')
end

input[1].change = function()
   delay(delayTime, function() output[1].volts = math.random() * 2 end)
end

function delay(time, action)
   local dmetro = metro.init(devent, time, 1)
   dmetro:start()
   function devent()
      action()
      metro.free(dmetro.id)
  end
end

My version above is different that the original posted by @Galapagoose in a few basic and cosmetic ways (mostly to make it a generic test script that is not specific to ii.jf stuff), but the main important difference is the line:

dmetro:start()

Without it the metro never starts.

I’ve gotta run, but I’ll look at my old solution later and see if there’s anything that differentiates it in a way that makes it useful. However, my old version uses the same principle (i.e. the metro system) and I think the @Galapagoose version (with the one fix) is better, so I’m pretty sure you’re safe to just go with it. I probably will.

Since both solutions use the metro system, that means you’re limited to seven at any one time so it would still be nice to have a method for doing this outside of the metro system (if that is even possible/feasible…)

3 Likes

Oh fantastic news!

I’ll attempt again when I finish work in a few hours.
Hoping I can get it working with my noobiusness.

A quick question, where should I place

dmetro:start()

Cheers!

Click the arrow next to ā€œdelay.luaā€ in my previous post and you can see the whole test script.

1 Like

Oops, I see my testing was very sloppy. Since we are trying to delay an event, but the metro executes it’s first tick immediately, we only want something to happen on the second tick. The updated script below adds my fix for that.

Click for updated delay.lua script
--- delay.lua
-- in 1: clock
-- out 1: random value delayed by time delayTime

delayTime = 0.1

function init()
    input[1].mode('change', 1, 0.1, 'rising')
end

input[1].change = function()
   delay(delayTime, function() output[1].volts = math.random() * 2 end)
end

function delay(time, action)
   local dmetro = metro.init(devent, time, 1)
   local count = 0
   dmetro:start()
   function devent()
      count = count + 1
      if count == 2 then
         action()
         metro.free(dmetro.id)
      end
  end
end

Just want to say a big thanks!
I tried your script edits, the first didn’t work but the second did the trick and its working. Happily been playing jf as a voice with kria and its fantastic. Thanks for the help!

3 Likes

Total noob here. Just got a crow a couple of days ago and trying to explore the Bowery scripts. How does boids.lua works? is it a sequencer?

The script refers to this page, which gives this description (and has a nice embedded Javascript simulation):

If I understand the script correctly, boids.lua uses input 1 to give a ā€œcenter-of-mass voltageā€, or perhaps ā€œinput boidā€, input 2 to give an ā€œacceleration voltageā€, and then the outputs form a simulated flock using these rules to assign output voltages corresponding to the positions of the flock. The Wikipedia article also has some interesting links, including this paper which uses a flocking algorithm with ā€œvirtual DJsā€ to ā€œautomatically program Internet multichannel radio stationsā€.

3 Likes