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

Adding devices. #91

Open
christianholman opened this issue Apr 15, 2024 · 2 comments
Open

Adding devices. #91

christianholman opened this issue Apr 15, 2024 · 2 comments

Comments

@christianholman
Copy link

Hi! I've been spending some time mapping out the Denon SC Live 4 for myself, and I keep trying to optimize my typescript structure and seem to end up closer and closer to yours. Does it make sense to fork this repository to add support for a DJ controller like the SC Live 4, and if so, what would you say would be the best first steps, entrypoint-wise etc.? Thank you!

@christianholman
Copy link
Author

christianholman commented Apr 15, 2024

Also, if it makes sense, are you open to PRs adding such a device? How would you want naming conventions to be upheld between brands and devices?

@dszakallas
Copy link
Owner

Hi @christianholman

I've been spending some time mapping out the Denon SC Live 4 for myself, and I keep trying to optimize my typescript structure and seem to end up closer and closer to yours.

That's satisfying to hear, indicates the structure is generic enough for supporting other controllers.

Does it make sense to fork this repository to add support for a DJ controller like the SC Live 4, and if so, what would you say would be the best first steps, entrypoint-wise etc.?

The major shortcoming of the current code is a lack of support for faders, knobs, encoders, as I was focusing on launchpad which only has buttons. This started to change with intoducing Novation LaunchControl, but that code is still highly experimental. One thing I think might be different between these Novation controllers and your Denon, is that the former are very generic; basically you get a grid system, while on the latter I assume every physical control more or less has a purpose. So the generic layout descriptor I introduced for the Launchpad (however not yet using for the LaunchControl) is not that useful.

I suggest if you want to start out, start it simple. Create a package for your controller, inherit from MidiDevice, see if its generic enough, add some controls, see if there's some additional functionality you would need. Try to follow the LaunchControl code, although it is not very clean, but the LaunchPad code has this declarative description system which is not generic enough to be used, and also the diffing layouting is not needed I guess for Denon.

If you find it useful, I am open to publishing the generic packages, i.e mixxx and common to npm packages that could be used in your fork, also, separating a framework repo that contains and publishes this build system as npm package, so you could invoke something like mixxx-control build my-controller to build the controller script.

Unfortunately I don't have much time nowadays to work on these scripts, all my spare time on mixxx is spent on integrating AI driven stem separation, but I'll find some time to review any PRs or your fork.

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

2 participants