extract_key_bpm
Analyze audio files to identify musical key and tempo (BPM), providing essential metadata for music production and analysis.
Instructions
Extract musical key and BPM (tempo) from audio
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| audio_url | Yes | URL of the audio file to analyze | |
| webhook_url | No | URL for callback upon completion |
Implementation Reference
- src/index.ts:1230-1248 (handler)The main handler function for the 'extract_key_bpm' tool. Validates input, makes an HTTP POST request to the external API endpoint '/extract_key_bpm', and returns the API response containing task information.
private async handleExtractKeyBpm(args: any) { if (!args.audio_url) { throw new McpError(ErrorCode.InvalidParams, "audio_url is required"); } const response = await this.axiosInstance.post("/extract_key_bpm", { audio_url: args.audio_url, webhook_url: args.webhook_url, }); return { content: [ { type: "text", text: `Key and BPM extraction started!\n\n${JSON.stringify(response.data, null, 2)}\n\nUse get_conversion_by_id with the task_id to check the status.`, }, ], }; } - src/index.ts:543-560 (registration)Tool registration in the TOOLS array, including name, description, and input schema. This array is returned by the ListTools request handler.
{ name: "extract_key_bpm", description: "Extract musical key and BPM (tempo) from audio", inputSchema: { type: "object" as const, properties: { audio_url: { type: "string", description: "URL of the audio file to analyze", }, webhook_url: { type: "string", description: "URL for callback upon completion", }, }, required: ["audio_url"], }, }, - src/index.ts:715-716 (helper)Dispatch case in the main tool execution switch statement that routes calls to the 'extract_key_bpm' handler.
case "extract_key_bpm": return await this.handleExtractKeyBpm(args); - src/index.ts:546-559 (schema)Input schema definition for the 'extract_key_bpm' tool, specifying parameters and validation.
inputSchema: { type: "object" as const, properties: { audio_url: { type: "string", description: "URL of the audio file to analyze", }, webhook_url: { type: "string", description: "URL for callback upon completion", }, }, required: ["audio_url"], },