Source code for jdxi_editor.ui.editors.io.utils

"""
Editor IO Utils
"""

from mido import MidiFile
from picomidi.constant import Midi


[docs] def format_time(seconds: float) -> str: """ Format a time in seconds to a string :param seconds: float :return: str """ mins = int(seconds) // 60 secs = int(seconds) % 60 return f"{mins}:{secs:02}"
[docs] def tempo2bpm(tempo: int) -> float: """ tempo2bpm :param tempo: float :return: float """ return 60_000_000 / tempo
[docs] def get_last_tempo(midi_file: MidiFile) -> int: """ get_last_tempo :param midi_file: MidiFile :return: int """ tempo = Midi.TEMPO.BPM_120_USEC # 500_000 default for track in midi_file.tracks: for msg in track: if msg.type == "set_tempo": tempo = msg.tempo return tempo