Show more

orca-c's MIDI implementation should now be nearly identical to the electron/JavaScript version of orca. The only missing parts are MIDI beat clock and MIDI song start/stop.

cancel boosted

I did not reach today's goal.

✔️ MIDI CC
✔️ MIDI pitchbend
❌ MIDI beat clock
❌ MIDI start/stop

✔️ Spend 8 hours trying to figure out wtf is going on with sunvox MIDI input timing on Linux
❌ Figure out wtf is going on with it

Show thread

@neauoire nothing i did with both the JS and the C versions of orca, i mean. both are crap with sunvox, for me.

Show thread

@neauoire can you give me more detailed information about your sunvox setup? i have no idea why the JS/web version of orca has accurate timing for you with sunvox. nothing i did was able to make it have stable/accurate timing.

ORCΛ bytebeat

wire MIDI CC value directly to audio output device (normalized to -1..1)

controlling the frequency by BPM. set the BPM above 10000 to get it into audio range.

(bad quality due to having to run OBS and JACK at the same time to record it, and none of this stuff was designed to do this, haha)

Seems like MIDI event timestamps are being lost between being sent from orca and being processed in sunvox. Though if you drop the audio buffer size in sunvox down to 2ms, it'll at least process the MIDI events with 2ms granularity.

Ah yes, Linux userland. Where trying to run a music program leads me to a prompt telling me I need to reboot and also if I screw up I will lock everyone out of the machine.

Today's goal: implement *all* of the missing MIDI features in orca-c.

@neauoire are you around? how can I set up a sunvox thing like you had set up in your demos to me with the timing problems?

@neauoire orca-c doesn't attempt to elevate its scheduling priority, so if you're running a bunch of web browsers that are playing animations and multiple audio programs at the same time, the linux kernel is going to give very low priority to orca. it will basically treat it like a background process and possibly only run it a few times per second, vs thousands of times for the web browsers.

Show thread

@neauoire i suspect what's happening is that you have too many processes running on your linux machine that want elevated/audio priority, and the cpu load is too high, and so the linux kernel is hardly ever scheduling the orca process, so it can't ever fire off its events with accurate timing.

Show thread

@neauoire if you use 'nice' to boost the priority of the orca process, does the time jitter get less bad?

@neauoire @npisanti @eel @Lutrinus OK, I've just made it so that an input velocity of 0 doesn't send a note. `1` through `g` map to velocity 7 through 127.

Show thread

@neauoire @npisanti @eel @Lutrinus sorry, I meant to say it more like this:

what actual MIDI velocity do you get when you give the `:` operator a velocity input value of `0`?

Show thread

@neauoire @npisanti @eel @Lutrinus what's the behavior supposed to be in orca when you send a midi note with velocity '0' ?

In the current (existing, old) orca-c code, it sends a MIDI note with velocity 1.

But I'm updating it to match the current orca JS behavior.

But the current orca JS behavior looks like it sends a MIDI note with velocity 0... which is actually a note off, which would be wrong, and generate incorrect MIDI output if there's no matching note on (which there probably isn't.)

@neauoire huh, uhh... is the new behavior for orca's MIDI velocity supposed to allow for a 0-velocity note being sent? because that's a note-off... it would cause problems

Show thread
Show more
Merveilles

Revel in the marvels of the universe. We are a collective of forward-thinking individuals who strive to better ourselves and our surroundings through constant creation. We express ourselves through music, art, games, and writing. We also put great value in play. A warm welcome to any like-minded people who feel these ideals resonate with them. Check out our Patreon to see our donations.