INTERACT FORUM

Windows => Plug-in Development => Topic started by: ths61 on January 31, 2024, 01:44:31 pm

Title: Linux FireMJEvent callback questions
Post by: ths61 on January 31, 2024, 01:44:31 pm
Is the FireMJEvent() in-shared-object callback supported in Linux ?

If so, is there an example code snippet to register the FireMJEvent() callback function pointer in Linux ?
 
All examples appear to be Microsoft centric.
The SDK does not use FireMJEvent in any of its examples (Microsoft or other).

Code: [Select]
3.3 Handling the events from Visual Basic
3.4 Handling the events from Visual C++ with MFC
3.5 Handling the Events from Visual C++ with ATL

https://wiki.jriver.com/index.php/Media_Center_Automation (https://wiki.jriver.com/index.php/Media_Center_Automation)

The docs above indicate the following:

Code: [Select]
The first parameter is the event type and currently there is just one event type, namely "MJEvent type: MCCommand" The second parameter identifies the MCC command.
 MCC: NOTIFY_PLAYERSTATE_CHANGE

    Fired when a the player state changes
        A new track starts to play
        Playback is stopped, paused, or started
    string3 is the zone

Is it possible to include specifically which of the 3 states has been changed in the NOTIFY_PLAYSTATE_CHANGE callback (stopped, pause, started) ? 

Signaling something has changed is not very useful (latencies, race conditions, extra query overhead) without identifying what has changed.

Should there be a separate Linux and MAC Plugin development threads ?

TIA
Title: Re: Linux FireMJEvent callback questions
Post by: Hendrik on February 04, 2024, 04:58:39 pm
The Automation is only supported on Windows, as it uses Windows specific automation interfaces.
Title: Re: Linux FireMJEvent callback questions
Post by: ths61 on February 05, 2024, 01:54:55 am
The Automation is only supported on Windows, as it uses Windows specific automation interfaces.

Thanks for the confirmation.

Can an efficient optional registered callback interface for Linux be added to notify the plugin of these playback state changes without incurring network overhead, network latencies and race conditions ?

It might encourage more plugin development.

Thanks much.
Title: Re: Linux FireMJEvent callback questions
Post by: mattkhan on February 05, 2024, 02:43:57 am
a websocket that broadcasts changes would be better imv and abandon the plugin approach entirely
Title: Re: Linux FireMJEvent callback questions
Post by: ths61 on February 05, 2024, 04:18:46 am
a websocket that broadcasts changes would be better imv and abandon the plugin approach entirely

Still need the Steinberg VST3 plugin interface (which uses registered callbacks, much less overhead, latency and no parsing).
Title: Re: Linux FireMJEvent callback questions
Post by: mattkhan on February 05, 2024, 04:42:17 am
Still need the Steinberg VST3 plugin interface (which uses registered callbacks).
VST is different thing to an MC plugin, I'm referring to the windows specific plugin interface once used for "automation" purposes. Everything these days is directed to MCWS but the broadcast state part is missing.
Title: Re: Linux FireMJEvent callback questions
Post by: ths61 on February 05, 2024, 04:59:33 am
VST is different thing to an MC plugin, I'm referring to the windows specific plugin interface once used for "automation" purposes. Everything these days is directed to MCWS but the broadcast state part is missing.

I think this is good reason for there to be a separate Linux Plugin thread/section since my OP is specifically for Linux (Linux FireMJEvent callback questions). 

I would like fast, lightweight, tighter tolerances for VST3 plugin processing, else the race conditions would render them useless.
Title: Re: Linux FireMJEvent callback questions
Post by: mattkhan on February 05, 2024, 05:24:45 am
what does VST have to do with this thread?
Title: Re: Linux FireMJEvent callback questions
Post by: ths61 on February 05, 2024, 12:41:40 pm
what does VST have to do with this thread?

(Plug-in Development) Really ?

https://yabb.jriver.com/interact/index.php/topic,126706.msg878408.html#msg878408 (https://yabb.jriver.com/interact/index.php/topic,126706.msg878408.html#msg878408)

< Add / Remove VST3 Plugins Here >
(https://i.imgur.com/5MWt1oE.png) 
Title: Re: Linux FireMJEvent callback questions
Post by: JimH on February 05, 2024, 02:24:10 pm
mattkahn,
Feel free to split.
Title: Re: Linux FireMJEvent callback questions
Post by: mattkhan on February 05, 2024, 02:45:31 pm
(Plug-in Development) Really ?

https://yabb.jriver.com/interact/index.php/topic,126706.msg878408.html#msg878408 (https://yabb.jriver.com/interact/index.php/topic,126706.msg878408.html#msg878408)

< Add / Remove VST3 Plugins Here >
(https://i.imgur.com/5MWt1oE.png)
It's a different thing entirely to https://wiki.jriver.com/index.php/Media_Center_Automation which is about interacting with MC itself using its own API. VST is a 3rd party API which is specifically used within the DSP engine and so it strictly concerned with signal processing only (which the MC API is not concerned with)

Title: Re: Linux FireMJEvent callback questions
Post by: ths61 on February 05, 2024, 02:52:45 pm
It's a different thing entirely to https://wiki.jriver.com/index.php/Media_Center_Automation which is about interacting with MC itself using its own API. VST is a 3rd party API which is specifically used within the DSP engine and so it strictly concerned with signal processing only (which the MC API is not concerned with)

Don't be so obtuse.  Both are plugins, both are written for MC with one being more ubiquitous and applicable to more than 1 host.

They are NOT mutually exclusive as you are implying.

Have you ever used a string library with a math library to create a single shared object ?

Are all of your programs limited to a single header file and single library linked ?

This appears to be the irrelevant off topic point you are trying to repetitiously make.
Title: Re: Linux FireMJEvent callback questions
Post by: ths61 on February 05, 2024, 05:21:01 pm
In the attempt to keep this thread productive and on topic:

Would it be possible to define a set of states supported by MC (Play, Pause, Stop, Gain=value, Mute, etc.) and then pass the state transitions through the VST3 interface such as the following which implements sample-accurate parameter changes ?

Note: If this is implemented through the Steinberg VST3 interface, it would not be limited to a "Windows Only" feature (3 OSes, 1 implementation/interface).

TIA

Code: [Select]
    Advanced VST 3 techniques

On this page:

    Part 1: Sample-accurate parameter handling
    Part 2: Adding 32 and 64 bit audio processing
    Part 3: Thread safe state changes


https://steinbergmedia.github.io/vst3_dev_portal/pages/Tutorials/Advanced+VST+3+techniques.html#part-3-thread-safe-state-changes (https://steinbergmedia.github.io/vst3_dev_portal/pages/Tutorials/Advanced+VST+3+techniques.html#part-3-thread-safe-state-changes)