jdxi_editor.midi.utils.drum_detection ===================================== .. py:module:: jdxi_editor.midi.utils.drum_detection .. autoapi-nested-parse:: Drum track detection utilities for MIDI files. This module provides functions to analyze MIDI tracks and identify which tracks are likely drum tracks based on various heuristics. Attributes ---------- .. autoapisummary:: jdxi_editor.midi.utils.drum_detection.DRUM_NOTE_MIN jdxi_editor.midi.utils.drum_detection.DRUM_NOTE_MAX jdxi_editor.midi.utils.drum_detection.DRUM_KEYWORDS Functions --------- .. autoapisummary:: jdxi_editor.midi.utils.drum_detection.analyze_track_for_drums jdxi_editor.midi.utils.drum_detection.detect_drum_tracks Module Contents --------------- .. py:data:: DRUM_NOTE_MIN :value: 35 .. py:data:: DRUM_NOTE_MAX :value: 81 .. py:data:: DRUM_KEYWORDS :value: ['drum', 'percussion', 'perc', 'kit', 'beat', 'rhythm', 'snare', 'kick', 'hihat', 'hi-hat',... .. py:function:: analyze_track_for_drums(track: mido.MidiTrack, track_index: int) -> dict Analyze a MIDI track to determine if it's likely a drum track. Returns a dictionary with analysis results and a score. .. py:function:: detect_drum_tracks(midi_file: mido.MidiFile, min_score: float = 70.0) -> List[Tuple[int, dict]] Detect drum tracks in a MIDI file. :param midi_file: The MIDI file to analyze :param min_score: Minimum score threshold for a track to be considered a drum track :returns: List of tuples (track_index, analysis_dict) for tracks that meet the threshold, sorted by score (descending)