music.Sequencer

class music.Sequencer(sample_rate=44100, events=<factory>)[source]

Bases: object

Schedules notes and renders them as audio.

Attributes:
sample_rateinteger

The sampling frequency in Hertz, used for every note rendered and for turning each event’s start time into a sample offset.

eventslist of NoteEvent

The scheduled notes. Normally built with add_note() rather than passed in, and rendered in order of their start times rather than the order they were added.

Parameters:
  • sample_rate (int)

  • events (List[NoteEvent])

See also

music.StimulationSession

phases in sequence rather than notes at offsets, for stimulation protocols.

Examples

>>> seq = Sequencer()
>>> for i, freq in enumerate([440, 550, 660]):
...     seq.add_note(freq, start=i * 0.25, duration=1.0)
>>> len(seq.events)
3
>>> seq.write("chord.wav")
__init__(sample_rate=44100, events=<factory>)
Parameters:
  • sample_rate (int)

  • events (List[NoteEvent])

Return type:

None

Methods

__init__([sample_rate, events])

add_note(freq, start, duration[, ...])

Add a note event to the sequencer.

render()

Render all scheduled events and return the audio array.

write(filename[, bit_depth])

Write the rendered audio to a WAV file.

Attributes

sample_rate: int = 44100
events: List[NoteEvent]
add_note(freq, start, duration, vibrato_freq=0.0, max_pitch_dev=0.0, adsr_params=None, spatial=None)[source]

Add a note event to the sequencer.

Raises:
ValueError

If start is negative. Rendering placed such a note at a negative sample offset and failed with a broadcasting error.

Parameters:
Return type:

None

render()[source]

Render all scheduled events and return the audio array.

Return type:

ndarray

write(filename, bit_depth=16)[source]

Write the rendered audio to a WAV file.

Parameters:
  • filename (str)

  • bit_depth (int)

Return type:

None