jdxi_editor.devel.analyze_drum_track ==================================== .. py:module:: jdxi_editor.devel.analyze_drum_track .. autoapi-nested-parse:: Analyze a MIDI file to identify the drum track. This script uses multiple heuristics to determine which track is the drum track: 1. MIDI Channel 9 (standard GM drum channel) 2. Track name containing drum-related keywords 3. Note patterns (drum range, note density, polyphony) 4. Lack of pitch bend/control changes Attributes ---------- .. autoapisummary:: jdxi_editor.devel.analyze_drum_track.DRUM_NOTE_MIN jdxi_editor.devel.analyze_drum_track.DRUM_NOTE_MAX jdxi_editor.devel.analyze_drum_track.DRUM_KEYWORDS jdxi_editor.devel.analyze_drum_track.midi_file_path Functions --------- .. autoapisummary:: jdxi_editor.devel.analyze_drum_track.analyze_track_for_drums jdxi_editor.devel.analyze_drum_track.find_drum_track 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:: find_drum_track(midi_file_path: str) -> Optional[Tuple[int, dict]] Analyze a MIDI file and return the most likely drum track. Returns: (track_index, analysis_dict) or None if file can't be analyzed .. py:data:: midi_file_path