Skip to main content
Glama

edit_notes

Modify note properties like lyrics, timing, and pitch in Synthesizer V AI vocal tracks to adjust vocal performances.

Instructions

Edit one or more notes

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
trackIdYesID of the track
notesYesArray of notes to edit

Implementation Reference

  • Handler for the 'edit_notes' MCP tool. Validates trackId and notes array, maps note properties to numbers/strings, executes the 'edit_notes' command via file-based IPC to Synthesizer V Studio Lua script, and returns success message or error.
    case "edit_notes": {
      const args = request.params.arguments as any;
      const trackId = Number(args.trackId);
    
      if (isNaN(trackId)) {
        return {
          content: [{
            type: "text",
            text: "Error: Invalid track ID"
          }],
          isError: true
        };
      }
    
      if (!Array.isArray(args.notes) || args.notes.length === 0) {
        return {
          content: [{
            type: "text",
            text: "Error: No notes provided"
          }],
          isError: true
        };
      }
    
      const result = await executeCommand("edit_notes", {
        trackId,
        notes: args.notes.map((note: any) => ({
          id: Number(note.id),
          lyrics: note.lyrics && String(note.lyrics),
          startTime: note.startTime && Number(note.startTime),
          duration: note.duration && Number(note.duration),
          pitch: note.pitch && Number(note.pitch)
        }))
      });
    
      if (result.error) {
        return {
          content: [{
            type: "text",
            text: `Error: ${result.error}`
          }],
          isError: true
        };
      }
    
      return {
        content: [{
          type: "text",
          text: result.message || `${args.notes.length} notes edited successfully`
        }]
      };
    }
  • src/index.ts:331-373 (registration)
    Registration of the 'edit_notes' tool in the ListToolsRequestSchema handler, including name, description, and detailed input schema defining trackId and array of notes with required id and optional lyrics, startTime, duration, pitch.
      name: "edit_notes",
      description: "Edit one or more notes",
      inputSchema: {
        type: "object",
        properties: {
          trackId: {
            type: "string",
            description: "ID of the track"
          },
          notes: {
            type: "array",
            description: "Array of notes to edit",
            items: {
              type: "object",
              properties: {
                id: {
                  type: "number",
                  description: "The ID of the note"
                },
                lyrics: {
                  type: "string",
                  description: "Lyrics text for the note"
                },
                startTime: {
                  type: "number",
                  description: "Start time in ticks"
                },
                duration: {
                  type: "number",
                  description: "Duration in ticks"
                },
                pitch: {
                  type: "number",
                  description: "MIDI pitch (0-127)"
                }
              },
              required: ["id"]
            }
          }
        },
        required: ["trackId", "notes"]
      }
    },
  • Generic helper function used by all tools, including 'edit_notes', to serialize command to JSON file and poll for response from Synthesizer V Studio Lua script.
    async function executeCommand(action: string, params: any = {}): Promise<any> {
      const command = {
        action,
        ...params
      };
    
      await writeCommand(command);
      return await readResponse();
    }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ocadaruma/mcp-svstudio'

If you have feedback or need assistance with the MCP directory API, please join our Discord server