Bonjour à tous,
Après beaucoup d'expérimentations, et pas mal de galère pour intégrer le tout, voici donc un tutoriel pour pouvoir installer SSF Impactor.
SSF Impactor est une évolution de SSF, développé par MisterKai, et dont le post avec la documentation d'installation (en anglais) se trouve ici:
[Vous devez être inscrit et connecté pour voir ce lien]SSF Impactor permet l'utilisation d'une installation SSF comme si celle ci était constitué de toys DOF traditionnels (contacteurs, gear, shaker). Il crée donc un périphérique virtuel, qui est utilisé ensuite dans le configurateur DirectOutput.
Son intérêt principal est donc:
- Ajouter le support SSF à des tables qui n'en bénéficient pas (par l'intermédiaire du DOF justement)
- Ajouter un shaker virtuel et un gear virtuel par rapport à une implémentation SSF classique
Inconvénient:
- Necessite une DLL spéciale, qu'il faut donc modifier pour avoir le support de la Wemos (deja fait par mes soins)
- Il n'y a pas à priori de localisation des bumpers (en tout cas cela n'apparait pas dans le code source), donc en ce sens l'implémentation est un poil inférieure à une table qui supporte le SSF
Beaucoup utilisent donc SSFImpactor principalement pour les toys basse fréquence, en particulier le "Shaker", lequel apporte à mon sens un grand plus, très visible dans la table "Attack from Mars"
Le gear est moins utile, car le son ne rend pas terrible franchement... De surcroit on verra plus loin qu'une divergence de code fait que je n'arrive pas à recompiler une version de DirectOutput.dll avec le support de la Wemos et du gear.
On commence donc par l'installation (je reprends les éléments disponibles sur le guide en anglais de MisterKai):
Partie 1: Installation de SSF Impactor natif- On fait un backup du répertoire DirectOutput !!!!
- Installer le DOF R3++ depuis le site : http://vpuniverse.com/forums/files/file/5547-direct-output-framework-dof-r3-mjr/
- Télécharger la version modifiée par MisterKai, dispo donc ici: https://vpinball.com/forums/topic/ssfimpactor-user-guide/
Remplacer les deux DLL incluses dans le fichier ZIP
Attention à ne remplacer que ces deux fichiers, les autres sont des "cabinet.xml" et Directoutputconfig2.ini pré-remplis, qui peuvent poser problème à ceux qui ont deja une installation DOF fonctionnelle.
Pensez à les débloquer
- Sur le site de configuration DirectOutput: http://configtool.vpuniverse.com/login.php
- Ajoutez une Ledwiz (probablement la deuxième si vous avez deja une KL25Z)
- Configurez cette deuxième LedWiz comme ci dessous
[Vous devez être inscrit et connecté pour voir cette image]- Générez les fichiers configurations, vous obtenez normalement un directoutputconfig2.ini si il s'agit de votre deuxième Ledwiz
Comme d'habitude, placez ces fichiers dans le répertoire config de "DirectOutput"
- Ajoutez les sections suivantes à votre cabinet.xml (recommendation : je vous suggère de commencer par sauvegarder votre cabinet.xml existant, et d'en créer un nouveau vide en ajoutant ces sections, juste pour tester l'implémentation SSF Impactor. Le parser de config est très très susceptible et la moindre erreur peut tout faire planter)
- Code:
-
<?xml version="1.0"?>
<Cabinet
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<OutputControllers>
<SSFImpactController>
<Name>SSFImpactor</Name>
<FrontExciters>Rear</FrontExciters>
<RearExciters>RearCenter</RearExciters>
<Shaker1>RearCenter</Shaker1>
<Shaker2>Rear</Shaker2>
<LowImpactMode>false</LowImpactMode>
<ImpactFactor>100</ImpactFactor>
<ShakerImpactFactor>100</ShakerImpactFactor>
<FlipperLevel>25</FlipperLevel>
<BumperLevel>75</BumperLevel>
<SlingsLevel>100</SlingsLevel>
<GearLevel>65</GearLevel>
</SSFImpactController>
</OutputControllers>
<Toys>
<LedWizEquivalent>
<Name>SSFImpactor</Name>
<LedWizNumber>1</LedWizNumber>
<Outputs>
<Contactor>
<Name>Contactor Slingshot Left</Name>
<OutputName>SlingshotLeft.02</OutputName>
</Contactor>
<Contactor>
<Name>Contactor Coin Button</Name>
<OutputName>FlipperRight.01</OutputName>
</Contactor>
<Contactor>
<Name>Contactor Slingshot Right</Name>
<OutputName>SlingshotRight.03</OutputName>
</Contactor>
<Contactor>
<Name>Contactor Flipper Left</Name>
<OutputName>FlipperLeft.00</OutputName>
</Contactor>
<Contactor>
<Name>Contactor Flipper Right</Name>
<OutputName>FlipperRight.01</OutputName>
</Contactor>
<Contactor>
<Name>Contactor Top Left</Name>
<OutputName>10-BumperBackLeft.04</OutputName>
</Contactor>
<Contactor>
<Name>Contactor Top Center</Name>
<OutputName>10-BumperBackCenter.05</OutputName>
</Contactor>
<Contactor>
<Name>Contactor Top Right</Name>
<OutputName>10-BumperBackRight.06</OutputName>
</Contactor>
<Contactor>
<Name>Contactor Back Left</Name>
<OutputName>10-BumperBackLeft.04</OutputName>
</Contactor>
<Contactor>
<Name>Contactor Back Center</Name>
<OutputName>10-BumperBackCenter.05</OutputName>
</Contactor>
<Contactor>
<Name>Contactor Back Right</Name>
<OutputName>10-BumperBackRight.06</OutputName>
</Contactor>
<Contactor>
<Name>Contactor Middle Left</Name>
<OutputName>10-BumperMiddleLeft.07</OutputName>
</Contactor>
<Contactor>
<Name>Contactor Middle Center</Name>
<OutputName>10-BumperMiddleCenter.08</OutputName>
</Contactor>
<Contactor>
<Name>Contactor Middle Right</Name>
<OutputName>10-BumperMiddleRight.09</OutputName>
</Contactor>
<Contactor>
<Name>Contactor Shaker</Name>
<OutputName>Shaker.11</OutputName>
</Contactor>
<Contactor>
<Name>Contactor Gear</Name>
<OutputName>Gear.12</OutputName>
</Contactor>
<Contactor>
<Name>Contactor Motor</Name>
<OutputName>HellballMotor.13</OutputName>
</Contactor>
<Contactor>
<Name>Contactor Bell</Name>
<OutputName>Bell.14</OutputName>
</Contactor>
<ReplayKnocker>
<Name>ReplayKnocker</Name>
<OutputName>Knocker.10</OutputName>
</ReplayKnocker>
<LedWizEquivalentOutput>
<OutputName>FlipperLeft.00</OutputName>
<LedWizEquivalentOutputNumber>1</LedWizEquivalentOutputNumber>
</LedWizEquivalentOutput>
<LedWizEquivalentOutput>
<OutputName>FlipperRight.01</OutputName>
<LedWizEquivalentOutputNumber>2</LedWizEquivalentOutputNumber>
</LedWizEquivalentOutput>
<LedWizEquivalentOutput>
<OutputName>SlingshotLeft.02</OutputName>
<LedWizEquivalentOutputNumber>3</LedWizEquivalentOutputNumber>
</LedWizEquivalentOutput>
<LedWizEquivalentOutput>
<OutputName>SlingshotRight.03</OutputName>
<LedWizEquivalentOutputNumber>4</LedWizEquivalentOutputNumber>
</LedWizEquivalentOutput>
<LedWizEquivalentOutput>
<OutputName>10-BumperBackLeft.04</OutputName>
<LedWizEquivalentOutputNumber>5</LedWizEquivalentOutputNumber>
</LedWizEquivalentOutput>
<LedWizEquivalentOutput>
<OutputName>10-BumperBackCenter.05</OutputName>
<LedWizEquivalentOutputNumber>6</LedWizEquivalentOutputNumber>
</LedWizEquivalentOutput>
<LedWizEquivalentOutput>
<OutputName>10-BumperBackRight.06</OutputName>
<LedWizEquivalentOutputNumber>7</LedWizEquivalentOutputNumber>
</LedWizEquivalentOutput>
<LedWizEquivalentOutput>
<OutputName>10-BumperMiddleLeft.07</OutputName>
<LedWizEquivalentOutputNumber>8</LedWizEquivalentOutputNumber>
</LedWizEquivalentOutput>
<LedWizEquivalentOutput>
<OutputName>10-BumperMiddleCenter.08</OutputName>
<LedWizEquivalentOutputNumber>9</LedWizEquivalentOutputNumber>
</LedWizEquivalentOutput>
<LedWizEquivalentOutput>
<OutputName>10-BumperMiddleRight.09</OutputName>
<LedWizEquivalentOutputNumber>10</LedWizEquivalentOutputNumber>
</LedWizEquivalentOutput>
<LedWizEquivalentOutput>
<OutputName>Knocker.10</OutputName>
<LedWizEquivalentOutputNumber>11</LedWizEquivalentOutputNumber>
</LedWizEquivalentOutput>
<LedWizEquivalentOutput>
<OutputName>Shaker.11</OutputName>
<LedWizEquivalentOutputNumber>12</LedWizEquivalentOutputNumber>
</LedWizEquivalentOutput>
<LedWizEquivalentOutput>
<OutputName>Gear.12</OutputName>
<LedWizEquivalentOutputNumber>13</LedWizEquivalentOutputNumber>
</LedWizEquivalentOutput>
<LedWizEquivalentOutput>
<OutputName>HellBallMotor.13</OutputName>
<LedWizEquivalentOutputNumber>14</LedWizEquivalentOutputNumber>
</LedWizEquivalentOutput>
<LedWizEquivalentOutput>
<OutputName>Bell.14</OutputName>
<LedWizEquivalentOutputNumber>15</LedWizEquivalentOutputNumber>
</LedWizEquivalentOutput>
</Outputs>
</LedWizEquivalent>
</Toys>
<Colors />
<AutoConfigEnabled>true</AutoConfigEnabled>
</Cabinet>
- Copiez la DLL bass.dll depuis le répertoire Visual Pinball vers le répertoire DirectOutput : cette DLL est utilisée par SSFImpactor, et le test DirectOutputTestConfig.exe ne s'éxécutera pas si cette DLL n'est pas présente
- Ajustez les niveaux dans le fichier Cabinet.xml, dans la section SSFImpactController:
Théoriquement la valeur va de 0 à 100, mais j'ai constaté que l'on pouvait sans problème mettre plus, et pour ma part c'est même recommandé du fait du niveau de mes amplis. J'ai donc mis le ShakerImpactorFactor à 200.
- Code:
-
<SSFImpactController>
<Name>SSFImpactor</Name>
<FrontExciters>Rear</FrontExciters>
<RearExciters>RearCenter</RearExciters>
<Shaker1>RearCenter</Shaker1>
<Shaker2>Rear</Shaker2>
<LowImpactMode>false</LowImpactMode>
<ImpactFactor>100</ImpactFactor>
<ShakerImpactFactor>100</ShakerImpactFactor>
<FlipperLevel>25</FlipperLevel>
<BumperLevel>75</BumperLevel>
<SlingsLevel>100</SlingsLevel>
<GearLevel>65</GearLevel>
</SSFImpactController>
- Lancez DirectOutputConfigTest.exe, sélectionnez la table AFM (que vous avez je pense :-)), le fichier GlobalConfig qui pointe normalement sur le fichier cabinet.xml
Si tout marche, vous devriez avoir l'interface du testeur qui apparait, et un "Activate All" devrait activer tous les toys virtuels, et donc déclencher les bumpers/flippers/slingers/shaker/gear virtuels
Ouf, on respire un grand coup, première étape de réalisée.
- On va dans VPX, et on configure VPX pour utiliser le DOF ET le son pour les toys
Vous pouvez à ce moment tester une table avec un Shaker et voir ce que cela donne. Ne pas hésitez à monter les niveaux des amplis des exciters, pour ma part c'était un peu faiblard au début.
La table "Attack From Mars", en particulier l'explosion de la soucoupe, est un bon exemple.
A noter que l'ajout d'un sub SSF ajoute beaucoup de profondeur aux basses et donc au Shaker "virtuel"
Partie II - Ajout du support de la WemosMaintenant, on va ajouter le support de la Wemos
Pour cela, allez récuperer la DLL modifiée par mes soins sur ce Google Drive:
[Vous devez être inscrit et connecté pour voir ce lien]Pensez à la débloquer
- Il faut donc combiner le cabinet.xml pour la Wemos avec celui nécessaire pour SSFImpactor. Après beaucoup de prises de tête, j'ai réussi à le faire, mais c'est franchement très pénible, donc pour vous simplifier la vie voici mon fichier cabinet.xml. A MODIFIER EVIDEMMENT pour ajuster en particulier le nombre de leds, l'orientation de la backboard, et les ports de sortie de la Wemos.
Je suppose aussi que vous avez déja votre fichier DirectOutputConfig30.ini , qui correspond à la configuration DOF de la Wemos
- Code:
-
<?xml version="1.0"?>
-<Cabinet xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-<OutputControllers>
-<SSFImpactController>
<Name>SSFImpactor</Name>
<FrontExciters>Rear</FrontExciters>
<RearExciters>RearCenter</RearExciters>
<Shaker1>Rear</Shaker1>
<Shaker2>Rear</Shaker2>
<LowImpactMode>false</LowImpactMode>
<ImpactFactor>100</ImpactFactor>
<ShakerImpactFactor>200</ShakerImpactFactor>
<FlipperLevel>25</FlipperLevel>
<BumperLevel>75</BumperLevel>
<SlingsLevel>100</SlingsLevel>
<GearLevel>100</GearLevel>
</SSFImpactController>
-<TeensyStripController>
<Name>TeensyStripController</Name>
<NumberOfLedsStrip1>276</NumberOfLedsStrip1>
<NumberOfLedsStrip2>37</NumberOfLedsStrip2>
<NumberOfLedsStrip3>37</NumberOfLedsStrip3>
<ComPortName>COM4</ComPortName>
<ComPortTimeOutMs>300</ComPortTimeOutMs>
</TeensyStripController>
</OutputControllers>
-<Toys>
-<LedWizEquivalent>
<Name>SSFImpactor</Name>
<LedWizNumber>2</LedWizNumber>
-<Outputs>
-<Contactor>
<Name>Contactor Slingshot Left</Name>
<OutputName>SlingshotLeft.02</OutputName>
</Contactor>
-<Contactor>
<Name>Contactor Coin Button</Name>
<OutputName>FlipperRight.01</OutputName>
</Contactor>
-<Contactor>
<Name>Contactor Slingshot Right</Name>
<OutputName>SlingshotRight.03</OutputName>
</Contactor>
-<Contactor>
<Name>Contactor Flipper Left</Name>
<OutputName>FlipperLeft.00</OutputName>
</Contactor>
-<Contactor>
<Name>Contactor Flipper Right</Name>
<OutputName>FlipperRight.01</OutputName>
</Contactor>
-<Contactor>
<Name>Contactor Top Left</Name>
<OutputName>10-BumperBackLeft.04</OutputName>
</Contactor>
-<Contactor>
<Name>Contactor Top Center</Name>
<OutputName>10-BumperBackCenter.05</OutputName>
</Contactor>
-<Contactor>
<Name>Contactor Top Right</Name>
<OutputName>10-BumperBackRight.06</OutputName>
</Contactor>
-<Contactor>
<Name>Contactor Back Left</Name>
<OutputName>10-BumperBackLeft.04</OutputName>
</Contactor>
-<Contactor>
<Name>Contactor Back Center</Name>
<OutputName>10-BumperBackCenter.05</OutputName>
</Contactor>
-<Contactor>
<Name>Contactor Back Right</Name>
<OutputName>10-BumperBackRight.06</OutputName>
</Contactor>
-<Contactor>
<Name>Contactor Middle Left</Name>
<OutputName>10-BumperMiddleLeft.07</OutputName>
</Contactor>
-<Contactor>
<Name>Contactor Middle Center</Name>
<OutputName>10-BumperMiddleCenter.08</OutputName>
</Contactor>
-<Contactor>
<Name>Contactor Middle Right</Name>
<OutputName>10-BumperMiddleRight.09</OutputName>
</Contactor>
-<Contactor>
<Name>Contactor Shaker</Name>
<OutputName>Shaker.11</OutputName>
</Contactor>
-<Contactor>
<Name>Contactor Gear</Name>
<OutputName>Gear.12</OutputName>
</Contactor>
-<Contactor>
<Name>Contactor Motor</Name>
<OutputName>HellballMotor.13</OutputName>
</Contactor>
-<Contactor>
<Name>Contactor Bell</Name>
<OutputName>Bell.14</OutputName>
</Contactor>
-<ReplayKnocker>
<Name>ReplayKnocker</Name>
<OutputName>Knocker.10</OutputName>
</ReplayKnocker>
-<LedWizEquivalentOutput>
<OutputName>FlipperLeft.00</OutputName>
<LedWizEquivalentOutputNumber>1</LedWizEquivalentOutputNumber>
</LedWizEquivalentOutput>
-<LedWizEquivalentOutput>
<OutputName>FlipperRight.01</OutputName>
<LedWizEquivalentOutputNumber>2</LedWizEquivalentOutputNumber>
</LedWizEquivalentOutput>
-<LedWizEquivalentOutput>
<OutputName>SlingshotLeft.02</OutputName>
<LedWizEquivalentOutputNumber>3</LedWizEquivalentOutputNumber>
</LedWizEquivalentOutput>
-<LedWizEquivalentOutput>
<OutputName>SlingshotRight.03</OutputName>
<LedWizEquivalentOutputNumber>4</LedWizEquivalentOutputNumber>
</LedWizEquivalentOutput>
-<LedWizEquivalentOutput>
<OutputName>10-BumperBackLeft.04</OutputName>
<LedWizEquivalentOutputNumber>5</LedWizEquivalentOutputNumber>
</LedWizEquivalentOutput>
-<LedWizEquivalentOutput>
<OutputName>10-BumperBackCenter.05</OutputName>
<LedWizEquivalentOutputNumber>6</LedWizEquivalentOutputNumber>
</LedWizEquivalentOutput>
-<LedWizEquivalentOutput>
<OutputName>10-BumperBackRight.06</OutputName>
<LedWizEquivalentOutputNumber>7</LedWizEquivalentOutputNumber>
</LedWizEquivalentOutput>
-<LedWizEquivalentOutput>
<OutputName>10-BumperMiddleLeft.07</OutputName>
<LedWizEquivalentOutputNumber>8</LedWizEquivalentOutputNumber>
</LedWizEquivalentOutput>
-<LedWizEquivalentOutput>
<OutputName>10-BumperMiddleCenter.08</OutputName>
<LedWizEquivalentOutputNumber>9</LedWizEquivalentOutputNumber>
</LedWizEquivalentOutput>
-<LedWizEquivalentOutput>
<OutputName>10-BumperMiddleRight.09</OutputName>
<LedWizEquivalentOutputNumber>10</LedWizEquivalentOutputNumber>
</LedWizEquivalentOutput>
-<LedWizEquivalentOutput>
<OutputName>Knocker.10</OutputName>
<LedWizEquivalentOutputNumber>11</LedWizEquivalentOutputNumber>
</LedWizEquivalentOutput>
-<LedWizEquivalentOutput>
<OutputName>Shaker.11</OutputName>
<LedWizEquivalentOutputNumber>12</LedWizEquivalentOutputNumber>
</LedWizEquivalentOutput>
-<LedWizEquivalentOutput>
<OutputName>Gear.12</OutputName>
<LedWizEquivalentOutputNumber>13</LedWizEquivalentOutputNumber>
</LedWizEquivalentOutput>
-<LedWizEquivalentOutput>
<OutputName>HellBallMotor.13</OutputName>
<LedWizEquivalentOutputNumber>14</LedWizEquivalentOutputNumber>
</LedWizEquivalentOutput>
-<LedWizEquivalentOutput>
<OutputName>Bell.14</OutputName>
<LedWizEquivalentOutputNumber>15</LedWizEquivalentOutputNumber>
</LedWizEquivalentOutput>
</Outputs>
</LedWizEquivalent>
-<LedStrip>
<Name>Backboard</Name>
<Width>46</Width>
<Height>6</Height>
<LedStripArrangement>RightLeftAlternateTopDown</LedStripArrangement>
<ColorOrder>GRB</ColorOrder>
<FirstLedNumber>1</FirstLedNumber>
<FadingCurveName>SwissLizardsLedCurve</FadingCurveName>
<OutputControllerName>TeensyStripController</OutputControllerName>
</LedStrip>
-<LedStrip>
<Name>Sideboard Left</Name>
<Width>1</Width>
<Height>37</Height>
<LedStripArrangement>LeftRightTopDown</LedStripArrangement>
<ColorOrder>GRB</ColorOrder>
<FirstLedNumber>277</FirstLedNumber>
<FadingCurveName>SwissLizardsLedCurve</FadingCurveName>
<OutputControllerName>TeensyStripController</OutputControllerName>
</LedStrip>
-<LedStrip>
<Name>Sideboard Right</Name>
<Width>1</Width>
<Height>37</Height>
<LedStripArrangement>LeftRightTopDown</LedStripArrangement>
<ColorOrder>RGB</ColorOrder>
<FirstLedNumber>314</FirstLedNumber>
<FadingCurveName>SwissLizardsLedCurve</FadingCurveName>
<OutputControllerName>TeensyStripController</OutputControllerName>
</LedStrip>
-<LedWizEquivalent>
<Name>LedWizEquivalent 30</Name>
-<Outputs>
-<LedWizEquivalentOutput>
<OutputName>Backboard</OutputName>
<LedWizEquivalentOutputNumber>1</LedWizEquivalentOutputNumber>
<!--Port 1 sur le dof config tool-->
</LedWizEquivalentOutput>
-<LedWizEquivalentOutput>
<OutputName>Sideboard Left</OutputName>
<LedWizEquivalentOutputNumber>4</LedWizEquivalentOutputNumber>
<!--Port 4 sur le dof config tool-->
</LedWizEquivalentOutput>
-<LedWizEquivalentOutput>
<OutputName>Sideboard Right</OutputName>
<LedWizEquivalentOutputNumber>7</LedWizEquivalentOutputNumber>
<!--Port 7 sur le dof config tool-->
</LedWizEquivalentOutput>
</Outputs>
<LedWizNumber>30</LedWizNumber>
</LedWizEquivalent>
</Toys>
<Colors/>
<AutoConfigEnabled>true</AutoConfigEnabled>
</Cabinet>
Vous pouvez maintenant à nouveau lancer DirectOutputConfigTester.exe, et vous devriez avoir les ledstrips ET SSF Impactor fonctionnel.
A noter: Le gear virtuel ne fonctionne pas avec ma version modifiée. Pour la compiler j'ai utilisé le code source de MisterKai disponible sur son github, mais il doit y avoir une divergence de code car après compilation le gear virtuel ne fonctionne plus. Ceci dit ce n'est pas un gros problème, ce gear virtuel ne "sonnait' vraiment pas terrible
Il ne faut pas hésitez à pousser le volume des amplis exciter et à ajuster les niveaus, je trouve que le shaker bénéficie de plus de puissance.
Voila, n'hésitez pas à me faire un retour
Incidemment, je serai intéressé de connaitre l'opinion de ceux qui possèdent un vrai shaker pour comparer avec le shaker SSF