HN user

bezieio

37 karma
Posts1
Comments22
View on HN

I've recently developed a LV/React bridge and am using it on a production app, but nothing open sourced at the moment. I'll open it up at some point soon and try and post back here!

Nice work! I like the option to annotate with photos and notes! Have you guys checked out Spire? It's a free app, but could be paired with their hardware. It's different in that it's a really simple app for multitrack recording and editing, but I've also been using it for a similar function as Tape It. Not to take away from your work though, I will give the app a go :)

I open sourced Bezie (https://github.com/jperler/bezie), a library I wrote three years ago for MIDI automation curves. It includes some good examples of how to interpolate cubic and quadratic bezier curves given drag points on the curves. I used Pomax's bezier write ups as a starting point, which really helped out a lot (thanks Pomax!). If anyone is interested, take a look in `bezie/app/utils`, specifically the `getControl` methods that allow you to derive control points.

I considered it, but ended up sticking with MIDI for versatility. Do you know of any good resources to learn more about OSC?

I'm in full agreement that bezier curves are hard to learn to use well! I created an app called Bezie (http://bezie.io/) about a year ago in which you could create quadratic and cubic bezier MIDI automation. I ended up not including it in the release, but I had a smoothness feature where it'd basically update the amount of steps that it'd pass to the interpolate function (using De Casteljau's algorithm). The more steps the higher the curve resolution. I found 64 steps to be somewhat of a magic number as it always looked and sounded smooth. There's also the balance of how many times you want the interpolate function to run while dragging points. With too high a resolution it gets CPU intensive and lags and with too low it starts getting boxy and no longer represents a curve. It's been on my plate to open source the app. It includes some helpful math for deriving control points while dragging points on the curve. Anyhow, nice post and thanks for sharing!

I followed De Casteljau's algorithm, not Catmull-Rom. The control points that you drag are at t=0.5 for quadratic and t=0.25 and t=0.75 for cubic beziers. De Casteljau's algorithm gave me a bit more flexibility to validate and constrain the automation curves. Thanks for the feedback!

Yeah - Bezie definitely didn't take years! It's interesting that basic curves don't exist in some DAWs. My guess is that the codebase is monolithic and there's probably lots of legacy code that is hard to touch. Hopefully Bezie works out for you and thanks so much for the review!

Bezie has some overlap, but the use case is a bit different. There are a couple of VSTs like LFO Tool and MIDIShaper that allow you to create a fixed width shape and toggle how many bars it should stretch over. In Bezie, if you select 8 bars, you'll literally get 8 bars to automate. As an example, if you wanted to map a couple different parameters to play with a song transition or drop, it'd make sense in Bezie, not so much in the others.

The original motivation of Bezie was to build a simple tool to enable finer control over bézier curve automation. It evolved from a MIDI clip generator into a MIDI controller. Bezie opens up new possibilities with cubic and quadratic bézier curves. Bezie runs as a virtual MIDI controller outside of your DAW, not as a VST. This makes MIDI mapping extremely simple and no different than mapping from a hardware controller. Bezie also has several unique features including: vertical & horizontal envelope inversion, copy & paste, grid control and concurrent envelope rendering. Bezie is built with Electron, React and Redux and takes advantage of node-midi for virtual MIDI and SVG for the automation UI.