Je veux faire un analyseur de spectre audio en Python. J'ai utilisé la bibliothèque pyaudio et je lis le flux du microphone. Pour chaque lecture, j'obtiens 4410 valeurs, que je convertis en nombres en utilisant numpy puis je les dessine sur l'écran de pygame. Il ressemble à ceci: https://photos.google.com/share/AF1QipMCWVk1pR0dmrrsTlpE3gHQ9GTUV25MqwUxw4JuW8TrItkGkuU9X3ZpY2ZQ-RLHew?key=UE9Id19IU1dtSHZfUk43TjB3SWxFcVhRRTFYOWFB (le graphique est à l'envers) Le code que j'ai pour c'est ceci:Analyseur de spectre audio (4410 valeurs en 15 bars)
import pyaudio, math, struct,pygame, numpy
pa = pyaudio.PyAudio()
#open audio stream
stream = pa.open(input_device_index=1,rate=44100,format=pyaudio.paInt16,channels=2,input=True)
#read bytes from stream and convert to numbers
def get_data():
data = stream.read(int(44100*0.05))
s = numpy.fromstring(data, numpy.int16)
return struct.unpack('h'*4410, data)
pygame.init()
screen = pygame.display.set_mode((4000,1000))
def redraw():
data = get_data()
#draw every number as a bar onto pygame windows
#last 4410 values are missin
for x in range(4000):
val = data[x]
pygame.draw.rect(screen,(0,0,0),(x,0,1,1000),0)
pygame.draw.rect(screen,(255,255,255),(x,0,1,val),0)
pygame.display.update()
pygame.event.clear()
while 1:
redraw()
Est-il possible de fantaisie de fusionner ces 4410 valeurs en seulement 15, donc je peux avoir la belle & cool green & barres rouges dans la fenêtre de taille raisonnable, au lieu de cette chose laide qui a besoin de 3 écrans?