Boite à Rythmes Chiptune (MSX Tribute)

Julien974
mer, 07/10/2019 - 10:50
Bonjour à tous,
Comme me l'a gentiment proposé Alex, je viens vous présenter mon projet actuellement en cours de financement sur Kickstarter : http://www.kickstarter.com/projects/jlacaze/msx-tribute-sequencer/
C'est un boîte à rythme disponible en kit DIY basée sur les puces sonores YM2413, que l'on trouvait à l'époque sur les MSX2, certains extensions sonore pour MSX, et les Sega Master System Mark III (uniquement accessibles au Japon)
Plutôt que de faire un copier/coller des informations qui sont disponibles sur Kickstarter, je préfère plutôt parler de l'aspect technique sur l'intérieur de la machine.
Elle est composée de 2 PCB, l'un étant l'interface utilisateur (UI par la suite) et l'autre étant la carte sonore / carte mère (SB pour la suite)
Les détails la partie UI :
21 boutons poussoirs avec led intégrée, 1 encodeur rotatif avec bouton poussoir, 4 potentiomètres et un écran LCD 16x2 composent l'interface utilisateur.
Au niveau de la connectique, quasiment tout est relié au micro contrôleur(µC) via des registres à décalage type 595 pour les sorties et 165 pour les entrées, en utilisant le protocole SPI pour la gestion.
Seuls les potentiomètres sont connectés en direct sur le µC, sur ses entrées analogiques.
Pour optimiser la place sur le PCB, j'ai utilisé des réseaux de résistances pour faire un pull-up sur les switches, et d'autres réseaux de résistances pour les Leds connectés à la masse.
Avec Les schémas, c'est peut-être plus clair ?
Julien974
mer, 07/10/2019 - 11:21
Les détails de la partie SB :
Partie 1 : Le Micro-contrôleur
La machine est pilotée par un µC de chez STmicroelectronics, un STM32F303CCT6, Cotrex M4, cadencé à 72MHz, 256KB de Flash, 48KB de RAM.
Utilisant initialement un STM32F103C8T6 (un "bluepill") Cortex M3, toujours cadencé à 72MHz, mais avec 64KB de Flash, 20KB de RAM, j'ai saturé la mémoire embarquée. Après discussion avec un des fabricants de bluepill, j'ai pu obtenir la fabrication de la version supérieure, les 2 micro contrôileurs étant compatibles pin-to-pin.
Au niveau du développement, j'ai utilisé l'écosystème STM32Cube, soit principalement CubeMX pour la génération du code initial et ensuite via Atollic Truestudio pour le développement pur et dur.
J'ai fait le choix de ne pas utiliser FreeRTOS, me sentant plus à l'aise sur une gestion des timings avec des interruptions, "à l'ancienne" certains diront.
Sont utilisés pour mes besoins 2 ports SPI (l'un pour l'interface utilisateur, l'autre pour la gestion de la mémoire flash externe, une W25Q128 de chez Windbond) un port UART (gestion de l'interface MIDI par DIN-5), le port USB (actuellement pour la mise à jour du firmware, mais avec implementation de MIDI-USB dans le futur), 4 entrées analogiques (les 4 potentiomètres), le reste étant utilisé en GPIO pour driver la puce sonore et les lignes ChipSelect.
Partie 2 : La partie son
La machine est composée de 2 puces YM2413 comme cité précedemment, qui sont utilisées soit pour jouer exactement la même chose à l'unison, soit désacordée pour venir enrichir les possibilités sonores.
Elles ont un DAC interne, je me suis attelé à appliquer une bonne dose de filtrage à 22kHz (Passe-Bas second ordre type Sallen-Key) et une amplification pour l'étage final de sortie.
Partie 3 : L'alimentation
Oui parce que c'est bien gentil tout ça, mais sans l'élément de base, il ne se passe pas grand chose ^^
Du coup, et étant donné l'intégration d'une partie numérique et d'une partie analogique, j'ai inclus 2 régulateurs (7805) pour différencier les alimentations, j'ai crée 2 plans de masse dissociés.
Pour avoir fait des tests sur plusieurs révisions de la carte (la version finale étant la 5ème version) utiliser 2 régulateurs, avec un filtre en PI en sortie de celui qui alimente la partie analogique m'a vraiment fait gagner en terme de bruit sur la sortie audio, les tests précédents de mutualisation de l'alimentation 5V, malgrès filtrage, se sont avérés infructueux.
Les puces sonores datent également d'il y a 30 ans, et clairement il fallait les bichonner pour les faire ronronner de la meilleure manière possible.
Voilà, j'espère que la lecture a été intéressante, je suis bien entendu à l'écoute de vos diverses questions, et n'hésitez pas à aller faire un tour sur le kickstarter ou à le partager autour de vous !
http://www.kickstarter.com/projects/jlacaze/msx-tribute-sequencer/
Jetfuzz
jeu, 07/11/2019 - 13:33
Hello.
Jolie projet, j'adore les sons qui sortent de la, surtout vers la fin de la démo.
Par contre faut avoir l'oreille musicale pour sortir une séquence qui s'écoute, ce que tu a l'air de bien maîtriser.
Coté PCB joli ,belle réalisation. mais ca fait drôle, pour moi en tout cas de voir un pcb avec des CI traditionnelle et pas CMS.
Bravo.
Jetfuzz
Walter
ven, 07/12/2019 - 09:25
Très jolie projet et très belle réalisation, chapeau bas!
Julien974
ven, 07/19/2019 - 12:25
Merci à vous deux.
Pour le côté Through Hole des CI, c'est vraiment dans l'optique de faire un projet en kit à souder en DIY, avec un côté plus facile à réaliser que partir sur des composants en CMS.
Au passage, mon schéma des switches est complètement faux, voici la correction :
Jetfuzz
ven, 07/19/2019 - 16:23
Hello
Effectivement le schéma des switches, j'ai souvenir de m'être posé la question, du pourquoi des pull up avant les switches, mais j'avais pas regardé de plus près !
Maintenant que tu le dis, ça saute aux yeux..
Jetfuzz