Jump to content



Photo
- - - - -

Directoutput Framework Announcement

DirectOutput DOF

  • Please log in to reply
41 replies to this topic

#1 Swisslizard

Swisslizard

    DOF inventor & coder

  • VIP
  • 152 posts

  • Flag: Switzerland

  • Favorite Pinball: The Machine

Posted 30 August 2013 - 01:43 PM

DirectOutput_Small.png

After months of development, I more than happy to announce the DirectOutput framework for virtual pinball cabinets.

Since I did not like the limitations (not enough outputs) and problems (stuttering) with the current ledontrol.vbs solution to control the outputs of my cabinet, I have started to implement a 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. A lot of testing has been done by a group of alpha testers and myself as well.

The result is what I call the DirectOutput framework (DOF).

Since DOF has proved to be pretty stable during the alpha testing period, beta testing starts today. For this phase of the project, it would be great to have a few more people joining for beta testing.

Please read the paragraphs below for more information.

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.


More new developements:
 

  •     Since DOF can support more than one output controller, Degoor has extended his great LedWiz config tool with new functionality to allow the configuration of more than one output controller.
  •     Arngrim has reviewed most of the configs in the config tool.
  •     The config tool will also support a 10 contactor setup in addition already existing 8 contactor setup.

Configuration

DOF supports two different configuration schemes:



  •     Natively the framework uses XML files to store its configurations. The XML based configs allow you to configure every aspect and option of the framework.
    The config files allow for all config option, maximum flexibility, but they do also add some addition complexity.
  •     Ledcontrol.ini files like the ones used for the legacy ledcontrol.vbs solution can be used for the configuration as well. Together with the auto config features for some of the supported hardware, they will allow for a configuration with very little effort.
        If more than one LedWiz and/or PacLed64 is in use, several Ledcontrol.ini files can be used for the configuration.
      Due to the limitations of ledcontrol files, not all options and aspects of the framework can be configured.


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 and expensive.

Planed hardware support:
 

  •     PacDrive from Ultimarc
  •     Driver for addressable RGB led stripes (WS2811/WS2812 based stripes).

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.

Documentation

The preliminary documentation of the framework is already 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....tput/index.html

cheerlie-RTFM.gif

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....luginInterface/

and for some sample plugin code you can go to http://directoutput....erSamplePlugin/

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.

Downloads

Sorry, public downloads are not yet available. At this time the software is only accessible for the testers, but it will become available for everyone once beta testing has been completed.

Support & Forum

If you have questions about the framework (please read the docu first) or want to discuss something, please visit the support forum (Sorry, I'm not allowed to publish the link in this forum).


Source Code

As soon as the project is released for everyone, the source code for the framework will be published on GitHub and everybody is invited to download, change and extend the code.

Testers wanted

A good amount of testing has already been done by a group of very helpful enthusiasts and myself. Now, we would like to invite a few more people for the beta testing phase.

If you want to participate in the testing you should at least have some basic idea how VP, Pinmame and B2S.Server interact, know a little bit about table scripting and you should be willing to read some documentation and follow the relevant discussions.

If you are interested to help testing, please send my a PM. Please include your email address in the PM, so I can enable access to the Google drive containing the files for the testers.

Since I can only work with a limited number of people at the same time (still need to manage the whole thing somehow), only a limited number of testers will be able to join initially.

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.
  •     Bill55, SirCheddar and Slydog for testing.
  •     Everyone else who was at some stage involved in the project for their support and interest in my work.

 

 


Programming is a race between software engineers striving to build  idiot-proof programs, and the universe trying to produce bigger idiots. So far, the universe is winning.


#2 AaronShupp

AaronShupp

    Human Paraquat

  • Members
  • PipPipPip
  • 178 posts
  • Location:Philadelphia, PA

  • Flag: United States of America

  • Favorite Pinball: Bride of PinBot

Posted 30 August 2013 - 04:17 PM

Very interesting!



#3 ringorian

ringorian

    Enthusiast

  • Members
  • PipPipPip
  • 199 posts

  • Flag: Germany

  • Favorite Pinball: road show

Posted 30 August 2013 - 04:28 PM

Interested but have no backround in scripting ..
Know how to config my ledwiz . Thats all.


#4 Darkmeteor

Darkmeteor

    Hobbyist

  • Members
  • PipPip
  • 41 posts
  • Location:France

  • Flag: France

  • Favorite Pinball: Pinball Dreams

Posted 30 August 2013 - 05:46 PM

That's cool, my current cab is affected by these stuttering.

 

The future cab I want to build will have full force feedback (with the other kicker solenoids on the tables, auto-plunger, VUK, etc...)



#5 bent98

bent98

    Pinball Fan

  • Members
  • PipPipPipPip
  • 1,077 posts
  • Location:NY

  • Flag: United States of America

  • Favorite Pinball: Roadshow, Haunted House, Safe Cracker

Posted 30 August 2013 - 06:28 PM

Thanks Swisslizard for your amazing plugin and thank you Stephan for your help updating B2S every time we found a bug!

 

I love playing my tables with all the toys, 10 contactors, beacons etc..., with no stutter.

 

Look for some other cool things in the near future!!! ;)



#6 Carny_Priest

Carny_Priest

    Pinball Fan

  • Members
  • PipPipPipPip
  • 1,257 posts
  • Location:Austin, TX

  • Flag: United States of America

  • Favorite Pinball: EATPM

Posted 30 August 2013 - 08:56 PM

Best of luck with beta testing. I'd love to volunteer as I sourced a second LED-Wiz, extra Crees, a pile of cheap Chinese RGBs, and 10 contactors in anticipation of the new framework. I'm still waiting on parts and I still have to install it all. I figure it will take a while before I'd be ready to step up.

Very interesting about DMX. I was considering some light fixtures and wondering how I would interface with VP. This is going to be slick!


Sent from my iPad using Tapatalk - now Free

#7 bent98

bent98

    Pinball Fan

  • Members
  • PipPipPipPip
  • 1,077 posts
  • Location:NY

  • Flag: United States of America

  • Favorite Pinball: Roadshow, Haunted House, Safe Cracker

Posted 30 August 2013 - 09:39 PM

Its already working very well.



#8 arngrim

arngrim

    DJ Force Feedback

  • VIP
  • 2,188 posts
  • Location:Charleroi, Belgium

  • Flag: Belgium

  • Favorite Pinball: Monster bash



Posted 30 August 2013 - 09:53 PM

There are so many advantages to use this framework, it will be easily considered as the replacement of ledcontrol.vbs, just like DB2S replaced UVP :)

 

Here is one small video of my mod of Scarface, with DOF integration, with 10 contactors setup, to control the Ledwiz

 

http://www.youtube.c...eature=youtu.be



#9 Swisslizard

Swisslizard

    DOF inventor & coder

  • VIP
  • 152 posts

  • Flag: Switzerland

  • Favorite Pinball: The Machine

Posted 01 September 2013 - 04:08 PM

@Carny Priest:

Here is a small demo video of my cab with dmx support (current only a 3 channel dimmer pack):

 


Programming is a race between software engineers striving to build  idiot-proof programs, and the universe trying to produce bigger idiots. So far, the universe is winning.


#10 Carny_Priest

Carny_Priest

    Pinball Fan

  • Members
  • PipPipPipPip
  • 1,257 posts
  • Location:Austin, TX

  • Flag: United States of America

  • Favorite Pinball: EATPM

Posted 02 September 2013 - 02:48 PM

Ha! Like the bumper caps.

The framework currently supports DMX only through Art-Net?

I was looking at one of these as a cheap usb to dmx interface.

http://www.aliexpres.../583268610.html

And operate through Freestyler software. I'm still sourcing my light effects and toys though. I'm new to DMX and new to any of these pinball output controllers. Is there a software user interface already part of DOF for programming effects for DMX fixtures or is this something that must be scripted by users?


Sent from my iPad using Tapatalk - now Free

#11 Swisslizard

Swisslizard

    DOF inventor & coder

  • VIP
  • 152 posts

  • Flag: Switzerland

  • Favorite Pinball: The Machine

Posted 02 September 2013 - 07:05 PM

Correct, DMX support is currently only implemented through Artnet. The reason why is used artnet, is that this is a well documented stadard and that there is no such standard for DMX interface which are connected to a pc. Every interface would likely need its own dirver. With Artnet, at least in theory, every artnet node should understand the data which is sent by DOF.

 

For my development and tests, I have use this DIY artnet node: http://www.ulrichrad...-avr-artnetnode

A kit can be ordered from the website. The soldering was done quickly and it worked right from the start.

 

I wouldn't recommand a DMX interface from Aliexpress. I have made very mixed expriences with the cheap china products which are sold there. FOr me is seems to pay back investing a few bucks extra and getting better quality.


Programming is a race between software engineers striving to build  idiot-proof programs, and the universe trying to produce bigger idiots. So far, the universe is winning.


#12 Carny_Priest

Carny_Priest

    Pinball Fan

  • Members
  • PipPipPipPip
  • 1,257 posts
  • Location:Austin, TX

  • Flag: United States of America

  • Favorite Pinball: EATPM

Posted 02 September 2013 - 08:39 PM

Gotcha, it's a bit more of an investment in hardware. Plus a big hurdle in that I don't know German. There are also some Arduino based DIY interfaces that may be good alternatives. Cheapest commercial choices seem to start at $200US. More than my effects combined. They are built to control entire stage shows. A bit of overkill for lighting up a pinball. I'll be interested in how this gets implemented by the community once the framework is publicly released. It's really great that the option to use DMX fixtures was considered and included.


Sent from my iPad using Tapatalk - now Free

#13 Swisslizard

Swisslizard

    DOF inventor & coder

  • VIP
  • 152 posts

  • Flag: Switzerland

  • Favorite Pinball: The Machine

Posted 03 September 2013 - 07:25 AM

OK, german might be somewhat of a problem (You could always try goole translate).

Other diy projects for artnet should work as well.

 

I have already been thinking about supporting some other dmx interface, but I dont have any interface hardware and without hardware I cant test what I have developed.


Edited by Swisslizard, 03 September 2013 - 07:27 AM.

Programming is a race between software engineers striving to build  idiot-proof programs, and the universe trying to produce bigger idiots. So far, the universe is winning.


#14 Swisslizard

Swisslizard

    DOF inventor & coder

  • VIP
  • 152 posts

  • Flag: Switzerland

  • Favorite Pinball: The Machine

Posted 15 September 2013 - 04:43 PM

Hi

 

The beta testing for DOF is going very well so far. Therefore I thought, that it would be a good idea to add a little more functionality. The update is now available for the beta testers.

 

 Here is a list of important changes:

 

 Layer support

Effects and toys for RGBLeds and analog ouputs are now using layers to allow for more control of the resulting output. olors resp. Values in a layer do also have a alpha/transparency channel which will allow us to blend the colors/values in the layers. If  a bottom layer is blue and top is a semi transparent red, you will get some mix of both. If one of the two blinks you get changing colors.

 

The following picture might give you a clearer idea how the layer with their alpha channels work:

 

Attached File  Layers_Small.png   30.04KB   22 downloads

 

This will work with any number of layers. Layers are also supported in LedControl files.

 

For analog outputs (e.g. lamps or gear motors) the behaviour is the same as explained above. Whats different is that analog output do only have one value and a alpha channel, compared to RGBLeds which have 3 values and a alpha channel. 

 

New LedControl Config options

The way how the ledcontrol file loader configures DOF has been changed completely (thats the biggest change apart from the layers). Instead of using special code to execute the effects defined in the ledcontrol file, DOF is now using native DOF effect classes.  This does also allow for easy conversion of ledcontrol config to xml configs (A converter is in the works).

 

New config options:

  • M{Duration} specifies a minimum duration for the effect (e.g. S48 M5000).
  • W{Duration} specifies a delay before the effect is triggered (e.g. S48 Red W250).
  • Color settings in ledcontrol files can now have four parts. In addition to red, green and blue, you can also specify a optional alpha value (e.g. RedTransparent=48,0,0,24). If the alpha part is missing, DOF assumes that colors ,where at least one component is not 0, have a alpha value of 255, color 0,0,0 (black) will have a alpha value of 0.
  • Instead of using named colors, the colors can now also be specified directly in the ledcontrol setting (e.g. S48 #ff0000 for fully opaque red or S38 #00ff0080 for transparent green). Note: These direct color definitions have a range of 0-255, not 0-48 like other ledcontrol settings).
  • F{Duration} is used to define fading for the values/colors of a effect (e.g. S48 Red F500). In addition it is possible to use FUDuration} and FD{Duration} to specify separate durations for fading up and down. Try things like S48 Red/S48 Blue Blink F250 for some nice changing color effect.
  • Ledcontrol settings do use layer. The first setting in a column goes into layer 1, second setting in layer 2 and so on. The default layer number can be overriden by specifying L{LayerNr} (e.g. S38 Red L3).
  • Apart from these new settings all other settings should work as they always did.

These new settings allow for many new, cool effects. Try things like S48 Red/S48 Blue Blink F250.

 

LedControl file names

To avoid confusion with the legacy ledcontrol.ini files, DOF does now support directoutputconfig.ini as the file name as well. In addition it does also support new names for the section in the files:

  • [Colors DOF] works instead of [Colors LedWiz]
  • [Config DOF] works instead of [Config outs]

These changes will allow to use config files for DOF, which cant be read by the legacy ledcontrol.vbs which makes sure that ledcontrol.vbs wont use wrong files by mistake.

 

Deegor will update the config tool soon to use the new names.

 

The old filenames (ledcontrol.ini) and section names do still work as well.

 

Cabinet config file

The serialization process for output controllers has changed. It is not necessary anymore the specify the outputs in the cabinet.xml. If DOF exports a cabinet files it will also ommit the outputs.

I hope this makes creating cabinet config files a bit easier.

 

As before, if you only use ledwiz units you dont need a cabinet config file. Autodetection will detect and configure the ledwiz units automatically.

 

Documentation 

Do to the new effects, toys, layer support and changes in the cabinet config file save process the docu is now really outdated for these areas. I working on the update, but that is will take a little while (Will not be able to do a lot of DOF work for the next 2.5 weeks).

 

Com object

You will probably not need this now, but the com object allows to embed DOF into almost any scripting language you can imagine. This means that there is now a easy interface to integrate DOF into almost any application.

There is also a small exe to register the com object.

 

 More

There are also loads of changes behind the scenes. More error handling, extended timer functionality and much more.

 

All the best

 

Swisslizard / Tom


Programming is a race between software engineers striving to build  idiot-proof programs, and the universe trying to produce bigger idiots. So far, the universe is winning.


#15 Dozer316

Dozer316

    Dozer

  • VIP
  • 669 posts

  • Flag: Australia

  • Favorite Pinball: Cirqus Voltaire

Posted 16 September 2013 - 07:09 AM

Here's a quick demo of MM with fading flashers S2X Red FU200 FD200

 

Great effect I think.  Sorry about the crap playing, was trying to hold a camera and play pinball :)

 

Toward the end I shoot the castle lock and you'll get a bit of a light show with the fading flashers happening.

 


Edited by Dozer316, 16 September 2013 - 07:24 AM.


#16 connorsdad

connorsdad

    Enthusiast

  • Members
  • PipPipPip
  • 266 posts

  • Flag: ---------

  • Favorite Pinball: Adams Family

Posted 22 December 2013 - 08:32 PM

Hi guys

Any chance of helping a noob to get this working with a pacled64?

 

I have it installed and plugins box checked but thats as far as I got, the rest went over my head.


sig.jpg sig2.png


#17 BilboX

BilboX

    Enthusiast

  • Unit3D Pinball Team
  • 433 posts
  • Location:French Polynesia

  • Flag: France

  • Favorite Pinball: Metallica, Addams Familly, Scared Stiff, White Water

Posted 24 February 2014 - 07:49 PM

Hi there! i am trying to integrate it in UP but first, I need o make it work with Vp, and before taht, in standalone.

And I can't make it: is there a way to load both cabinet.xml + directoutput.ini?

 

It seems that when the cabinet is loaded correctly, the automatic table config from ini files is not working :S. Is there some repository with xml table config files?

 

Thanks! And keep working onthat, it seems nice...


UP2


#18 marco helmink

marco helmink

    Enthusiast

  • Members
  • PipPipPip
  • 182 posts

  • Flag: Netherlands

  • Favorite Pinball: Attack from mars , Apollo 13

Posted 05 July 2014 - 09:40 AM

hello,

Problem with pacdrive!!

 

I have setup the dof.

In tables folder made the plugins map with direct output.

I have the ledcotrol.ini in the tables folder.

I started al table with b2s backglass, and in the b2s menu i check the plugin.

 

But nothing works on my pacdrive  :bye2:



#19 arngrim

arngrim

    DJ Force Feedback

  • VIP
  • 2,188 posts
  • Location:Charleroi, Belgium

  • Flag: Belgium

  • Favorite Pinball: Monster bash



Posted 05 July 2014 - 10:14 AM

i think it is only available in upcoming dof 2?

#20 marco helmink

marco helmink

    Enthusiast

  • Members
  • PipPipPip
  • 182 posts

  • Flag: Netherlands

  • Favorite Pinball: Attack from mars , Apollo 13

Posted 05 July 2014 - 11:55 AM

the pacdrive do tou mean?

 

I have also a pacdrive dll in the folder.







Also tagged with one or more of these keywords: DirectOutput, DOF