Ah okay! So, it’s going to be a lot easier if you fork off from my repository, which is the latest running in norns community.

You can hit the “fork” button on this page and it will make a clone of the project in your github account. This way you’ll have all the library and helpers at your disposal as well as the new clock system.

In either the polyperc or ack scripts you’ll find “trigger” and “gate” methods which is an easy place to try new note/sound making ideas. I would experiment with crow-triggering code there. Once it feels good we could move it up to the main meadowphysics code so it’s universal across both ack and polyperc (and any other future outputs).

Perfect, will do, thanks!

I haven’t gotten around to this yet, sorry! But it is on my list!

All good. What kind of crow behaviour were you looking to add? I’m keen to do some Lua this week. PS Just alt tabbed from this notification to instagram and your video was playing!

Whoa! The universe is wild!

As far as crow goes, I’d just love to be able to send v/oct from output one and a gate or envelope from output two. If I remember correctly, I was able to get v/oct going, but was having trouble closing the gate after the note event (in other words, it just stayed on).

how are you deciding the pitch output? just the last track to trigger wins? (which seems fine to me)

actually now i have an ansible I can match how that works

1 Like

“Deciding” would signify enough competence on my part to possess an intention :grimacing: I’ll paste the code below, though it’s experiencing a formatting hiccup.

NB, I’ve established “crow 1+2” as a param in the code, but won’t paste that here (unless it would be relevant/where things could be going wrong).

Summary

for _,n in pairs(notes) do
local f = MusicUtil.note_num_to_freq(n)
if (params:get(“output”) == 1 or params:get(“output”) == 3) then
engine.hz(f)
end

    if (params:get("output") == 2 or params:get("output") == 3) then
      midi_out_device:note_on(n, 96, midi_out_channel)
	  table.insert(active_notes, n)
	end
	if (params:get("output") == 4) then
		crow.output[1].volts = (n - 60) / 12
      crow.output[2].volts = 5
		end
	end
	notes = {}

Which should send the voltage to output one, and open the gate on output two. But right now, the gate stays high. Here’s where I try to close the gate on midi note off.

More code
local function all_notes_off()
  if (params:get("output") == 2 or params:get("output") == 3) then
    for _,a in pairs(active_notes) do
      midi_out_device:note_off(a, nil, midi_out_channel)
	end
	if (params:get("output")) == 4 then
		crow.output[2].volts = 0
	end
  end
  active_notes = {}
end

local function step()
	all_notes_off()

I know I’m misunderstanding something in here, just not sure what. Also, I do have an Ansible en route, so while this is becoming less a matter of personal necessity for me, I’d love to help as much as I can so that I learn!

Any chance of adding the option you mentioned of having the note trigger at the end of the cycle? There are times where the current implementation works best, but there are a lot of times that I really wish it was like the old approach with the trigger at the end, especially when using multi-reset cycles.

Thanks so much, it’s a blast using midi out into a polysynth!

1 Like

Done!

Just pushed a new update which adds params for “trigger on press” and “trigger on reset”, both are which off by default so it should behave the same as ansible mp on launch.

Also added Crow/Just Friends modes! There is a polyphonic voice mode which is very similar to Awake, and there is a trigger mode which uses the first 6 rows of the grid to output triggers from the 6 channels of Just Friends which is REALLY fun to make eurorack polyrhythms with.

Here’s my first patch in trigger mode:

I have not worked out a crow output mode yet though.

6 Likes