kostacivos/test.py

54 lines
1.5 KiB
Python
Executable File

#!/usr/bin/env python3
# Semplice file per far vedere come possono essere
# regolate altezza,intensita`, durata, e timbro
# di un suono tramite pyaudio
import numpy as np
import pyaudio
from Armonia import armonica
# dati per l'inizializzazione dell'onda
duration = 2.0
fs = 44100
volume = 1.0
# frequenza la 66 Hz il DO piu' basso udibile
f = 66.0
i=0
nota = armonica(f, "5")
while i<7:
# inizializzo questo oggetto pyaudio
p = pyaudio.PyAudio()
# onda sinusoidale, non so bene perche` e` da fare cosi`
prima = (np.sin(2*np.pi*np.arange(fs*duration)*f/fs)).astype(np.float32)
print(prima)
stream = p.open(format=pyaudio.paFloat32, channels=1, rate=fs, output=True)
# riproduce lo stream al volume impostato
stream.write(volume*prima)
stream.stop_stream()
# genera la quinta nota armonica naturale della nota di partenza
h = armonica(f, "3_maj")
p = pyaudio.PyAudio()
terza = (np.sin(2*np.pi*np.arange(fs*duration)*h/fs)).astype(np.float32)
print(terza)
stream = p.open(format=pyaudio.paFloat32, channels=1, rate=fs, output=True)
stream.write(volume*terza)
stream.stop_stream()
# genera la terza nota armonica naturale della nota di partenza
g = armonica(f, "5")
p = pyaudio.PyAudio()
quinta = (np.sin(2*np.pi*np.arange(fs*duration)*g/fs)).astype(np.float32)
print(quinta)
stream = p.open(format=pyaudio.paFloat32, channels=1, rate=fs, output=True)
stream.write(volume*quinta)
stream.stop_stream()
# passa alla prossima ottava
f=f*2-1+i
i=i+1
stream.close()
p.terminate()