🎹 AI Global Arranger Studio

Record your melody · Choose a style · Generate a 30-second AI arrangement with narrated poetry · Download free

Waiting for your creation...
High-Fidelity 30s Production Mode

About Music Maker – AI Global Arranger Studio

Music Maker is a free, browser-based music composition tool created by Charlie Shine, Ph.D., Brain Scientist at brains4goodlife.com. It requires no installation and works entirely offline once loaded.

Play any melody on the virtual piano keyboard, choose from 12 orchestral style presets (Grand Piano, Epic Strings, Pipe Organ, Deep Cello, Magical Celesta, Dreamy Jazz, Vintage Rhodes, Cyber Techno, 8-Bit Game, Zen Meditation, Galaxy Pad, Morning Sun), then click Arrange & Narrate to produce a polished 30-second AI arrangement looped from your recording. The app simultaneously generates and recites a unique English poem matched to the mood of your melody.

When done, download a ZIP package containing your composition as a WAV audio file and a self-contained HTML player — ready to share or use offline.

Key Features

`; zip.file(`${autoTitle}.html`, h); zip.generateAsync({ type: "blob" }).then(b => { const a = document.createElement('a'); a.href = URL.createObjectURL(b); a.download = `${autoTitle}.zip`; a.click(); }); }; }; // ── Build piano keyboard ── const pianoDiv = document.getElementById('piano'); allNotes.forEach(n => { const k = document.createElement('div'); k.className = `key ${n.includes('#') ? 'black' : 'white'}`; k.setAttribute('aria-label', `Piano key ${n}`); k.setAttribute('role', 'button'); k.setAttribute('tabindex', '0'); k.onmousedown = () => noteOn(n); k.onmouseup = () => noteOff(n); k.onmouseleave = () => noteOff(n); k.ontouchstart = e => { e.preventDefault(); noteOn(n); }; k.ontouchend = e => { e.preventDefault(); noteOff(n); }; k.onkeydown = e => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); noteOn(n); } }; k.onkeyup = e => { if (e.key === 'Enter' || e.key === ' ') noteOff(n); }; pianoDiv.appendChild(k); }); document.getElementById('volSlider').oninput = e => { document.getElementById('audioPlayer').volume = e.target.value; };