#!/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()