Hi Petah, Hi Mixxx developers

I have access to an Hercules RMX2 controller which propagates its high
resolution infos as two midi keys. So one of our future project will be the
implementation of this.

While a sysex solution will work as well, we should consider how to map
those non standard high resolution values in a generic way.

The discussion about timing concerns is right. Mixxx is only able to react
on control messages between the audio callbacks. This timing is set by the
audio buffer size. On length of an audio buffer is always processes without
adopting new control messages.

This means for Example with an Audio buffer of 20 ms, that 4 of 5 sysex
messages will produce nothing but CPU heat. On the other hand with a 1 ms
Audio buffer, you have unnecessary thread switch overhead, because it is
only possible to adopt a control command after for cycles.

So it is a good idea for best responsiveness to sync the control queue with
the audio cycle. This is as well one of our future projects.

An explicit poll for the hottest current values would be fine. This would
avoid to process ~3.9 ms old values at worst. But RJs concerns are right as
well, It does not come without costs. So we should check the timing
carefully.

Remaining todos:
* Allow high res midi values,
* Sync the midi thread with the audio callback.

Kind regards,

Daniel













I am also in favor of


2013/7/10 RJ Ryan <rr...@mixxx.org>

> On Wed, Jul 10, 2013 at 2:05 PM, petah <mi...@djpetah.com> wrote:
>
>> >Is there a reason to make a request/response setup rather than a
>> broadcast
>> >setup? Isn't your processing code constantly reading this data as the CD
>> >spins?
>>
>> Yes, approx every 4 milliseconds. If I were to write a 64-byte SysEx MIDI
>> message that often it'd likely overwhelm the system.
>>
>
> That's 16000 bytes/sec. Which is really not that much data. MIDI (i.e the
> wire protocol) has a max of 31.25kbits/s but MIDI over USB usually ignores
> that limitation. If you find it's an issue, you could just rate limit it on
> your side.
>
>
>> Since Mixxx doesn't need data that often and can only process it without
>> glitches up to a certain point, as Owen pointed out, the "pull" model makes
>> more sense.
>>
>
> Maybe you should allow Mixxx to set the update interval via a sysex
> message? Currently Mixxx doesn't have a way of telling how loaded it is.
> The controller processing thread runs at lower priority than the audio
> processing callback so it really should not matter if the scheduler is
> working correctly.
>
> Adding the wire overhead and latency of a request every time you want data
> seems silly because the time to the next request is a function of time
> alone and the request carries no information.
>
>
>> >You could just continuously write messages to Mixxx and then parse
>> >them in a Mixxx MIDI script.
>> >
>> >
>> >On Wed, Jul 10, 2013 at 1:43 PM, petah <mi...@djpetah.com> wrote:
>> >
>> >> I had this idea for a high-resolution MIDI interface and would like to
>> >> know if it's doable/stupid before implementing it.
>> >>
>> >> My (software) device continuously updates a few high-res variables at
>> high
>> >> speed, i.e. it's not strictly event-oriented. There are two CDJs, each
>> has
>> >> the following variables:
>> >>
>> >> - track (unsigned int)
>> >> - position_ms (unsigned int)
>> >> - tempo (signed float)
>> >> - pitch-bend (signed float)
>> >>
>> >> to keep it simple let's say each variable takes 32 bits, so that's 64
>> >> bytes for both decks (and ignore other variables for now).
>> >>
>> >> if my software were to construct a MIDI SysEx message with this data as
>> >> one binary blob, would a Mixxx javascript driver be able to query that
>> blob
>> >> to interface with my device?
>> >>
>> >> Since the data is real-time, Mixxx could query it as fast as it
>> can/wants
>> >> so there are no timing constraints on my end.
>> >>
>> >> thoughts?
>> >>
>> >> thx,
>> >>
>> >> -- p
>> >>
>> >>
>> >>
>> ------------------------------------------------------------------------------
>> >> See everything from the browser to the database with AppDynamics
>> >> Get end-to-end visibility with application monitoring from AppDynamics
>> >> Isolate bottlenecks and diagnose root cause in seconds.
>> >> Start your free trial of AppDynamics Pro today!
>> >>
>> http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk
>> >> _______________________________________________
>> >> Get Mixxx, the #1 Free MP3 DJ Mixing software Today
>> >> http://mixxx.org
>> >>
>> >>
>> >> Mixxx-devel mailing list
>> >> Mixxx-devel@lists.sourceforge.net
>> >> https://lists.sourceforge.net/lists/listinfo/mixxx-devel
>> >>
>>
>>
>> ------------------------------------------------------------------------------
>> See everything from the browser to the database with AppDynamics
>> Get end-to-end visibility with application monitoring from AppDynamics
>> Isolate bottlenecks and diagnose root cause in seconds.
>> Start your free trial of AppDynamics Pro today!
>>
>> http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk
>> _______________________________________________
>> Get Mixxx, the #1 Free MP3 DJ Mixing software Today
>> http://mixxx.org
>>
>>
>> Mixxx-devel mailing list
>> Mixxx-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/mixxx-devel
>>
>
>
>
> ------------------------------------------------------------------------------
> See everything from the browser to the database with AppDynamics
> Get end-to-end visibility with application monitoring from AppDynamics
> Isolate bottlenecks and diagnose root cause in seconds.
> Start your free trial of AppDynamics Pro today!
> http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk
> _______________________________________________
> Get Mixxx, the #1 Free MP3 DJ Mixing software Today
> http://mixxx.org
>
>
> Mixxx-devel mailing list
> Mixxx-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/mixxx-devel
>
------------------------------------------------------------------------------
See everything from the browser to the database with AppDynamics
Get end-to-end visibility with application monitoring from AppDynamics
Isolate bottlenecks and diagnose root cause in seconds.
Start your free trial of AppDynamics Pro today!
http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk
_______________________________________________
Get Mixxx, the #1 Free MP3 DJ Mixing software Today
http://mixxx.org


Mixxx-devel mailing list
Mixxx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mixxx-devel

Reply via email to