Finally, here is the first release of the DirectOutput framework. Far to much time has been put into coding and testing of this library, but now I believe it will work well for everyone.
Since I did not like the limitations (not enough outputs) and problems (stuttering) with the legacy solution to control the outputs of my cabinet, I have created completely new system to control output hardware connected to virtual pinball cabinets. During the past months the project has grown quite a bit larger than expected and more and more options have been added.
The result is what I call the DirectOutput framework (DOF).
If you own a pinball cabinet and want to use the DirectOutput framework, please read the paragraphs below for details.
Keep (virtual) pinball alive and all the best!
Swisslizard / Tom
What you get
Key features of the DirectOutput framework:
Support of up to 16 LedWiz and 4 Pacled64 units (including a mix of them).
Support of Art-net/DMX.
Multithreaded to ensure optimal performance and avoid stuttering issues.
Integration with B2S.Server.
Support for EM tables.
Loads of new config options.
Extendable through scripting.
Extendable object oriented architecture.
Coded in C#.
Fully documented code.
Documentation
The documentation of the framework is available on GitHub. It contains a lot of information on the installation, architecture and the configuration of the framework, as well as the fully documented object model. The pages about the installation and supported hardware might be a interesting starting point.
http://directoutput.github.io/DirectOutput/index.html
Downloads
The DirectOutput framework can be downloaded from http://vpuniverse.com/forums/files/category/61-direct-output-framework/
Support & Forum
If you have questions about the framework (please read the docu first) or want to discuss something, please visit the support forum.
http://vpuniverse.com/forums/forum/118-direct-output-framework/
Supported hardware
Currently DOF is supporting the following hardware:
LEDWiz from GroovyGameGear The use of up to 16 LedWiz units is supported by the framework. DOF can even detect and configure LedWiz units automatically.
PacLed64 from Ultimarc Up to 4 PacLed64 units can be used. PacLed64 units can be detected and configured automatically.
Art-Net / DMX Art-Net and DMX are standards used to control light effects. On the market you can find tons of DMX controlled light effects ranging from small and cheap to very big
Support for other hardware (e.g. some home grown Arduino or Raspberry Pi based controller) is easy to implement. Therefore the number of supported controllers will likely grow over time.
How it is working
The DirectOutput framework is working as a plugin for Herwehs great B2S.Server. This means that every table using the B2S.Server can use the DirectOutput framework as well, usually without any changes to the table script.
For more information on the B2S.Server plugin interface have a look at http://directoutput.github.io/B2SServerPluginInterface/
and for some sample plugin code you can go to http://directoutput.github.io/B2SServerSamplePlugin/
Since the outside interface of DOF is quite simple (currently only 3 methods), the implementation of interfaces to other pinball simulations should be easy. Sample code for a plugin host supporting DOF has already been developed and can be provided on request.
Source Code
The source code of the DirectOutput framework is available on Github: https://github.com/DirectOutput/DirectOutput
Thanks
When developing software, coding is only a part of the work. Testing, doing configurations and encouraging the coder take a lot of time as well. Therefore I want to thank the following enthusiasts:
Herweh for adding a plugin interface to his B2S.Server and enduringing my everlasting requests for changes and features.
Arngrim for being the first to board the train and start testing, constantly finding bugs and most of all redoing and enhancing the configs in the LedControl config tool.
Bent98 for testing and tryinging to help to mange the project somehow.
Degoor for extending his Ledwiz config tool.
Everyone who has been active during the beta testing.
Everyone else who was at some stage involved in the project for their support and interest in my work.
This post has been promoted to an article