Tomusic.AI-1
A lightweight Elixir library for interacting with the tomusic.ai API, providing tools for music analysis and generation. This package facilitates seamless integration with the tomusic.ai platform for Elixir applications.
Installation
Add tomusic_ai_1 to your list of dependencies in mix.exs:
elixir
def deps do
[
{:tomusic_ai_1, "~> 1.0.0"}] end
Then, run mix deps.get to fetch the dependencies.
Usage
Ensure you have configured your API key using application environment variables: elixir config :tomusic_ai_1, api_key: System.get_env("TOMUSIC_AI_API_KEY")
Here are some example usage scenarios:
1. Analyzing Music Structure: elixir alias TomusicAI1.Analysis
song_data = %{title: "My Song", artist: "Some Artist", audio_url: "http://example.com/song.mp3"}
case Analysis.analyze_structure(song_data) do {:ok, structure} ->
IO.puts "Song structure analysis successful:"
IO.inspect structure->
IO.puts "Error analyzing song structure: #{reason}"end
2. Generating a Melody based on Mood: elixir alias TomusicAI1.Generation
mood = "happy"
case Generation.generate_melody(mood) do {:ok, melody} ->
IO.puts "Generated melody:"
IO.inspect melody->
IO.puts "Error generating melody: #{reason}"end
3. Transcribing Audio to Sheet Music: elixir alias TomusicAI1.Transcription
audio_file_path = "/path/to/audio.wav"
case Transcription.transcribe(audio_file_path) do {:ok, sheet_music} ->
IO.puts "Transcription successful:"
IO.puts sheet_music->
IO.puts "Error transcribing audio: #{reason}"end
4. Using Pipes for Sequential Operations: elixir alias TomusicAI1.Analysis alias TomusicAI1.Generation
song_data = %{title: "Another Song", artist: "Another Artist", audio_url: "http://example.com/another_song.mp3"}
song_data |> Analysis.analyze_structure() |> case do {:ok, structure} ->
structure
|> Map.get(:key) # Example: Access the detected key
|> Generation.generate_melody() # Example: Generate melody based on key
|> IO.inspect()->
IO.puts "Error: #{reason}"end
5. Handling Different Error Scenarios: elixir alias TomusicAI1.Analysis
song_data = %{title: "Broken Song", artist: "Bad Artist", audio_url: "invalid_url"}
case Analysis.analyze_structure(song_data) do {:ok, structure} ->
IO.puts "Analysis successful (unexpectedly):"
IO.inspect structure->
IO.puts "Invalid URL provided."->
IO.puts "Tomusic.ai API is currently unavailable."->
IO.puts "An unknown error occurred: #{reason}"end
Feature Summary
- Music Structure Analysis: Analyze the structure of a given song based on audio data.
- Melody Generation: Generate melodies based on specified moods or parameters.
- Audio Transcription: Transcribe audio files into sheet music notation.
- Error Handling: Provides robust error handling for various API and data issues.
- Simple Integration: Easy to integrate into existing Elixir projects.
License
MIT
This package is part of the tomusic.ai-1 ecosystem. For advanced features and enterprise-grade tools, visit: https://tomusic.ai/