Initial commit: AbletonMCP-AI complete system

- MCP Server with audio fallback, sample management
- Song generator with bus routing
- Reference listener and audio resampler
- Vector-based sample search
- Master chain with limiter and calibration
- Fix: Audio fallback now works without M4L
- Fix: Full song detection in sample loader

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
renato97
2026-03-28 22:53:10 -03:00
commit 6ec8663954
120 changed files with 59101 additions and 0 deletions

View File

@@ -0,0 +1,163 @@
services:
postgres:
image: postgres:16-alpine
container_name: abletonmcp-postgres
restart: unless-stopped
environment:
POSTGRES_USER: ${POSTGRES_USER:-postgres}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-changeme}
POSTGRES_DB: ${POSTGRES_BOOTSTRAP_DB:-postgres}
PGDATA: /var/lib/postgresql/data/pgdata
GITEA_DB_NAME: ${GITEA_DB_NAME:-gitea}
N8N_DB_NAME: ${N8N_DB_NAME:-n8n}
volumes:
- postgres-data:/var/lib/postgresql/data
- ./initdb:/docker-entrypoint-initdb.d:ro
ports:
- "${POSTGRES_PORT:-5432}:5432"
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-postgres} -d ${POSTGRES_BOOTSTRAP_DB:-postgres}"]
interval: 10s
timeout: 5s
retries: 5
start_period: 20s
networks:
- internal
redis:
image: redis:7-alpine
container_name: abletonmcp-redis
restart: unless-stopped
command:
- redis-server
- --requirepass
- ${REDIS_PASSWORD:-changeme}
- --appendonly
- "yes"
- --save
- "60"
- "1000"
volumes:
- redis-data:/data
ports:
- "${REDIS_PORT:-6379}:6379"
healthcheck:
test: ["CMD-SHELL", "redis-cli -a ${REDIS_PASSWORD:-changeme} ping | grep -q PONG"]
interval: 10s
timeout: 5s
retries: 5
start_period: 10s
networks:
- internal
gitea:
image: gitea/gitea:1.21-rootless
container_name: abletonmcp-gitea
restart: unless-stopped
environment:
USER_UID: 1000
USER_GID: 1000
GITEA__database__DB_TYPE: postgres
GITEA__database__HOST: postgres:5432
GITEA__database__NAME: ${GITEA_DB_NAME:-gitea}
GITEA__database__USER: ${POSTGRES_USER:-postgres}
GITEA__database__PASSWD: ${POSTGRES_PASSWORD:-changeme}
GITEA__server__DOMAIN: ${GITEA_DOMAIN:-localhost}
GITEA__server__ROOT_URL: ${GITEA_ROOT_URL:-http://localhost:3000}
GITEA__server__HTTP_PORT: 3000
GITEA__server__SSH_DOMAIN: ${GITEA_SSH_DOMAIN:-localhost}
GITEA__server__SSH_PORT: ${GITEA_SSH_PORT:-222}
GITEA__server__START_SSH_SERVER: "true"
GITEA__server__SSH_LISTEN_PORT: 222
GITEA__security__INSTALL_LOCK: ${GITEA_SECURITY_INSTALL_LOCK:-true}
GITEA__service__DISABLE_REGISTRATION: "true"
GITEA__server__OFFLINE_MODE: ${GITEA_OFFLINE_MODE:-true}
volumes:
- gitea-data:/var/lib/gitea
- gitea-config:/etc/gitea
- gitea-logs:/var/log/gitea
ports:
- "${GITEA_HTTP_PORT:-3000}:3000"
- "${GITEA_SSH_PORT:-222}:222"
healthcheck:
test: ["CMD-SHELL", "wget -q --spider http://localhost:3000/api/healthz || exit 1"]
interval: 15s
timeout: 5s
retries: 10
start_period: 45s
depends_on:
postgres:
condition: service_healthy
networks:
- internal
n8n:
image: n8nio/n8n:latest
container_name: abletonmcp-n8n
restart: unless-stopped
environment:
DB_TYPE: postgresdb
DB_POSTGRESDB_HOST: postgres
DB_POSTGRESDB_PORT: 5432
DB_POSTGRESDB_DATABASE: ${N8N_DB_NAME:-n8n}
DB_POSTGRESDB_USER: ${POSTGRES_USER:-postgres}
DB_POSTGRESDB_PASSWORD: ${POSTGRES_PASSWORD:-changeme}
N8N_PORT: 5678
N8N_PROTOCOL: http
N8N_HOST: ${N8N_HOST:-localhost}
N8N_PATH: ${N8N_PATH:-/}
N8N_ENCRYPTION_KEY: ${N8N_ENCRYPTION_KEY:-changeme-change-this}
N8N_LOG_LEVEL: ${N8N_LOG_LEVEL:-info}
N8N_EXECUTIONS_MODE: ${N8N_EXECUTIONS_MODE:-regular}
N8N_BASIC_AUTH_ACTIVE: ${N8N_BASIC_AUTH_ACTIVE:-true}
N8N_BASIC_AUTH_USER: ${N8N_BASIC_AUTH_USER:-admin}
N8N_BASIC_AUTH_PASSWORD: ${N8N_BASIC_AUTH_PASSWORD:-changeme}
N8N_COOKIE_POLICY: ${N8N_COOKIE_POLICY:-lax}
N8N_HOST_ALLOW_LIST: ${N8N_HOST_ALLOW_LIST:-localhost,127.0.0.1}
N8N_WEBHOOK_URL: ${N8N_WEBHOOK_URL:-http://localhost:5678/}
N8N_EDITOR_BASE_URL: ${N8N_EDITOR_BASE_URL:-http://localhost:5678}
GENERIC_TIMEZONE: ${TZ:-UTC}
TZ: ${TZ:-UTC}
N8N_DIAGNOSTICS_ENABLED: ${N8N_DIAGNOSTICS_ENABLED:-false}
N8N_VERSION_NOTIFICATIONS_ENABLED: ${N8N_VERSION_NOTIFICATIONS_ENABLED:-false}
volumes:
- n8n-data:/home/node/.n8n
- n8n-logs:/home/node/.npm/_logs
- ${PROJECT_PATH:-/mnt/c/ProgramData/Ableton/Live 12 Suite/Resources/MIDI Remote Scripts/AbletonMCP_AI}:/project:rw
- ${PROJECT_PATH:-/mnt/c/ProgramData/Ableton/Live 12 Suite/Resources/MIDI Remote Scripts/AbletonMCP_AI}/automation/workflows:/workflows:ro
ports:
- "${N8N_PORT:-5678}:5678"
healthcheck:
test: ["CMD-SHELL", "wget -q --spider http://localhost:5678/healthz || exit 1"]
interval: 15s
timeout: 5s
retries: 10
start_period: 45s
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
networks:
- internal
networks:
internal:
name: abletonmcp-network
driver: bridge
volumes:
postgres-data:
name: abletonmcp-postgres-data
gitea-data:
name: abletonmcp-gitea-data
gitea-config:
name: abletonmcp-gitea-config
gitea-logs:
name: abletonmcp-gitea-logs
redis-data:
name: abletonmcp-redis-data
n8n-data:
name: abletonmcp-n8n-data
n8n-logs:
name: abletonmcp-n8n-logs