jdxi_editor.ui.editors.io.playback_worker

# midi_worker.py Playback Worker to play Midi files in a new thread

Classes

MidiPlaybackWorker

MidiPlaybackWorker

Module Contents

class jdxi_editor.ui.editors.io.playback_worker.MidiPlaybackWorker(parent: PySide6.QtCore.QObject | None = None)[source]

Bases: PySide6.QtCore.QObject

MidiPlaybackWorker

set_tempo[source]
result_ready[source]
finished[source]
parent = None[source]
position_tempo[source]
initial_tempo[source]
should_stop = False[source]
buffered_msgs = [][source]
midi_out_port = None[source]
play_program_changes = True[source]
ticks_per_beat = 480[source]
lock[source]
index = 0[source]
start_time[source]
__str__() str[source]
setup(buffered_msgs: list, midi_out_port: object, ticks_per_beat: int = 480, play_program_changes: bool = True, start_time: float | None = None, initial_tempo: int = Midi.TEMPO.BPM_120_USEC) None[source]

Setup the playback worker with buffered messages and configuration.

stop() None[source]

Stop the playback worker.

update_tempo(new_tempo: int) None[source]

update_tempo

Parameters:

new_tempo – int

Returns:

None

do_work() None[source]

Process MIDI messages for playback.

_calculate_message_time(target_ticks: int) float[source]

Calculate the time for a message at target_ticks using incremental tempo calculation. This correctly handles tempo changes by processing events in chronological order.