Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Switch to an all max implementation #23

Merged
merged 1 commit into from
Jan 21, 2020
Merged

Switch to an all max implementation #23

merged 1 commit into from
Jan 21, 2020

Conversation

trentgill
Copy link
Contributor

CC: @whimsical-sam

Four hours later I finally got this somewhere that feels ok.

I stripped out the lua layer from the max object, and specifically reimplemented crowmax.lua as a sub-patcher of raw max objects. It's a little more difficult to follow as it uses a bunch of [regexp] to parse the strings (and I'm a regex novice), but I think the code is actually pretty clean for what it achieves.

I also kinda drastically refactored the patching at the top layer, removed some repetition, and (i believe) made the logic easier to follow. I believe I covered all of the edge cases in the lua code, but I would suggest some heavy testing before we make it public.

A couple things I didn't touch, but could potentially be improved in light of this:

  • the [qmetro] object could likely be a plain [metro] to get it into the high-priority thread
  • the [deferlow] object is likely no longer necessary to avoid crashes for all input

This is only in the max implementation (not m4l) so that will need to be copied once we confirm it's still working. That said, the main reason I dove into this was to workaround the lua scheduling issues @dndrks has been mentioning.

Feedback is welcome, but if someone else wants to jump in and make changes / fixes I'm happy with that!

@trentgill trentgill requested a review from dndrks December 2, 2019 06:24
@dndrks
Copy link
Member

dndrks commented Dec 2, 2019

oh, DOPE. I will thoroughly test this week with the existing m4l suite + @whimsical-sam 's abstractions.

this is huge, Trent -- thank you so much!!

@dndrks
Copy link
Member

dndrks commented Dec 3, 2019

super great test results with m4l

this is fabulous!!!
pulled your branch into my own branch, so I could mess around with adjusting ^^command_center.

  • I removed [deferlow] + reassigned [qmetro] to [metro]. the m4l devices are all way snappy now and Live actions don't stutter the data flow.
  • I linked up [live.this_device] to refresh the device list + auto connect is finally working upon m4l device load! so stoked!! (addresses Max object should autoconnect to an available crow #22 )
  • got rid of the delays imposed on jf_synth, which allowed full polyphony. I was sequencing arpeggios of 6 voice chords at random velocities without a hitch for like 30 minutes. the simultaneous message improvement coupled with cleaning out the lua stuff really really improved things!
  • outs -> lfo now totally works cuz Lua's not crashing! (addresses crow m4l: ^^outs: lfo sometimes crashes Max + Live #20 )

huge improvements, thank you so so much @trentgill. I'll be testing max solo tomorrow.

@dndrks dndrks self-assigned this Dec 3, 2019
@dndrks dndrks added the enhancement New feature or request label Dec 3, 2019
@dndrks dndrks merged commit bc894e3 into master Jan 21, 2020
@dndrks dndrks deleted the maxxy branch January 21, 2020 23:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants