Jump to content



Photo
- - - - -

DirectOuput Framework

DirectOutput DOF

  • Please log in to reply
13 replies to this topic

#1 Swisslizard

Swisslizard

    DOF inventor & coder

  • VIP
  • 152 posts

  • Flag: Switzerland

  • Favorite Pinball: The Machine

Posted 01 November 2013 - 03:01 PM

File Name: DirectOuput Framework

File Submitter: Swisslizard

File Submitted: 01 Nov 2013

File Category: Frontends and Addons


Posted Image


The DirectOutput framework is a library which can control the gadgets and toys installed in a virtual pinball cabinet.

For details please read the documentation over at http://directoutput....tput/index.html


Click here to download this file


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 Hyper

Hyper

    Enthusiast

  • Members
  • PipPipPip
  • 251 posts

  • Flag: Netherlands

  • Favorite Pinball: MM, Tommy & AFM

Posted 01 November 2013 - 04:52 PM

Thanks for this contribution to Virtual Pinball.

I have read the documantation pages.

Respect for so much work.  :love39:

 

THNKS!!!



#3 rockyrocket

rockyrocket

    Enthusiast

  • Silver Supporter
  • 145 posts
  • Location:Bristol,UK

  • Flag: United Kingdom

  • Favorite Pinball: xenon

Posted 01 November 2013 - 06:55 PM

Been waiting for this, thanks for all the hard work! :otvclap: .



#4 Mark4par

Mark4par

    Hobbyist

  • Members
  • PipPip
  • 46 posts

  • Flag: United States of America

  • Favorite Pinball: Star Trek NG

  • 360 Gamer Tag: markus420

Posted 01 November 2013 - 08:26 PM

Doesn't work for me. what b2s server are you using. 1.3 won't allow me to check plugin.

 

added line in xml and its working now. Thanks


Edited by Mark4par, 03 November 2013 - 04:19 AM.


#5 zeenon

zeenon

    Enthusiast

  • Platinum Supporter
  • 217 posts
  • Location:Somerville, NJ

  • Flag: United States of America

  • Favorite Pinball: Attack from Mars

Posted 01 November 2013 - 08:56 PM

Did you unblock the .DLL's?

 

I think everyone is using 1.3 server.

 

Z



#6 gStAv

gStAv

    Pinball Lover

  • Members
  • PipPipPipPip
  • 1,331 posts

  • Flag: Sweden

  • Favorite Pinball: TOM, IJ, AFM, WC94

Posted 02 November 2013 - 12:11 AM

Doesn't work for me. what b2s server are you using. 1.3 won't allow me to check plugin.

 

Hi Mark4par, I used the 2nd method mentioned below the in-game BG one.

 

"Alternative you can also edit the B2STableSettings.xml file in the table directory.

You will need to add the ArePluginsOn option to the file. The result should resemble to following example:

<B2STableSettings>
....
<ArePluginsOn>1</ArePluginsOn>
...
</B2STableSettings>

"


3rs054-6.png


#7 Herweh

Herweh

    Backglass fan

  • VIP
  • 452 posts
  • Location:Germany

  • Flag: Germany

  • Favorite Pinball: Yes

Posted 02 November 2013 - 08:00 AM

Congrats, Tom, awesome work. I simply love it.


Edited by Herweh, 02 November 2013 - 08:00 AM.

herwehb2s-avatar-jr-100.pngbreakshot-sig-small3.pngatlantis-sig-small.pngmousinaround-sig6.pngsc-badge1.pnglw-sig.pngembryon-logo0.pngladyluck.pngapollo13_badge3.pngwhirlwind_badge.png


#8 Mark4par

Mark4par

    Hobbyist

  • Members
  • PipPip
  • 46 posts

  • Flag: United States of America

  • Favorite Pinball: Star Trek NG

  • 360 Gamer Tag: markus420

Posted 03 November 2013 - 05:03 PM

What will this do to B2S tables? Circus voltaire doesn't have a db2s and my ledwiz isn't working with  it. Or any other B2s table because they dont use B2S server am I correct?



#9 arngrim

arngrim

    DJ Force Feedback

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

  • Flag: Belgium

  • Favorite Pinball: Monster bash



Posted 03 November 2013 - 05:28 PM

You can put b2s.server in cv b2s, it works

#10 Elnino

Elnino

    Hobbyist

  • Members
  • PipPip
  • 18 posts

  • Flag: Australia

  • Favorite Pinball: None

Posted 13 November 2013 - 10:42 AM

Is it just me or is the setup of this totally confusing??

 

I've managed to get my first db2s table up and running - Not *that* hard. I followed the example of how to install direct output - Easy! But from there i feel totally in the dark,

 

I have a DMX capable device so i wanted to have a play and see if i can get it to talk but I really feel there is just not enough information available to me to even attempt this.  I am a technical person - I work in I.T and i am always writing code etc, but this totally perplexes me. I would *LOVE* to have some complete examples of how to get a basic DMX setup going.

 

Do I just manually edit XML files? - No Starter/base/commented files given

Do i use the plugin Gui? If I do then I cant see how

 

I see the section in the help for using DMX but i have no idea what file those XML tags go.

 

Don't get me wrong i am 100% grateful for the efforts that have gone in to this plugin and i know it's still 'fresh' - It's great, but it feels useless to me as there is not enough documentation/examples/howtos yet to allow me to utilise it.

 

This is not to flame at all so please don't take it that way - It just feels like you have given me a Ferrari that is out of petrol but I cant find the filler cap....


Edited by Elnino, 13 November 2013 - 10:43 AM.


#11 arngrim

arngrim

    DJ Force Feedback

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

  • Flag: Belgium

  • Favorite Pinball: Monster bash



Posted 13 November 2013 - 12:07 PM

you should ask SwissLizard, I'm not sure if we can already use DMX as such, but i'm sure he can help you



#12 Swisslizard

Swisslizard

    DOF inventor & coder

  • VIP
  • 152 posts

  • Flag: Switzerland

  • Favorite Pinball: The Machine

Posted 13 November 2013 - 12:56 PM

@Elnino:

DMX resp. ArtNet should be working fine (at least it work here). However DMX support is currently limited to Artnet (DMX over Ethernet). If you want to use DMX you will need a Artnet node which converts from Exthernet to DMX.

 

Other types of DMX interfaces are not (yet) supported.

 

Since Artnet nodes cant be detected automatically, you will need a cabinet config file to make Artnet work. I'll be happy to send you a copy of my cabinet config file, so you can use it as a starting point for your config.


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.


#13 Elnino

Elnino

    Hobbyist

  • Members
  • PipPip
  • 18 posts

  • Flag: Australia

  • Favorite Pinball: None

Posted 14 November 2013 - 12:31 AM

Actually, it is Artnet so that is fine.  I spent some more time looking through the docs and I think i have worked it all out but so far i dont have it working.  I think the problem is my Cabinet.xml file:

<?xml version="1.0"?>
<Cabinet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Name>Pinny</Name>
  <OutputControllers>
    <ArtNet>
      <Name>Artnet 1</Name>
      <Universe>0</Universe>
      <BroadcastAddress>2.0.0.0/24</BroadcastAddress>
    </ArtNet>
  </OutputControllers>
  <Toys>
     <Lamp>
	<Name>Start Button</Name>
	<OutputName>Artnet 1.001</OutputName>
     </Lamp>
  </Toys>
</Cabinet>

From this I have 2 questions:

1) have I got the broadcast address string format right?  - No actual example of what the string should be so I figured this is what it should be.

2) I have 2 Network cards in my pinball, one for the main network @ home and the other is for ArtNet - Will this cause any problems?  Will windows take care of the IP routing or is this something that I need to specify in the config (presumably not implemented yet)

 

Edit: Well I set the broadcast address to the IP of the Artnet device and i can see that it sends a packet to it when i load the config tester but then toggling the Start lamp output, it does not send any data.

 

This is the snip from the table.xml i am testing:

    <TableElement>
      <TableElementType>Lamp</TableElementType>
      <Number>88</Number>
      <Name />
      <AssignedEffects>
	  <AssignedEffect>
	  <EffectName>Flash Start Button</EffectName>
	  </AssignedEffect>
	  </AssignedEffects>
    </TableElement>

Question 3...

It was not clear to me what exactly goes in the EffectName Tag - the description in the documentation seemed confusing to me but this seems that it should work? No?

 

Edit 2:

I've spent the better part of 3 hours messing with this and still can not get the testing app to send the data to get the lamp to light :( It does however send 0's for all the outputs when i load the config into the tester app so it's working sorta.

 

I now understand the system much better but I'm still confused.  Can you give me a basic example of a cab and table XML - Just a simple single digital output like a lamp would be great.


Edited by Elnino, 14 November 2013 - 12:40 PM.


#14 Swisslizard

Swisslizard

    DOF inventor & coder

  • VIP
  • 152 posts

  • Flag: Switzerland

  • Favorite Pinball: The Machine

Posted 14 November 2013 - 12:49 PM

 

1) have I got the broadcast address string format right?  - No actual example of what the string should be so I figured this is what it should be.

The brodcast adress can be any valid ip address (e.g. 192.168.1.53). Dont define a subnet, so no /24 or something.

You can also omit the broadcast address in the config or use 255.255.255.255 (same result for both), which will broadcast the message to your whole network segment.

 

 

2) I have 2 Network cards in my pinball, one for the main network @ home and the other is for ArtNet - Will this cause any problems?  Will windows take care of the IP routing or is this something that I need to specify in the config (presumably not implemented yet)

Artnet packages are sent as normal UDP broadcasts. This means that windows should take care of all necessary routing. The systems I have used to test the Artnet implementation have only one network adapter, so this is from a theoretical point.

 

Apart from the broadcast adress you cabinet config is looking good. However I would recommmand that you add one or several ledwizequivalent toys to it, so you can use ini files for the effect configs in your first experiments:

    <LedWizEquivalent>
      <LedWizNumber>100</LedWizNumber>
      <Name>LedWizEquivalent 100</Name>
      <Outputs>
        <LedWizEquivalentOutput>
          <OutputName>Artnet Node 1\Artnet Node 1.001</OutputName>
          <LedWizEquivalentOutputNumber>1</LedWizEquivalentOutputNumber>
        </LedWizEquivalentOutput>
        <LedWizEquivalentOutput>
          <OutputName>Artnet Node 1\Artnet Node 1.002</OutputName>
          <LedWizEquivalentOutputNumber>2</LedWizEquivalentOutputNumber>
        </LedWizEquivalentOutput>
        <LedWizEquivalentOutput>
          <OutputName>Artnet Node 1\Artnet Node 1.003</OutputName>
          <LedWizEquivalentOutputNumber>3</LedWizEquivalentOutputNumber>
        </LedWizEquivalentOutput>
        <LedWizEquivalentOutput>
          <OutputName>Artnet Node 1\Artnet Node 1.004</OutputName>
          <LedWizEquivalentOutputNumber>4</LedWizEquivalentOutputNumber>
        </LedWizEquivalentOutput>
        <LedWizEquivalentOutput>
          <OutputName>Artnet Node 1\Artnet Node 1.005</OutputName>
          <LedWizEquivalentOutputNumber>5</LedWizEquivalentOutputNumber>
        </LedWizEquivalentOutput>
        <LedWizEquivalentOutput>
          <OutputName>Artnet Node 1\Artnet Node 1.006</OutputName>
          <LedWizEquivalentOutputNumber>6</LedWizEquivalentOutputNumber>
        </LedWizEquivalentOutput>
        <LedWizEquivalentOutput>
          <OutputName>Artnet Node 1\Artnet Node 1.007</OutputName>
          <LedWizEquivalentOutputNumber>7</LedWizEquivalentOutputNumber>
        </LedWizEquivalentOutput>
        <LedWizEquivalentOutput>
          <OutputName>Artnet Node 1\Artnet Node 1.008</OutputName>
          <LedWizEquivalentOutputNumber>8</LedWizEquivalentOutputNumber>
        </LedWizEquivalentOutput>
        <LedWizEquivalentOutput>
          <OutputName>Artnet Node 1\Artnet Node 1.009</OutputName>
          <LedWizEquivalentOutputNumber>9</LedWizEquivalentOutputNumber>
        </LedWizEquivalentOutput>
        <LedWizEquivalentOutput>
          <OutputName>Artnet Node 1\Artnet Node 1.010</OutputName>
          <LedWizEquivalentOutputNumber>10</LedWizEquivalentOutputNumber>
        </LedWizEquivalentOutput>
        <LedWizEquivalentOutput>
          <OutputName>Artnet Node 1\Artnet Node 1.011</OutputName>
          <LedWizEquivalentOutputNumber>11</LedWizEquivalentOutputNumber>
        </LedWizEquivalentOutput>
        <LedWizEquivalentOutput>
          <OutputName>Artnet Node 1\Artnet Node 1.012</OutputName>
          <LedWizEquivalentOutputNumber>12</LedWizEquivalentOutputNumber>
        </LedWizEquivalentOutput>
        <LedWizEquivalentOutput>
          <OutputName>Artnet Node 1\Artnet Node 1.013</OutputName>
          <LedWizEquivalentOutputNumber>13</LedWizEquivalentOutputNumber>
        </LedWizEquivalentOutput>
        <LedWizEquivalentOutput>
          <OutputName>Artnet Node 1\Artnet Node 1.014</OutputName>
          <LedWizEquivalentOutputNumber>14</LedWizEquivalentOutputNumber>
        </LedWizEquivalentOutput>
        <LedWizEquivalentOutput>
          <OutputName>Artnet Node 1\Artnet Node 1.015</OutputName>
          <LedWizEquivalentOutputNumber>15</LedWizEquivalentOutputNumber>
        </LedWizEquivalentOutput>
        <LedWizEquivalentOutput>
          <OutputName>Artnet Node 1\Artnet Node 1.016</OutputName>
          <LedWizEquivalentOutputNumber>16</LedWizEquivalentOutputNumber>
        </LedWizEquivalentOutput>
        <LedWizEquivalentOutput>
          <OutputName>Artnet Node 1\Artnet Node 1.017</OutputName>
          <LedWizEquivalentOutputNumber>17</LedWizEquivalentOutputNumber>
        </LedWizEquivalentOutput>
        <LedWizEquivalentOutput>
          <OutputName>Artnet Node 1\Artnet Node 1.018</OutputName>
          <LedWizEquivalentOutputNumber>18</LedWizEquivalentOutputNumber>
        </LedWizEquivalentOutput>
        <LedWizEquivalentOutput>
          <OutputName>Artnet Node 1\Artnet Node 1.019</OutputName>
          <LedWizEquivalentOutputNumber>19</LedWizEquivalentOutputNumber>
        </LedWizEquivalentOutput>
        <LedWizEquivalentOutput>
          <OutputName>Artnet Node 1\Artnet Node 1.020</OutputName>
          <LedWizEquivalentOutputNumber>20</LedWizEquivalentOutputNumber>
        </LedWizEquivalentOutput>
        <LedWizEquivalentOutput>
          <OutputName>Artnet Node 1\Artnet Node 1.021</OutputName>
          <LedWizEquivalentOutputNumber>21</LedWizEquivalentOutputNumber>
        </LedWizEquivalentOutput>
        <LedWizEquivalentOutput>
          <OutputName>Artnet Node 1\Artnet Node 1.022</OutputName>
          <LedWizEquivalentOutputNumber>22</LedWizEquivalentOutputNumber>
        </LedWizEquivalentOutput>
        <LedWizEquivalentOutput>
          <OutputName>Artnet Node 1\Artnet Node 1.023</OutputName>
          <LedWizEquivalentOutputNumber>23</LedWizEquivalentOutputNumber>
        </LedWizEquivalentOutput>
        <LedWizEquivalentOutput>
          <OutputName>Artnet Node 1\Artnet Node 1.024</OutputName>
          <LedWizEquivalentOutputNumber>24</LedWizEquivalentOutputNumber>
        </LedWizEquivalentOutput>
        <LedWizEquivalentOutput>
          <OutputName>Artnet Node 1\Artnet Node 1.025</OutputName>
          <LedWizEquivalentOutputNumber>25</LedWizEquivalentOutputNumber>
        </LedWizEquivalentOutput>
        <LedWizEquivalentOutput>
          <OutputName>Artnet Node 1\Artnet Node 1.026</OutputName>
          <LedWizEquivalentOutputNumber>26</LedWizEquivalentOutputNumber>
        </LedWizEquivalentOutput>
        <LedWizEquivalentOutput>
          <OutputName>Artnet Node 1\Artnet Node 1.027</OutputName>
          <LedWizEquivalentOutputNumber>27</LedWizEquivalentOutputNumber>
        </LedWizEquivalentOutput>
        <LedWizEquivalentOutput>
          <OutputName>Artnet Node 1\Artnet Node 1.028</OutputName>
          <LedWizEquivalentOutputNumber>28</LedWizEquivalentOutputNumber>
        </LedWizEquivalentOutput>
        <LedWizEquivalentOutput>
          <OutputName>Artnet Node 1\Artnet Node 1.029</OutputName>
          <LedWizEquivalentOutputNumber>29</LedWizEquivalentOutputNumber>
        </LedWizEquivalentOutput>
        <LedWizEquivalentOutput>
          <OutputName>Artnet Node 1\Artnet Node 1.030</OutputName>
          <LedWizEquivalentOutputNumber>30</LedWizEquivalentOutputNumber>
        </LedWizEquivalentOutput>
        <LedWizEquivalentOutput>
          <OutputName>Artnet Node 1\Artnet Node 1.031</OutputName>
          <LedWizEquivalentOutputNumber>31</LedWizEquivalentOutputNumber>
        </LedWizEquivalentOutput>
        <LedWizEquivalentOutput>
          <OutputName>Artnet Node 1\Artnet Node 1.032</OutputName>
          <LedWizEquivalentOutputNumber>32</LedWizEquivalentOutputNumber>
        </LedWizEquivalentOutput>
      </Outputs>
    </LedWizEquivalent>

You can define any number of ledwizequivalent toys, to match the channels of your Artnet node. You are completely free to map any output/channel between 1-512 of your ArtNode to any LedWizEquivalentOutputNumber between 1-32.

 

One important thing in the LedWizeqivalent toy is the LedWizNumber. This number is used to match the configs from ini files to the ledwizequivalent toy. So if LedWizNumber is 100 like aboce, the infi file name has to end with 100 (e.g. directoutputconfig100.ini). Alternatively it would also be possible to define the mapping between ini filename and the LedWizNumber in the gloabl config file.

 

I guess you know where to get the infi files (Sorry, but this forums policies dont allow to post the link to the config tool website). Using the config tool you can easily map the Start Button or any other option to the outputs defined in the ledwizequivalent toy. So for your start button, would would proably map dmx channel 1 (Artnet Node 1\Artnet Node 1.001) to output 1 of the ledwizequivalent toy. In the config tool it would then be necessary to map the Start button to the first output.

 

I know this sounds rather complicated at first sight, but it is a very flexible solution and once you're done with the cabinet config also a easy way to use the predefined configs/effects from the config tool.

 

Try to get this running as a first step. Once it does, I'll be happy to go into more details about the tableelement and effect configs.


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.






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