Pyglet - Получение частоты звука - PullRequest
0 голосов
/ 11 мая 2018

Я хотел бы получить частоту звука, который я загружаю, с помощью media.load (), чтобы потом я мог визуализировать его, есть ли способ сделать это с помощью pyglet?

1 Ответ

0 голосов
/ 18 мая 2018

Любой, кто приземлится здесь, включая вас ОП.
Для навигации по этой информации (и полезной во многих других случаях), попробуйте поискать переменные, которые вы используете.

mport pyglet

music = pyglet.media.load('./test.wav')
music.play()

pyglet.app.run()

ВотDead Simple Music Player, и он работает (avbin7 требуется, если вы хотите играть .mp3 и т. д.) .

Теперь, вы хотели бы получить частоту?
Если выне знаю как, всегда начинайте с изучения библиотеки и / или переменных, выполнив:

print(dir(music))

Это мгновенно даст вам мертвую отдачу:

['__class__', '__del__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_audio_buffer', '_audio_stream', '_audio_stream_index', '_buffered_audio_data', '_decode_audio_packet', '_decode_video_packet', '_duration', '_ensure_video_packets', '_events', '_file', '_get_duration', '_get_packet', '_get_queue_source', '_is_queued', '_packet', '_process_packet', '_video_stream', '_video_stream_index', '_video_timestamp', 'audio_format', 'delete', 'duration', 'get_animation', 'get_audio_data', 'get_next_video_frame', 'get_next_video_timestamp', 'info', 'is_queued', 'play', 'seek', 'video_format']

Здесь video_format торчит ко мне, просматривая остальную часть кучи, которую мы находим audio_format.

Это должно тыкать вас в глаз, как игла.
Следующий логическийШаг - напечатать эту переменную, любая из этих альтернатив является хорошим выбором:

print(music.audio_format)
print(music.audio_format())
print(dir(audio_format))

Но первый даст вам:

AudioFormat(channels=2, sample_size=16, sample_rate=44100)

И вот оно, 44100Hz,Частота, которую вы ищете.

import pyglet

music = pyglet.media.load('./test.wav')
print(dir(music)) # find music.audio_format / music.video_format
print(music.audio_format) # try it out
# >>> AudioFormat(channels=2, sample_size=16, sample_rate=44100)
music.play()
pyglet.app.run()
...