get_midi_info
Extract metadata and technical details from MIDI files to analyze musical structure, track information, and file properties for music production and analysis.
Instructions
Get midi file info
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| filePath | Yes | Absoulate File Path to midi file |
Implementation Reference
- src/main.ts:47-64 (handler)The core handler logic that loads the MIDI file using loadMidiFile, extracts header, track count, duration, and returns as JSON text content.withErrorHandling(({ filePath }) => { const midi = loadMidiFile(filePath) const midiInfo = { header: midi.header.toJSON(), tracksCount: midi.tracks.length, duration: midi.duration, durationTicks: midi.durationTicks, } return { content: [ { type: 'text', text: JSON.stringify(midiInfo), }, ] } })
- src/main.ts:44-46 (schema)Input schema for the tool, defining filePath as string with description.{ filePath: z.string().describe('Absoulate File Path to midi file'), },
- src/main.ts:42-65 (registration)Registration of the 'get_midi_info' tool using server.tool, including name, description, schema, and handler.'get_midi_info', 'Get midi file info', { filePath: z.string().describe('Absoulate File Path to midi file'), }, withErrorHandling(({ filePath }) => { const midi = loadMidiFile(filePath) const midiInfo = { header: midi.header.toJSON(), tracksCount: midi.tracks.length, duration: midi.duration, durationTicks: midi.durationTicks, } return { content: [ { type: 'text', text: JSON.stringify(midiInfo), }, ] } }) )
- src/utils/file-util.ts:5-9 (helper)Helper function to load a MIDI file from path using @tonejs/midi Midi class.export function loadMidiFile(filePath: string) { const midiData = fs.readFileSync(filePath) const midi = new Midi(midiData) return midi }