Python-Organ : Petit aperçu du prototype avec seulement deux générateurs de fréquences
Le Github Python-Organ a été mis à jour avec un premier code de test MicroPython exploitant deux générateurs de fréquences AD9833 (sur les 4 prévues à l'origine... j'attends la livraison des autres).
Source: Python-Organ |
Comment cela fonctionne t'il?
Pour commencer, deux classes Organ et Keyboard.
- Organ s'occupe de gérer les notes à jouer sur les différents générateurs de fréquence disponibles.
- Keyboard s'occupe de gérer la détection d'activation/désactivation des entrées sur le capteur capacitif.
Le coeur du script est relativement simple
La fonction keyboard_changed() est appelée par la classe Keyboard lorsqu'une entrée est activée/désactivée sur le MPR121 (capteur capacitif).
Ses paramètres sont:
- key pour la touche activée/pressé ou relâchée. Le paramètre key est un entier entre 0 et 11.
- pressed pour indiquer si la touche est pressée/relâchée.
from ad9833 import AD9833, MODE_SINE from mpr121 import MPR121 from machine import Pin, SPI, I2C # Notes = Key,Frequency # 523.25, 587.33, 659.26, 698.46, 783.99, 880, 987.77, 1046.50 NOTES = { 'C':523, 'D': 587, 'E':659, 'F':698, 'G':784, 'A':880, 'B':988, 'C1': 1046 } # Keys = correspondance between KEY index and corresponding note KEYS = ['C','D','E','F','G','A', 'B', 'C2'] class Organ: pass class Keyboard: pass # Create SPI bus for AD9833 spi = SPI(2, baudrate=9600, polarity=1, phase=0) i2c = I2C(2) # create organ & add voices organ = Organ( spi=spi, debug=True ) organ.add_voice( "Y3" ) organ.add_voice( "Y4" ) organ.clear_all() def keyboard_changed( key, pressed ): """ This will be called when a key is pressed or released """ global organ # Key from 0 to 7 are for corresponding notes in NOTES if 0<= key <= len(KEYS): # Transform key index into Note letter note = KEYS[key] if pressed: organ.play_note(note) else: organ.clear_note(note) # Create the keyboard keyb=Keyboard( i2c=i2c, debug=True ) keyb.on_key_change = keyboard_changed while True: keyb.update()
Et comme le mode debug est activé sur les classe Keyboard et Organ, il est possible de voir les message "Key Pressed", "Key release" ainsi que les "Play note" et "clear note" sur l'orgue.
"Play Note" mentionne la broche de chip_select utilisée, ce qui identifie le générateur de signal automatiquement sélectionné par la classe Organ.
Key 0 is PRESSED Play note C on Y3 @ 523 Hz Key 0 is Released Clear note C on Y3 Key 0 is PRESSEDD on Y3 @ 587 Hz Key 1 is Released Clear note D on Y3 Key 1 is PRESSED Play note D on Y3 @ 587 Hz Key 1 is Released Clear note D on Y3 Key 0 is PRESSED Play note C on Y3 @ 523 Hz Key 0 is Released Clear note C on Y3 Key 0 is PRESSED Play note C on Y3 @ 523 Hz Key 0 is Released Clear note C on Y3 Key 1 is PRESSED Play note D on Y3 @ 587 Hz Key 1 is Released Clear note D on Y3
Ressource
Dépôt Github avec le code Python-Organ .
Liste d'achat
- Pyboard original @ MCHobby.be
- MPR121 breakout @ MCHobby.be
- AD9833 signal generator breakout @ MCHobby.be
Écrire un commentaire