Comments (7)
This has been requested often, but it has lots of implications that we want to avoid. Reactive programming makes definitely sense, but it would be better to implement natively by writing mappings in QML (currently not possible, but wanted).
from mixxx.
The reactive programming that Mixxx controls offers just makes the code cleaner and I was interested in improving Mixxx anyway.
I agree, but connections to COs is not the solution. For now, regular imperative OO-oriented programming suffices for controller mappings (I recommend you take a look at ComponentJS).
If you want to improve mixxx controller scripting, I recommend you take a look at some small features such as the registering input handlers project you already discovered. Those will likely take a medium amount of code (300-500 SLOC I'm guessing) and would already help a lot in making the mapping system better.
from mixxx.
Is it related in some way to the Registering MIDI Input Handlers From Javascript topic in some way?
from mixxx.
Not really, that is separate. It's related rather to the fact that arbitrary COs for controller mappings (which have been requested previously for inter-mapping communication) are bound to introduce compatibility issues between mappings.
(also just fyi since you're currently learning the controller mapping system, prefer to use engine.makeConnection
over engine.connectControl
, the latter has been deprecated for quite a while).
from mixxx.
COs? Ok, so how hard would that be? Where should I start if I wanted to work on this?
from mixxx.
COs?
Sorry for glossing over that. That short for what we call "Control Objects" and its the [group],key
API you're interacting with via the engine.set*
calls.
Ok, so how hard would that be?
Medium I'd guess. Like 50 SLOC. But as I said, that is not a good solution and I would be inclined to reject such a PR currently.
I want to help you, so lets get back to the drawing board. What is your current usecase? I assume the break example you posted above?
from mixxx.
Some of it, yes. The DN-S3700 implements several features like this one, involving multiple components interacting with one another. In the abstract, this is entirely solvable with states in JS variables. Especially now that the JS engine supports classes. The reactive programming that Mixxx controls offers just makes the code cleaner and I was interested in improving Mixxx anyway.
from mixxx.
Related Issues (20)
- Color played tracks ... invisible when working with coloured tracks HOT 6
- Beat Jump forward using TRAKTOR Z1 Controller HOT 2
- microphone audio cuts out while recording HOT 1
- inconsistent Preview deck controls HOT 2
- Issue with library directory operations
- waveforms splitter broken in Tango
- Doubling the bpm again and again will make Mixxx unresponsive HOT 5
- Volume Spikes At First Second HOT 5
- Automation tags/markers HOT 1
- add `playposition_samples` HOT 4
- album cover art can cause low fps gui performance (waveform dropped frames count goes up) HOT 4
- delayed or wrong tempo changes when using rubberband (v2 or v3)
- applying track properties quickly twice will delete track metadata HOT 6
- active/default state/value handling to restore last known or default state values for certain running features like 'Beat Loop Size' & 'Beat Jump / Beat Loop Move Size ', and general support for 'hot-loops' loop memory length and locations metadata HOT 1
- Waveforms not moving HOT 2
- Qt bug on macOS: high CPU usage when scrolling library HOT 3
- Update to v2.4.0 drives older system unusable (caused by new waveform default GLSL@60fps) HOT 8
- EQ knobs in LateNight PaleMoon look different with Qt6.5.3 HOT 7
- Pre-Commit for JS mapping files introduces wrong EOL characters HOT 1
- Auto-DJ icon (on off) is 'ON' while a message says deck 3 & 4 must be stopped. HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mixxx.