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

How do slides work? #26

Open
arthurkehrwald opened this issue Feb 25, 2025 · 3 comments
Open

How do slides work? #26

arthurkehrwald opened this issue Feb 25, 2025 · 3 comments

Comments

@arthurkehrwald
Copy link

I'm working on the MPF integration for Visual Pinball Engine and I'm thinking about how we should handle slides. I understand that MPF controls which slides to show using the slide_player config section and that the slides are then shown by the code in this repo. But how does the information about which slide to show get into the media controller? There are no BCP commands related to slides so I'm wondering how this works.

@avanwinkle
Copy link
Contributor

Each of the media control players (slides, widgets, sounds, bus) has a corresponding player event that MPF will send to connecting BCP clients, i.e. slides_play, widgets_play, sounds_play, and bus_play.

These events aren't typically logged by MPF in its normal event log, but should be pulled in by any connected BCP client.

@arthurkehrwald
Copy link
Author

So those are undocumented BCP commands?

@avanwinkle
Copy link
Contributor

Yeah, it's kind of in a weird fuzzy spot right now. The respective PluginPlayers were previously (0.57) part of the MPF-MC codebase, using an extensible system whereby other clients could inject player configurations into MPF using the config_players: setting in their config.yaml file. Any arbitrary player "foo" could extend the PluginPlayer class and declare foo_player: path.to.python.class.FooPlayer and enable foo_player: events to be sent to the BCP client.

For MPF 0.80 I transplanted the PluginPlayer files for slides, widgets, sounds, and bus (formerly "track") to keep the codebase independent of MPF-MC. But it's not really clear whether those should be considered "core" MPF functionality or just GMC functionality that is an MPF default. I suppose since they're in the codebase, the should be part of the code.

Other BCP clients have traditionally implemented their own systems and, as needed, custom PluginPlayers, as their media implementations don't necessarily follow the slide/widget paradigm. But there's no reason not to document the included ones as potential BCP features a client could use, if they want!

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