Quoi de neuf ?
FlipperFrance

Quoi comment ! Pas encore membre ! Franchissez le pas, inscrivez vous avec le mail de votre F.A.I (VPN exclus), et participez à la vie Flippéristique

Exposé Project : Alternative audio pour Gottlieb System 3 ( stargate )

titi2097

Membres
Membre FF
Hello

me revoilà après une petit année...
Je viens d'acquérir un Stargate pour me changer du Hook :)

par contre le son est vraiment horrible et répétitif...

Faut dire je me suis habitué à un petit mix perso sur le hook via pinsound... et là revenir sur un sons genre minitel ça fait mal.
Et puis le son du stargate n'apporte aucune immersion ni ambiance du film...

Malheureusement Pinsound n'est pas compatible System3. Tilt!Audio non plus...

J'ai vu quelque tentative sur des forum anglais mais rien d’abouti/publié... ( une discussion ici aussi https://www.flipperfrance.com/threads/gottlieb-system-3.4365/ )
Bref il ne me reste plus qu'a mettre la main à la pâte...

Je vais partager ici mes avancées au cas ou cela puis en intéresser d'autres ou si certain on des infos/aide à apporter :)

Alors à savoir que je ne suis un spécialiste en rien ... mais débrouillard :p donc je découvre sur le tas et ferais surement plein d'erreur :p alors hésitez pas si vous avez des conseils :)


--------------
à ce que j'ai compris :

concept.png

- connexion A1P4 > A6-P1 ( le câble qui nous intéresse )
la carte son A6 du system 3 est piloté par la carte cpu A1 via un cable de 10 contacts x1 type molex KK 396 ( 679-5094 coté A6 ) et 5 contacts x2 type molex KK 396 coté cpu board.
Pour les sons de type voie c'est la carte son A6 qui pilote la carte aux. A20 via une nappe.
un des contact molex est bouché donc seulement 9 contacts réel. ( le bouché sert de détrompeur pour le branchement )

Le premier pin du câble envoi le reset ( initialisation ) à la carte son lors du boot du flip.
les 8 autres pins semble piloté les sons.

- A6-P2
Le deuxième câble molex qui arrive sur l'A6 sert a sortir le son vers la carte aux pour mixage avec les voies et apporte les alimentations +12 -12 +5v et ground.


----------

la complexité du projet est pour moi de définir la matrice de pilotage des sons.
A ce que je comprends pour le moments elle serait codé sur 8 bits.
A moins que certain pin servent à faire des pauses / reset ....

exemple
010100110 = music/son1.wav
010101110 = voix/son1.wav
110001011 = jingle/toto.wav

ensuite il faut déterminer les règles de lecture/ pause / répétition / remplace etc...


Voici un petit montage fait a l'arrache hier soir .... ( j ai reçu le flip hier matin et c'est mon premier try avec arduino :p )
en gros je branche la nappe A1P4 sur mon circuit et je renvois la même valeur vers la carte son A6-P1.

Pour afficher ce contenu, nous aurons besoin de votre consentement pour définir des cookies tiers.
Pour plus d'informations, consultez notre page sur les coOkies.
Pour afficher ce contenu, nous aurons besoin de votre consentement pour définir des cookies tiers.
Pour plus d'informations, consultez notre page sur les coOkies.

sur le lcd j'affiche les numéros de pin de 0 à 9 sur la première ligne et en dessous l'état du pin ( 0 ou 1)
On observe bien le concept...

Prochaine étape je vais jouer un peu et enregistrer sur une SD toutes les combinaisons observées.
ensuite je vais envoyer moi même ces signaux à la carte son et enregistrer tous les sons générés.

J'aurai ainsi mon mapping.
Il me restera à définir les règles...


bref un petit projet sympathique :p
 
Ce sont des commandes non seulement Binaires pour certaines
Genre S0-S8 là tu passes en revue les bit d'entrées
Mais certains codes sons, sont délicats

Car tu envoies par exemple 0000 0001 et de suite en un laps de temps très faible 0001 0000 par exemple hin, et là tu sélectionnes un autre sons
Tout comme 0000 0001 te donne un son, et 0001 0000 un autre son
La lecture du code d'entrée est de type fenétré, soit après un premier mot, le système attend s'il en voit un autre... si oui attend le code et le décode pour la sélection et sinon l'active.
 
Bonjour


merci pour ton retour , et exact j ai pu constater çà :)

dans un premier temps j avais rajouté un delay sur mon arduino de 50 ms entre chaque lecture... grosse erreur. En fait les séquences des messages "combo" semble espacé de 15 à 30 ms.
chaque séquence de message se conclu/valide par un retour à 1111111111. Chaque message doit resté au moins 10ms pour être lu. Et donc effectivement il faut une série de message pour valider un son.

exemple avec test des canaux via le menu de test :
record1.jpg

Dans le déroulement du jeux normal il y a plusieurs message avant le retour à 1111111111.

En testant d'injecter des signaux : si la séquence est incorrect la carte son envoi un simple bip lors du retour à 1111111111. ( ressemble au bip de test de la carte son du menu de test )


Pour afficher ce contenu, nous aurons besoin de votre consentement pour définir des cookies tiers.
Pour plus d'informations, consultez notre page sur les coOkies.

Du coup impossible d'envoyer autre chose que ces bip lorsque j ai voulu injecter la séquence enregistré. J'ai bien enregistré le timestamp mais mon code d'envoi ne l utilise pas encore. Prochaine version :)


Je dois aussi m assurer d'enregistrer assez vite et de ne rien raté car lors de mon premier test j'avais donc bridé la loop de l'arduino...je ne voyais pas tous les retours à 11111111111 et donc je peux rater autre chose...
Semaine prochaine je vais passer sur un raspberry 4 , sa fréquence est forcément plus rapide que celle du flip. Et la connexion wifi avec le pc me simplifiera le boulot d''analyse.

Je constate aussi que ma méthode pour lire la valeur des pins impacte le système : Le flip ne joue pas tout les sons lorsque je branche mon dispositif...

Bref pas mal de taf pour décoder comment tout ça fonctionne;

En parallèle je vais jeter un oeil sur le code du Soft PinMame. Je pourrais peut être récupérer / comprendre comment ça marche depuis là.... Il m'a déjà servi à extraire tous les sons...


@suivre
 
Je constate aussi que ma méthode pour lire la valeur des pins impacte le système : Le flip ne joue pas tout les sons lorsque je branche mon dispositif...

Que ce soit l'ardhuino ou la Framboise 3-4.... les signaux n'ont pas de sortance
Tu attaques une porte TTL, enfin deux même sur la carte
Soit il faut de la "Sortance"
Tu dois amplifier les signaux et les rendre comptatibles par exemple Cmos vers TTL --> Regarde les amplis de bus (non inverseur pour ton cas) genre 74HCT, ou 74ACT
Il est pas impossible que tu aies à voir cela en charge, et regarder les valeurs des tensions pour les états bas et les états haut
 
Que ce soit l'ardhuino ou la Framboise 3-4.... les signaux n'ont pas de sortance
Tu attaques une porte TTL, enfin deux même sur la carte
Soit il faut de la "Sortance"
Tu dois amplifier les signaux et les rendre compatibles par exemple Cmos vers TTL --> Regarde les amplis de bus (non inverseur pour ton cas) genre 74HCT, ou 74ACT
Il est pas impossible que tu aies à voir cela en charge, et regarder les valeurs des tensions pour les états bas et les états haut

merci

Alors l’état de base au repos et un bon 5.1v stable sur chaque input. L’état bas est trop rapide pour le voir au voltmètre. Mais l'arduino le voit sans problème : En utilisant les pins analogiques en input de l'arduino la valeur de base est 1024 et bascule donc entre 200/300 lors des transmissions de messages ( état bas ) ( 1024 correspondant à 5V si j'ai bien compris )
Je considère que l'input est à 1 si la valeur est > 800. Sinon 0. Je dois aussi récupérer un oscillo usb 100Mhz ça devait m'aider à monitorer ce qu'il se passe de plus près...

Pour le Raspberry je vais rajouter des TXS0108E. Je vais les utiliser pour faire l'enregistrement sur la framboise et aussi pour tester de réinjecter ce que je vais enregistrer.

Avec la vitesse du rasb4 je vais pouvoir reproduire la séquence à l'identique... ( développement en C par contre ... )


@ suivre
 
Si je retrouve mon Memotech, je te montrerais le soucis avec la compatibilité TTL CMOS
 
Bon grosse avancée

en fait .. bon j ai honte... mais après pas mal de galère en fait sur mon câble à fiche molex femelle fait maison (679-5094 KK 396) j'avais inversé 2 pin :p ( celui pour se connecté a la carte son depuis mon montage )

après tout c'est déloqué très vite...


Au final l'Arduino pilote très bien la carte son.
Ce que j'ai pas réussi a faire avec le rasp malgré un convertisseur logique ttl/cmos que j'avais installé...

avec l'oscillo j'ai pu confirmer le délai .... 4ms entre une commande de son et sa validation en 255 :p

Je suis donc parti sur un combo arduino + Rasp4.

La matrice est maintenant cartographiée à 80% .. c'est juste du temps a passer sur excel en jouant chaque séquence possible de 0 à 255 et en associant le .wav extrait des roms avec PinMame.
Bon après j avais déjà quasi identifié toutes les matrices possibles en jouant au flip et en enregistrant les signaux sur SD en csv. Mais on sait jamais si j en ai raté...

je peux donc piloter la carte son en ssh via le raspberry et lui dire de jouer le son que je souhaite , le couper direct (0), ou progressivement (190) :) ce qui permet de faire l'association avec les sons d'origines tranquillement installé depuis le pc.

bref les voice/ sfx et musique c'est dans la boite...

Prochaine étape faire lire un .wav ou mp3 au raspi ...mais bon le plus dure est déjà fait...
J ai déjà tous les sons d'origines donc normalement ce week end si j ai le temps de coder je peux tester le flip en virant vraiment la carte son d'origine :p
Je conserve l'ampli d'origine et je vais brancher la sortie jack du raspi direct dessus.

et après on remplace les sons par quelque chose de plus immersif et représentatif à l'univers Stargate :) avec des randoms pour varier...

petite vidéo a venir ce week end si le temps est pourri....


Au final je voudrais virer le rasp j'ai donc commandé et reçu un wav trigger de sparkfun ( 40 € ouch )
Car je trouve que le gros Default du pinsound c'est le temps de boot. Arduino + sparkfun = boot immediat.



ps :
la numérotation des sons extraits via pinname ( en hexa ) pourrait bien correspondre à la matrice pour peu de mettre les 8 pins dans le bon ordre . donc à investiguer/ confirmer.
Car après c'est gagné pour faire une matrice en 2 2 pour tous les system 3.

@+
 
en fait .. bon j ai honte... mais après pas mal de galère en fait sur mon câble à fiche molex femelle fait maison (679-5094 KK 396) j'avais inversé 2 pin :p ( celui pour se connecté a la carte son depuis mon montage )

après tout c'est déloqué très vite...
Ah bin c'est du propre Monsieur :p
 
bref les voice/ sfx et musique c'est dans la boite...

En fait tu veux simplement avoir les sons, et voix enregistrées et faire entre guillemet un magnéto à pistes (on dira)
Mum attention car il y a du mixage ...
 
alors le wav trigger
tu as tuto et demo de code arduino ici :

en gros ça lit des fichiers xxxx.wav sur une carte sd que tu lui inserts. ( 2018 fichiers)
tu communiques en serial depuis l'ardino (donc une seul broche + la masse), pour lui demander de lire le fichier wav x avec des options pour le multicanaux (14 ) , le volume, pause répétitions etc..

Il fait donc le mixage tout seul sur X canaux...
Mais surtout il y a une librairie toute faire pour Arduino donc c'est vraiment a la porté de tous ( donc pour moi :x )

il a même un petit ampli mais surement pas suffisant. 2W 4 Ohms, 1.25W 8 Ohms .... donc on va conserver l'ampli du flip...


En fait tu veux simplement avoir les sons, et voix enregistrées et faire entre guillemet un magnéto à pistes (on dira)
la finalité c'est de remplacer les sons... donc il fallait que je sache quel son va avec quelle numéro de piste.

Donc au lieu de recopier le signal vers la carte son je vais envoyer le numéro de piste au wav trigger qui lira le fichier wav.
Ca va me permettre de tester le dispositif et constaté si y a des différences... ( on aura une solution pour remplacer les cartes son à vraiment pas cher )

Et ensuite y a plus qu a remplacer le fichier wav et rajouter un peu de logique pour un radom sur un même numéro.

Sinon j'ai trouvé que 2 ordres de commande.
L'une qui coupe tout le son d'un coup ( message 0 ) et une autre commande qui fait un arrêt progressif. ( utilisé en fin de partie )

Apres chaque piste de type musique se répète indéfiniment tant qu'elle n'est pas remplacée par une autre.
Les SFX se superposent et les voies ne semblent jamais se superposer. Donc 1 canal musiques, X canaux sfx et 1 canal voice. ( ce qui laisse du moue )



les musiques,les voies et les effets semblent tous avoir un bit distinctifs donc ça devrait être simple a coder.

Demain j'attaque le code de lecture de son....


tite vidéo du montage en mode enregistrement et clonage du signal par l'arduino.
( bizarrement il manque plus de son maintenant que le câble est correct :p )

Pour afficher ce contenu, nous aurons besoin de votre consentement pour définir des cookies tiers.
Pour plus d'informations, consultez notre page sur les coOkies.


le prototype :
IMG_4063.jpg
 
Ah oui avec une autre bande son :p

Effectivement il y a un code pour couper le son, et un code pour faire une variation à "0", donc diminuer automatiquement le niveau
 
petit update avec une video ou je remplace la carte son d'origine mais en jouant les fichiers wav extraits des roms.

Pour afficher ce contenu, nous aurons besoin de votre consentement pour définir des cookies tiers.
Pour plus d'informations, consultez notre page sur les coOkies.


J'ai toujours ce petit problème de masse avec les enceintes. J'ai ce problème de grésillement même sans mon mod audio.
Ce que je n'ai pas lorsque je mets des écouteurs sur la sorti jack du wav trigger.

De toute façon faut que je vire l'ampli du flip pour en mettre un qui gère la stéréo.

et une petite vidéo ou j'ai callé à l’arrache quelque piste audio de l'ost du film a la place...

Pour afficher ce contenu, nous aurons besoin de votre consentement pour définir des cookies tiers.
Pour plus d'informations, consultez notre page sur les coOkies.

ça marche bien mais il faudra que je choisisse bien les pistes.
Pareil il y a quelques sons comme le shoot the pyramide que je vais changer.

mais bon au final le concept est validé à ce stade :)
 
Allé allé hop tu nous fini cela demain
On a hâte de voir tout cela fini
En tous cas moi cela m'interesse ton montage
 
Je publie le tuto en détail avant noël :)



J'ai tenté d’utiliser le mini ampli intégré au wav trigger. Ça marche mais ça chauffe trop pour le peux de volume sonore. Par contre c'est déjà tellement plus propre qu'avec le pauvre ampli mono du flip.

là j'attends de recevoir un petit ampli 2.1 avec réglage de la fréquence des basses et réglage aigue medium etc... ( 20€)
ça devrait donner beaucoup mieux. Je cherche aussi à changer les HP du coup. Les membranes de ceux d'origines sont cuites.

J'ai aussi un petit bogue dans le code lorsque trop d'ordre sonore arrive en même temps. ça sature le wav trigger qui a une limite de 14 pistes lu simultanément.
J'ai eu le cas lors d'un bumber trop sensible qui se mettait en mode non-stop. Le wav trigger a fait du first in/first out et j'ai perdu la musique de fond.

Il me faut ensuite gérer l'alimentation de tout le bordel.
Je suis pas trop chaud pour repiquer le 5v et le 12v du flip donc pour le moment j'ai un transfo a part.
Par conte je vais rajouter un relais pour alimenter le prototype au démarrage du flip.

Un autre détail lorsque je vire complètement la carte son d'origine. c'est dire quand je débranche le cable A6P2, alors la carte cpu n’envoie plus d'ordre sonore. elle doit détecter qu'il n'y a plus de carte son. Donc a identifier comment ça marche.

Je voudrais récupérer l'emplacement pour fixer mon montage :)

Donc voilà pas mal de tite chose a peaufiner mais ça avance.
 
Vache impressionnant ! :oops: j'étais passé a côté de ce post ! techniquement Chui complètement Largué, mais je suis ton projet avec grande attention ! J'ai pas mal de Pinsound dans mes flips et j'ai toujours regretter de ne pas pas pouvoir en mettre une dans le Stargate tellement le son d'origine est pourrie ! :rolleyes: ça serait la seule "touche" tuning qui lui manquerait ! :lol: et j'adore la BO de Stargate, on s'en servait souvent lors de nos soirées JDR !
Bref, si tu propose ton montage a la vente, t'a déjà un client, ou j'essaierai de le monter moi même avec ton futur tuto, si c'est pas trop complexe. iSiffle
Concernant la Pinsound, sans faire du hors sujet, tu aurai un lien vers un tuto a me filer ? Je voulais mettre les voix du film en français sur mon JP, mais j'ai rien compris au soft et pas trouver de tuto...:(
 
Clair mieux vaudra une alimentation externe surtout pour l'ampli

Mais sache que la carte ampli est excellente sur les GOttlieb ! Les TDA de Philips sont des très très bons amplificateurs ! Seul bémol si tu veux passer en stéréo cela ne sera pas possible car tout est embarqué en mono
 
Clair mieux vaudra une alimentation externe surtout pour l'ampli

Mais sache que la carte ampli est excellente sur les GOttlieb ! Les TDA de Philips sont des très très bons amplificateurs ! Seul bémol si tu veux passer en stéréo cela ne sera pas possible car tout est embarqué en mono

C est vrai que l amplification est super puissante et ne sature pas du tout.
Par contre je n arrive pas a supprimer le souffle permanent que j entends sur les hp. J ai check les masses mais rien a faire.
il me semble que la carte ampli fait egalement le transfo pour le 5v... peut etre des parasites va savoir :-(


je vous fais un retour avec l ampli a 20€ la semaine prochaine. ( je pars en déplacement donc pas de flip pendant 1semaine)
@+
 
il me semble que la carte ampli fait egalement le transfo pour le 5v... peut etre des parasites va savoir :-(

Non du tout
Pas le transfor mais une régulation de deux tensions pour les A.O.P de la carte ampli

Pour le bruit c'est souvent avant partie carte Aux, cela souffle un peu et cela est normal
 
Non du tout
Pas le transfor mais une régulation de deux tensions pour les A.O.P de la carte ampli

Pour le bruit c'est souvent avant partie carte Aux, cela souffle un peu et cela est normal

mais j ai le souffle surtout a partir du moment ou j 'utilise l'ampli ;-(
car j'avais testé en branchant écouteur sur la sortie RCA de la carte aux et pas de souffle , ou du moins je le perçois pas.
en hifi lorsque cela arrive j'ai lu qu'il fallait rajouter des filtres cotés alimentation principal & et vérifier la masse. ?



La CA auxiliaire A5 est un peu plus élaborée et prend le 12,6 VAC directement du transformateur et le convertit en +12 et -12 VDC, pour la carte Sons, à l'aide d'un LM7912. Elle produit aussi du +5 Volts à l'aide d'un LM340T (7805). Il passe au travers d'un MC3403 (ou LM324AN, ou NTE987). La CA auxiliaire utilise également 2 TDA2040 pour amplifier le son (Remarque: les TDA2030 peuvent être utilisés mais ils ne génèrent pas autant de puissance)

Sinon ça serait cette carte qui alimente la carte son et carte son aux (+12/-12 et +5 )
du coup je pensait aussi virer cette carte :p si je vire les cartes sons. ?


sinon hier je voulais profiter du flip avant de partir et j'ai du jouer 2 bonnes heures avec l'ampli intégré du wav trigger a fond. ( qualité audio bien mais en mono aussi et sans subwoofer et sans souffle )
J'ai surtout pu valider que le nouveau code "minimaliste" pour l'arduino est ok et fonctionne très bien.

Mais j'ai fini par cramé la carte sd.
le wav trigger a bien chauffé et au bout d'un moment le son est partie en couille.

J'ai cru avoir perdu 50$ mais non...c'était juste la carte SD qui est morte. c'est de la carte noname à 5euro mais classe 10 quand même -(

Voici donc le code utilisé dans l'Arduino.


C'est une version épurée dans laquelle j'ai viré toutes les parties de communication avec le raspberry, la carte sd et le module lcd. Elements utiles pour tester et comprendre le fonctionnement de la carte son. ( et pour déboguer )


Vous constaterez que le code ne casse pas 3 pattes à un canard.

La particularité du programme est que la lecture des pins se fait par "registre". Ce qui permet de lire la valeur des pins d'un seul coup et pas pin après pin et donc en une seule ligne. ( matrice = PINA; )

Coup de chance chaque registre de l'arduino référence 8 pins. Ce dont on a besoin. :) et donc un seul registre suffit.
Le code boucle sur la lecture des pins, et lorsque les pins changent de statut et reste stable pendant =>4ms, alors je considère que l'on a un "ordre de son" à transmettre au wav trigger.


par exemple :
matrice = PINA; // on lit la valeur des pins

PlayWavMatrice(matrice); //ordre de lecture au wavtrigger

par exemple si matrice=00001100 ( =12 en décimal )
alors le wav trigger va lire le fichier 0012-trucbidule.wav qui se trouve à la racine de la carte sd

carte sd formatée en fat32 ( et pas extfat , ni ntfs )
les fichiers wav doivent être au max en 16-bit, 44.1kHz ( = qualité cd )


il y a aussi une particularité pour les commandes stop et fading et pour les pistes de musique qui loop.

J'ai aussi ajouté un tableau circulaire pour pseudo gérer les 14 channels du wav triger. C'est juste histoire de faire un stop sur la plus vieille piste son avant dans lancer une nouvelle. Ainsi je suis certain de ne pas saturer la bête.
Je réserve aussi un channel pour la musique.



pour l'extraction des sons d'origines je vous renvois vers un tuto qui n'est pas de moi mais que j'ai utilisé : (j ai le droit de poster un lien ?)
il y a deux méthodes

-BridgeM1
a savoir que le numéro du wav enregistré via BridgeM1 correspond exactement au numéro qui faut conserver sur la carte sd du wav trigger. Et ça c'est vraiment tip top !

il a fallu que je fasse un brainstorming en binaire avec les 8 pins :) c'est pour cella que sur le montage l'ordre de branchement des pins entre la carte cpu gottlieb et celle de l'arduino est à respecter.

-PinMame
concernant l'extraction de son avec la méthode PinMame : je trouve que la qualité du son est meilleur. De plus avec BridgeM1 il me manquant des sons
concernant la numérotation avec PinMame : il faut faire une simple soustraction a 255 :
si le fichier wav extrait = 20.wav
alors il faut faire 255-20 = 235

et donc sur la carte sd mettre le fichier 235.wav.

a suivre un petit schéma de montage.


pour info j'ai découvert l'electronique & arduino il y a 3 semaines au traves d'un "starter" kit à 40€. Donc ici on est sur du légo difficulté 1 brique à la portée de tous.
 
Retour
Haut Bas