Skip to content

mage0535/Magicmusicwin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1 Commit
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🎡 MagicMusic β€” AI-Powered Music Creation Platform

Input music creation requirements and let 4 AI Agents automatically complete lyrics, composition, and arrangement.

Supports pop, rock, folk, electronic, and more music styles β€” style-agnostic.

English | δΈ­ζ–‡


πŸ“‹ Overview

Module Function Output
🎀 Magic (Director) Task assignment, Agent coordination, quality control Creation plan + progress tracking
πŸ“ Word (Lyricist) Lyrics creation, rhyme optimization, emotional expression Complete lyrics + structure analysis
🎼 Kiki (Composer) Melody creation, chord arrangement, rhythm design Numbered notation + chord charts
🎹 Cat (Arranger) Arrangement production, instrument selection, mixing suggestions Arrangement plan + MIDI files

πŸ“Έ Screenshots

MagicMusic Main Interface - Creation Input Form Figure 1: Music creation input form

Agent Collaboration Status - Real-time Progress Figure 2: Agent configuration

Lyrics Creation Result - Sentiment Analysis Figure 3: Lyrics creation and sentiment analysis

Numbered Notation Generation - Chord Arrangement Figure 4: Numbered notation and chord arrangement


πŸ—οΈ System Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                          Frontend                               β”‚
β”‚               Python + PyQt6 + Qt Widgets                       β”‚
β”‚                                                                 β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚Main Windowβ”‚ β”‚AgentStatus β”‚ β”‚ ScoreViewβ”‚ β”‚SettingsDialogβ”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚       β”‚  Agent Orchestration                                    β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚       β”‚                                                          β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚       β–Ό                     Backend                              β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”‚
β”‚  β”‚                  Orchestrator                            β”‚    β”‚
β”‚  β”‚                                                         β”‚    β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚    β”‚
β”‚  β”‚  β”‚                                                  β”‚   β”‚    β”‚
β”‚  β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”          β”‚   β”‚    β”‚
β”‚  β”‚  β”‚  β”‚ Magic   β”‚  β”‚  Word   β”‚  β”‚  Kiki   β”‚          β”‚   β”‚    β”‚
β”‚  β”‚  β”‚  β”‚Director β”‚  β”‚Lyricist β”‚  β”‚Composer β”‚          β”‚   β”‚    β”‚
β”‚  β”‚  β”‚  β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜          β”‚   β”‚    β”‚
β”‚  β”‚  β”‚       β”‚            β”‚            β”‚                β”‚   β”‚    β”‚
β”‚  β”‚  β”‚       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                β”‚   β”‚    β”‚
β”‚  β”‚  β”‚                    β”‚                             β”‚   β”‚    β”‚
β”‚  β”‚  β”‚                    β–Ό                             β”‚   β”‚    β”‚
β”‚  β”‚  β”‚          β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                      β”‚   β”‚    β”‚
β”‚  β”‚  β”‚          β”‚     Cat        β”‚ (depends on all)    β”‚   β”‚    β”‚
β”‚  β”‚  β”‚          β”‚   Arranger     β”‚                      β”‚   β”‚    β”‚
β”‚  β”‚  β”‚          β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                      β”‚   β”‚    β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚    β”‚
β”‚  β”‚                                                         β”‚    β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ AI Router ───────────────────────┐   β”‚    β”‚
β”‚  β”‚  β”‚ OpenAI β”‚ Anthropic β”‚ DeepSeek β”‚ Custom LLM      β”‚   β”‚    β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚    β”‚
β”‚  β”‚                                                         β”‚    β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ Services ────────────────────────┐   β”‚    β”‚
β”‚  β”‚  β”‚ MCP Manager β”‚ Skill Registry β”‚ Database          β”‚   β”‚    β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚    β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ“‚ Project Structure

MagicMusic/
β”œβ”€β”€ data/                            # Database files (created at runtime)
β”‚   └── magicmusic.db
β”œβ”€β”€ dist/                            # Build output
β”‚   └── MagicMusic.exe
β”œβ”€β”€ docs/
β”‚   β”œβ”€β”€ mcp-guide.md                # MCP usage guide
β”‚   └── api-setup.md                # API configuration guide
β”œβ”€β”€ static/
β”‚   └── Screenshot/
β”‚       β”œβ”€β”€ main_interface.png
β”‚       β”œβ”€β”€ agent_status.png
β”‚       β”œβ”€β”€ lyrics_result.png
β”‚       └── score_result.png
β”œβ”€β”€ agents/
β”‚   β”œβ”€β”€ __init__.py
β”‚   β”œβ”€β”€ base_agent.py               # Agent base class
β”‚   β”œβ”€β”€ orchestrator.py             # Orchestrator
β”‚   β”œβ”€β”€ magic.py                    # Director Agent
β”‚   β”œβ”€β”€ word.py                     # Lyricist Agent
β”‚   β”œβ”€β”€ kiki.py                     # Composer Agent
β”‚   └── cat.py                      # Arranger Agent
β”œβ”€β”€ ai/
β”‚   β”œβ”€β”€ __init__.py
β”‚   β”œβ”€β”€ ai_router.py                # AI router
β”‚   β”œβ”€β”€ llm_client.py               # LLM client
β”‚   └── providers/
β”‚       β”œβ”€β”€ openai_provider.py
β”‚       β”œβ”€β”€ anthropic_provider.py
β”‚       └── deepseek_provider.py
β”œβ”€β”€ core/
β”‚   β”œβ”€β”€ __init__.py
β”‚   └── music_theory.py             # Music theory utilities
β”œβ”€β”€ db/
β”‚   β”œβ”€β”€ __init__.py
β”‚   β”œβ”€β”€ database.py                 # Database management
β”‚   └── models.py                   # Data models
β”œβ”€β”€ memory/
β”‚   β”œβ”€β”€ __init__.py
β”‚   └── memory_manager.py           # Memory management
β”œβ”€β”€ skills/
β”‚   β”œβ”€β”€ __init__.py
β”‚   β”œβ”€β”€ skill_registry.py           # Skill registry
β”‚   β”œβ”€β”€ search_web.py               # Web search
β”‚   β”œβ”€β”€ read_url.py                 # URL reading
β”‚   └── compare_sources.py          # Source comparison
β”œβ”€β”€ mcp/
β”‚   β”œβ”€β”€ __init__.py
β”‚   β”œβ”€β”€ config.py                   # MCP configuration
β”‚   β”œβ”€β”€ client.py                   # MCP client
β”‚   β”œβ”€β”€ manager.py                  # MCP manager
β”‚   └── store.py                    # MCP storage
β”œβ”€β”€ ui/
β”‚   β”œβ”€β”€ __init__.py
β”‚   β”œβ”€β”€ main_window.py              # Main window
β”‚   └── admin/
β”‚       β”œβ”€β”€ api_config.py           # API configuration
β”‚       β”œβ”€β”€ agent_manager.py        # Agent management
β”‚       β”œβ”€β”€ skill_manager.py        # Skill management
β”‚       β”œβ”€β”€ mcp_manager.py          # MCP management
β”‚       └── memory_manager.py       # Memory management
β”œβ”€β”€ .gitignore
β”œβ”€β”€ main.py                         # Program entry
β”œβ”€β”€ README.md                       # This document (English)
β”œβ”€β”€ README.zh-CN.md                 # Chinese documentation
β”œβ”€β”€ RELEASE_NOTES_v1.0.0.md         # Release notes
└── requirements.txt                # Python dependencies

πŸ› οΈ Tech Stack

Layer Technology Version
Frontend Python + PyQt6 3.14+ / 6.x
Backend Python + SQLite 3.14+ / 3.x
AI Integration OpenAI Compatible API Multiple
Build PyInstaller 6.19.0
Database SQLite3 Built-in

πŸš€ Quick Start

Download and Run

# 1. Download executable
# Visit https://github.com/YOUR_USERNAME/MagicMusic/releases/latest
# Download MagicMusic.exe

# 2. Double-click to run
MagicMusic.exe

# 3. Configure AI service
# Settings β†’ AI Service Configuration β†’ Add provider information

Run from Source

# 1. Clone repository
git clone https://github.com/YOUR_USERNAME/MagicMusic.git
cd MagicMusic

# 2. Install dependencies
pip install -r requirements.txt

# 3. Run program
python main.py

Main Interface: Desktop application (no port)


πŸ“‘ API Configuration Example

Configuration Steps:

  1. Click menu Settings β†’ AI Service Configuration
  2. Click "Add Provider"
  3. Fill in information:
Provider Name: Kimi-K2.5
Usage Type: LLM - Text Generation
API URL: https://api.moonshot.cn/v1
Model: kimi-k2.5
API Key: sk-xxxxxxxxxxxxxxxx
  1. Click "Test" to verify configuration
  2. Configuration is automatically saved

Supported AI Providers:

  • βœ… Kimi (Moonshot AI)
  • βœ… DeepSeek
  • βœ… Qwen (Alibaba Cloud)
  • βœ… ERNIE Bot (Baidu)
  • βœ… Any OpenAI compatible API

🎡 Creation Workflow

1. Input Requirements

Create a pop song about "Spring"
Target audience: Young people
Emotional tone: Warm, hopeful
Tempo: Moderate

2. Agent Collaboration

Magic (Director) β†’ Analyze requirements, assign tasks
    ↓
Word (Lyricist) β†’ Create lyrics (verse + chorus)
    ↓
Kiki (Composer) β†’ Create melody (notation + chords)
    ↓
Cat (Arranger) β†’ Arrangement production (MIDI + instruments)

3. Output Results

βœ… Complete lyrics (with structure analysis)
βœ… Numbered notation (with chord markings)
βœ… MIDI files
βœ… Arrangement plan

πŸ“Š Data Models

AI Service Configuration Table (api_providers)

CREATE TABLE api_providers (
    id              INTEGER PRIMARY KEY,
    name            TEXT NOT NULL UNIQUE,
    provider_type   TEXT NOT NULL DEFAULT 'llm',
    config          TEXT NOT NULL DEFAULT '{}',
    enabled         INTEGER NOT NULL DEFAULT 1,
    created_at      TEXT NOT NULL DEFAULT (datetime('now'))
);

MCP Configuration Table (mcp_configs)

CREATE TABLE mcp_configs (
    id              INTEGER PRIMARY KEY,
    name            TEXT NOT NULL UNIQUE,
    transport_type  TEXT NOT NULL DEFAULT 'stdio',
    command         TEXT,
    url             TEXT,
    enabled         INTEGER NOT NULL DEFAULT 1
);

πŸ”Œ MCP Plugin System

Plugin Type Status Description
stdio βœ… Local process communication
http βœ… HTTP API calls
websocket βœ… WebSocket bidirectional communication

Configuration Example:

{
  "name": "github_mcp",
  "transport_type": "stdio",
  "command": "npx",
  "args": ["@modelcontextprotocol/server-github"]
}

πŸ“ˆ Version Roadmap

Version Status Focus
v0.0.1 βœ… Project skeleton + basic Agents
v0.1.0 βœ… MCP manager + UI interface
v1.0.0 βœ… Complete features + configuration persistence
v1.1.0 πŸ”œ More music style support
v1.5.0 πŸ“‹ MIDI export + audio generation
v2.0.0 πŸ“‹ Historical project library + industry benchmarks

πŸ“„ License

Copyright Β© 2026 Magic&Kiki. All rights reserved.


🎯 Core Features

AI Agent System

  • Magic (Director): Task assignment, progress tracking, quality control
  • Word (Lyricist): Lyrics creation, rhyme optimization, sentiment analysis
  • Kiki (Composer): Melody generation, chord arrangement, rhythm design
  • Cat (Arranger): Arrangement production, instrument selection, MIDI generation

MCP Manager

  • Complete external tool integration support
  • Supports STDIO/HTTP/WebSocket transport
  • Graphical configuration interface
  • Instant save and load

Skill System

  • Pluggable skill architecture
  • Web search, URL reading, source comparison
  • Skill registration and management
  • Dynamic loading and unloading

Data Persistence

  • Local SQLite database
  • AI service configuration instant save
  • MCP configuration instant save
  • Configuration persists after restart

🀝 Development Team

  • Development: Magic&Kiki
  • Technical Support: Python + PyQt6

πŸ“– Documentation

❓ FAQ

Q: Do I need to install Python?

A: No! The packaged exe file is standalone and requires no dependencies.

Q: Will configuration be lost?

A: No. All configurations are saved to the local database and automatically loaded on restart.

Q: Which AI providers are supported?

A: All OpenAI compatible API providers, such as Kimi, DeepSeek, Qwen, etc.

Q: How do I report issues?

A: Please submit issues in GitHub Issues and we'll handle them promptly.


Current Version: 1.0.0
Last Updated: 2026-04-08
Status: βœ… Stable

About

AI-Powered Music Creation Platform

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages