get_midi_info
Extract and retrieve detailed information from MIDI files by providing the absolute file path. Use this tool to analyze MIDI file structure, tracks, and metadata for efficient file management and processing.
Instructions
Get midi file info
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| filePath | Yes | Absoulate File Path to midi file |
Input Schema (JSON Schema)
{
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"filePath": {
"description": "Absoulate File Path to midi file",
"type": "string"
}
},
"required": [
"filePath"
],
"type": "object"
}
Implementation Reference
- src/main.ts:41-65 (registration)Registration of the 'get_midi_info' tool using server.tool, including description, input schema, and inline handler wrapped with error handling.server.tool( '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/main.ts:47-64 (handler)The core handler function for get_midi_info: loads MIDI file, extracts header, track count, durations, 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: requires absolute filePath as string.{ filePath: z.string().describe('Absoulate File Path to midi file'), },
- src/utils/file-util.ts:5-9 (helper)Helper function loadMidiFile used in the handler to parse the MIDI file from disk using @tonejs/midi.export function loadMidiFile(filePath: string) { const midiData = fs.readFileSync(filePath) const midi = new Midi(midiData) return midi }