256 octets pour 1 octave
(En cours d'écriture...)
Cette installation permet d'écouter, dans l'ordre, les 256 octets joués sur une octave de piano (ou autre).
Un octet comprenant huit bits, et une octave huit notes, chaque bit est associé à une note qui est jouée si le bit vaut 1.
Le dispositif utilise une Raspberry Pi, une carte PCA9685 - 16-Channel de chez Adafruit, 8 servo-moteurs et une alimentation de PC.
Script python
Ci-dessous, le script principal qui permet d'obtenir le résultat visible sur la vidéo.
L'archive complète avec les librairies d'Adafruit et notre lib de pilotage des servos est disponible ici : Fichier:256octets.zip.
# -*- coding: utf8 -*-
from servoControl import play_note
from servoControl import initialisation
import threading
import time
import re
tps = 0.5
partition = []
for i in range(255):
octet = bin(i+1)[2:] # converti en binaire et retire le 0b
octet = octet.zfill(8) # rajoute les 0 aux début de l'octet
octet = str(octet) # converti le nombre en string
accord = [match.start() for match in re.finditer(re.escape("1"), octet)] # recherche les positions de chaque "1"
partition.append((i+1, octet, accord))
def thread_notes (bit):
thread = threading.Thread(target=play_note, args=(bit))
thread.start()
def octets_pour_un_octave():
for i in partition:
print("---")
print (i[1])
for j in i[2]:
thread_notes((j,))
time.sleep(tps)
print("---")
if __name__ == "__main__":
initialisation ()
octets_pour_un_octave()
Partie mécanique
Sur les vidéos, la pièce est jouée par un pianiste de 50 doigts, mais il est possible d'obtenir le même résultat avec les 8 doigts d'un pianiste plus modeste.
À cette fin, vous pouvez consulter la documentation d'Octav3.