synthio
– 支持 MIDI 合成¶
在这些板上可用
-
synthio.
from_file
(file: BinaryIO, *, sample_rate: int = 11025) → MidiTrack¶ 从已经打开的 MIDI 文件创建一个 AudioSample。目前,仅支持单轨 MIDI(类型 0)。
- 参数
file (typing.BinaryIO) – 已经打开的 MIDI 文件
sample_rate (int) – 所需的播放采样率;更高的采样率需要更多的内存
从闪存播放 MIDI 文件:
import audioio import board import synthio data = open("single-track.midi", "rb") midi = synthio.from_file(data) a = audioio.AudioOut(board.A0) print("playing") a.play(midi) while a.playing: pass print("stopped")
-
class
synthio.
MidiTrack
(buffer: _typing.ReadableBuffer, tempo: int, *, sample_rate: int = 11025)¶ 简单的方波 MIDI 合成器
从给定的 MIDI 事件流创建一个 MidiTrack。仅支持“Note On”和“Note Off”事件;通道号和键力度被忽略。最多可以同时打开两个音符。
- 参数
buffer (ReadableBuffer) – MIDI 事件流,存储在 MIDI 文件轨道块中
tempo (int) – 流式事件的速度,以每秒 MIDI 滴答数为单位
sample_rate (int) – 所需的播放采样率;更高的采样率需要更多的内存
简单的旋律:
import audioio import board import synthio dac = audioio.AudioOut(board.SPEAKER) melody = synthio.MidiTrack(b"\0\x90H\0*\x80H\0\6\x90J\0*\x80J\0\6\x90L\0*\x80L\0\6\x90J\0" + b"*\x80J\0\6\x90H\0*\x80H\0\6\x90J\0*\x80J\0\6\x90L\0T\x80L\0" + b"\x0c\x90H\0T\x80H\0\x0c\x90H\0T\x80H\0", tempo=640) dac.play(melody) print("playing") while dac.playing: pass print("stopped")
-
sample_rate
:Optional[int]¶ 32 位值,表示样本以赫兹(每秒周期数)播放的速度。
-
__exit__
(self) → None¶ 退出上下文时自动取消初始化硬件。有关更多信息,请参阅 Lifetime 和 ContextManagers。