synthio
– Support for MIDI synthesis¶
Available on these boards
- synthio.from_file(file: BinaryIO, *, sample_rate: int = 11025) MidiTrack ¶
Create an AudioSample from an already opened MIDI file. Currently, only single-track MIDI (type 0) is supported.
- Paramètres:
Playing a MIDI file from flash:
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)¶
Simple square-wave MIDI synth
Create a MidiTrack from the given stream of MIDI events. Only « Note On » and « Note Off » events are supported; channel numbers and key velocities are ignored. Up to two notes may be on at the same time.
- Paramètres:
buffer (ReadableBuffer) – Stream of MIDI events, as stored in a MIDI file track chunk
tempo (int) – Tempo of the streamed events, in MIDI ticks per second
sample_rate (int) – The desired playback sample rate; higher sample rate requires more memory
Simple melody:
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 bit value that tells how quickly samples are played in Hertz (cycles per second).
- __exit__() None ¶
Automatically deinitializes the hardware when exiting a context. See Lifetime and ContextManagers for more info.