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

Add longer fade times #39

Open
belac9615 opened this issue Aug 6, 2022 · 2 comments
Open

Add longer fade times #39

belac9615 opened this issue Aug 6, 2022 · 2 comments

Comments

@belac9615
Copy link

Would it be possible to have fade times up to 10 or 20 seconds? I use this at my church and there are automated times where background music needs to fade very slowly. I did a quick search through the code and it looks like it would be as simple as adding more choices to actions.js:148, but I'm not 100% sure.

@josephdadams
Copy link
Member

It is not that simple. But I am working on it.

@jswalden
Copy link
Collaborator

In the latest module code, it in fact will be as simple as adding more choices to...well, now it's actions.ts:43. The previous fading code in JavaScript, I found so snarled that it was easier to rewrite the whole thing from first principles -- and the final algorithm was carefully written to support any fade duration an option supplies.

But that requires spinning a new release first. And the code isn't quite ready yet for that.

And I should say, since my changes mostly have been only about making the code readable/typed/documented/understandable -- I think it is plausibly argued that these fades should be tracked for their duration, not merely fired and inexorably executed. More specifically, if you start a fade of a particular level, setting that level to some other value probably ought cancel that fade and set the specified level. For 0s/1s/2s/3s fades, most often who cares. But at a certain point, we probably should worry about a fade accidentally being triggered, then you need to cancel it, but you're looking at it running for 10-20s with no control over it (except to mute the entire channel or deactivate the assign or something, i.e. the nuclear option).

That should not be hard to do, just keep a hash of active fades (keyed by NRPN) and have each fade-step check for cancelation or similar. But it is definitely not something I want to push into a first release that includes updating to 3.0, a total incremental rewrite into TypeScript, and substantial changes pretty much everywhere you look.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants