Ca avance doucement, cela fait déjà un an que j'ai lancé ce projet !
Il faut maintenant deux étages pour les modules, et il y en a plein d'autres qui vont venir.
- 20210811_232249.jpg (2.17 Mio) Vu 7660 fois
Les faces avant sont générées avec un script Openscad qui place automagiquement les différents éléments sur la surface. En entrée, un tableau permet de fournir la description du panneau de manière concise. Un exemple pour le module Dual Midi :
Code : Tout sélectionner
_midi = [
[ "kL1:GLIDE" ],
[ "k:BEND RANGE" ],
[ "o:CLK24", "P:LEARN" ],
[ "o:PITCH", "o:MOD" ],
[ "o:VEL", "o:CC" ],
[ "o:GATE", "o:TRIG" ]
];
panelsLayout = [ _midi, _midi ];
panelsName = [ "MIDI 1", "MIDI 2" ];
Et hop, ça génère le STL
- dual_midi.png (51.86 Kio) Vu 7660 fois
Ensuite, impression 3D avec une UM3, PLA noir mat dans la première buse 0.4mm, et PLA silver dans la seconde buse 0.25mm.
J'ai attaqué la production en série des cartes avec un petit four à refusion T962.
- 4boards.jpeg (2.48 Mio) Vu 7660 fois
- 4boards_pcb.jpeg (2.85 Mio) Vu 7660 fois
Le truc vraiment laborieux c'est la réalisation des câbles avec connecteurs Dupont
- cables.jpeg (1.65 Mio) Vu 7660 fois
Beaucoup de travail aussi côté Pure Data pour automatiser la génération de la GUI pour chaque module.
A terme, la GUI ne sera pas super utile car il n'y aura pas d'écran, mais c'est indispensable pour la phase de mise au point du soft.
J'utilise la version CEAMMC du Pure Data qui intègre beaucoup d'opérateurs pour émuler un synthé analogique, et des nouveaux composants de GUI (
https://github.com/uliss/pure-data).
- 2021-08-12 11_47_45-polymod2.pd [edit] - Z__polymod.local_pd-polymod2.git_pd.png (79.51 Kio) Vu 7660 fois
Côté firmware ATmega4809, j'ai modifié "optiboot" pour permettre la mise à jour via I2C. C'est cool, avec une seule commande côté RPi4, je peux maintenant flasher tous les modules sans avoir à connecter un câble de programmation.
Code : Tout sélectionner
./polymod-control.py flash update_all ../firmware/.pio/build/ATmega4809/polymod2.hex
J'ai aussi un mode console via I2C, qui se comporte comme le port série, pour parler avec le firmware :
Code : Tout sélectionner
patch@patchbox:~ $ polymod.local/pd-polymod2.git/python/polymod-control.py console 4
Starting console for module #4
h
Usage:
c: print current configuration
v: print pins value
i: print system informations
t: toggle trace
R: restart module
T: diagnostic mode
V: firmware version
m <moduleId>: set Module ID
n <moduleName>: set Module Name
o <pin> <value> : set digital output pin value
p <pin> <value> : set pwm output pin value
ai <pin> <pin> ...: define analog inputs
ao <pin> <pin> ...: define pwm ouputs
di <pin> <pin> ...: define digital inputs
do <pin> <pin> ...: define digital outputs
si <pin> <pin> ...: define socket inputs
so <pin> <pin> ...: define socket outputs
w: write config to EEPROM
c
=== [WAVETABLE-VCO] ID = 4 ===
-PHYSICAL PINS- 00 01 02 03 04 05
Analog Input A0 A3 A1 A4 A2 A5
PWM Output
Digital Input 31 30
Digital Output 13 12 27
Socket Input 3 2 1 0
Socket Output 5 6 7
A suivre ...