GithubHelp home page GithubHelp logo

Add support for i2c2midi to firmware about crow HOT 7 OPEN

eethann avatar eethann commented on July 17, 2024
Add support for i2c2midi to firmware

from crow.

Comments (7)

mreid avatar mreid commented on July 17, 2024 1

Iā€™d love to see this too. I have a more memory efficient and fully featured version of that script you linked to on my machine. Iā€™m traveling at the moment but will push an update once Iā€™m home next week.

from crow.

eethann avatar eethann commented on July 17, 2024

I've started merging the i2c2midi code into the firmware here, currently compiles but untested: https://github.com/eethann/crow/tree/i2c2midi_support

from crow.

eethann avatar eethann commented on July 17, 2024

I just uploaded a compile of the first rough implementation and it seems to be working. Yay. I'll work on smoothing it out a bit and maybe getting more coverage of the i2c2midi commands.

from crow.

mreid avatar mreid commented on July 17, 2024

Nice work! I've just pushed the version I mentioned above to my repo: https://github.com/mreid/crow-i2c2midi/blob/main/i2c2midi-compact.lua

From memory, it gets rid of the range checking of the original to save memory and adds some extra commands. It also has a simple example usage at the top.

from crow.

eethann avatar eethann commented on July 17, 2024

Awesome. I just tried with the added CC out ops and they work. So fun!

I also tried adding a MIDI IN CC getter, but it's not working immediately. I'll push and provide more info.

from crow.

eethann avatar eethann commented on July 17, 2024

I figured out the CC getter (have to pass both channel and control number as args) and got the midi getters basically working. I've published a release so others can try it out here: https://github.com/eethann/crow/releases/tag/4.1.0-i2c2midi-rc1

I haven't gotten to any documentation yet. There's one problem that might require a change to some deeper code in the crow firmware: the second arg is used to pass the control number to query, but the event callback function is only passed the first argument. This makes it impossible to handle a specific controller number in the callback. The solutions I can see are either

  1. Generate separate getters for every CC controller number, so you only pass the channel (seems less than ideal, but would follow the fader implementation)
  2. Update the callback handler to pass an args table or an arg2 property back to the controller so we can check the specific controller that is being reported on (I think this would be preferable if not prohibitive)

Interested in any thoughts or recommendations about those two.

from crow.

trentgill avatar trentgill commented on July 17, 2024

hey folks! apologies for the long delay here - i didn't realize this was sitting here waiting!

i took a quick look at the linked forks & the core ii descriptors look good. if i understand correctly, the big block of commented out code is the example of how to incorporate it into a crow script. i assume the runtime-memory usage comes from generating function stubs for every command.

could someone link me to (or explain):
a) example of a crow setter & getter using this
b) the transmitted bytes that match to the above

my hope is we can find a way to use the "pickle"/"unpickle" C-extensions of the ii description file, to avoid needing to create stub-functions for every command.

if that fails, we could look into a metatable solution so all the commands can share the same function. i'd prefer to avoid this and keep everything within the automated ii code generation land!

from crow.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    šŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. šŸ“ŠšŸ“ˆšŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ā¤ļø Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.