load
Load audio files for analysis by extracting time series data with optional offset and duration parameters.
Instructions
Loads an audio file and returns the path to the audio time series Offset and duration are optional, in seconds. Be careful, you will never know the name of the song.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"file_path": "<file_path>"
},
"name": "load"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| offset | No | ||
| duration | No |
Implementation Reference
- src/mcp_music_analysis/server.py:27-60 (handler)The main handler for the 'load' MCP tool. Decorated with @mcp.tool(), it loads an audio file using librosa.load, saves the time series y to a CSV file in temp dir, computes STFT and HPSS but only returns the path to y CSV.
@mcp.tool() def load( file_path: str, offset: float = 0.0, duration: float = None, ) -> dict: """ Loads an audio file and returns the path to the audio time series Offset and duration are optional, in seconds. Be careful, you will never know the name of the song. """ y, sr = librosa.load(path=file_path, offset=offset, duration=duration) # stock y inside a csv file name = file_path.split("/")[-1].split(".")[0] + "_y" y_path = os.path.join(tempfile.gettempdir(), name + ".csv") np.savetxt(y_path, y, delimiter=";") D = librosa.stft(y) harmonics, percussion = librosa.decompose.hpss(D) # Save the harmonic and percussive components to separate files # name_harmonic = file_path.split("/")[-1].split(".")[0] + "_harmonic" # name_percussive = file_path.split("/")[-1].split(".")[0] + "_percussive" # harmonic_path = os.path.join(tempfile.gettempdir(), name_harmonic + ".csv") # percussive_path = os.path.join(tempfile.gettempdir(), name_percussive + ".csv") # np.savetxt(harmonic_path, harmonics, delimiter=";") # np.savetxt(percussive_path, percussion, delimiter=";") return { "y_path": y_path, # "y_harmonic_path": harmonic_path, # "y_percussive_path": percussive_path, }