MyGo 云音乐
Go와 MyGo로 만든 서드파티 네이버 클라우드 뮤직 데스크톱 클라이언트
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기A multi-engine step sequencer that runs entirely in the browser. No installs, no plugins — open a tab and build a track from synthesis engines, drum machines, analog-mono emulations, samples, and live Web MIDI, then share the whole session as a single link.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A multi-engine step sequencer that runs entirely in the browser. No installs, no
plugins — open a tab and build a track from synthesis engines, drum machines,
analog-mono emulations, wavetables, samples, and live Web MIDI, then save it to
your account or share the whole session as a single link.README 전문 보기 ↗A multi-engine step sequencer that runs entirely in the browser. No installs, no plugins: open a tab and build a track from synthesis engines, drum machines, circuit models, wavetables, samples and live Web MIDI, then save it to your account, share it as a link, jam on it with friends in real time, write it as live code, or ask an agent to write parts of it for you.
Live: https://www.playseqbaby.com · Manual: https://www.playseqbaby.com/manual · Repo: https://github.com/mjoslyn/seqbaby
A 32-pattern step sequencer with a deep per-track signal chain. Every track can drive any of 50+ sound sources and carries its own filter (native or one of eight analog-modeled characters), envelope, 5-band EQ, compressor with sidechain, a reorderable 17-stage effect rack, an LFO matrix and per-step automation. Patterns repeat or chain into songs, can be locked to their own sound per pattern, bounced to WAV, played from the computer keyboard or driven by vim keys, written as Strudel code, and saved to a Supabase-backed account with a full version tree.
The audio engine is ~80 hand-written, dependency-free vanilla ES modules talking
to the Web Audio API, with no bundler: edit a file, reload. It is wrapped in a
thin Next.js + React shell that owns routing, auth, accounts, the public
site, sharing, the compose panel and the jam room. The two meet only through
window.seqbaby.
voice → filter → eq → compressor → fx rack → master (or an fx bus) → limiter → out
fat, crisp, squelch, edge, poly, velvet, scream,
growl) built as ladder and SVF worklets with the saturator inside the
feedback path. ADSR filter envelope.The code button opens a drawer with the song written as Strudel: every
sound is a track, mini-notation is read as a real pattern query (so <a <b c>>
and hh*<2 4> work), and ctrl/⌘-Enter runs the code into the running song
without stopping it. Constant controls set knobs, varying ones become
automation lanes, signals become synced LFOs, and seqbaby's own instruments and
controls have names of their own (s("silverbox"), .knob(), .fx(),
.lfo(), .aut()). The pattern bank is in the code as sections, p-lock is
.lock(), and a portable export opens on strudel.cc. No eval: a small parser
reads the JavaScript Strudel is written in, and whatever it cannot support is
listed rather than dropped.
hjkl, counts, x o r dd yy p ., :k cutoff 0.4, :fx delay), with a
knob navigator that picks controls spatially and turns them from the
trackpad./): a toy sequencer, the songs people have published ranked
by likes and freshness, who made them, and the newest public patches, each
with a play button that drives the real engine in a hidden frame./songs (search, sort, filter by bpm and instruments),
/people (filter by tempo, instruments and what they make) and /patches,
all loaded once and filtered in the browser with the query in the URL./u/<name> with a 16x16 step-grid avatar you draw (or that
your name generates), remix buttons, and hearts on songs and patches./manual and a bug page at /superbugs that opens a
GitHub issue without needing an account.new);
the first save from it makes a new song.basement squelch).?s=<slug>) for published songs and anonymous quick shares,
with link previews that name the song and who shared it.?jam=<room>): several studios holding one song over Supabase
Realtime. Edits travel as small diffs and merge into the running engine
without stopping playback; a peer's edit is an undo step in their name and
draws a border in their colour on the control they touched. Play presses
land on a shared beat phase.The repo ships an MCP server (npm run mcp, or
npx -y github:mjoslyn/seqbaby with no clone) that exposes the song format as
38 tools: add a track, spell its rhythm as a step string (x..X.o_.), set its
sound, put an LFO on the filter, turn on a euclidean or chance generator, write
a part as Strudel code, audition it in headless Chromium and read the meters,
then export the JSON or post it for a share link. Every call is validated
against the same tables the engine uses, and refusals name the valid choices.
A compose skill (.claude/skills/compose/SKILL.md, also served as
seqbaby://guide) tells the agent which engine to reach for and how each likes
to be played. .mcp.json wires it up for Claude Code. The in-studio compose
panel runs the same tools.
| Layer | Choice |
|---|---|
| Shell / routing / auth | Next.js 15 (App Router) + React 19 |
| Audio engine | Vanilla ES modules + Web Audio API + AudioWorklets, Tone.js 15 (vendored) |
| Synthesis | @vectorsize/woscillators (Plaits WASM) plus hand-written worklet DSP |
| Accounts + data | Supabase (Postgres, Auth, Row-Level Security, Realtime for jams) |
| Compose | Anthropic API, run in a Netlify background function |
| Anonymous sharing | Netlify Blobs (in-memory fallback in dev) |
| Agent tooling | MCP server over stdio, Playwright for auditions |
| Optional | PostHog analytics, Cloudflare Turnstile and a GitHub token for the bug page |
| Deploy | Netlify (@netlify/plugin-nextjs, Node 22); push to main deploys |
Boot. The studio route (/studio) server-renders the engine's static DOM
(app/studioMarkup.ts) and the engine script tags
(app/EngineScripts.tsx): Tone → woscillators.js →
js/main.js. EnginePreload.tsx emits
modulepreload hints for every module so the 8-deep import graph arrives in
parallel, and a raw-markup preloader with measured
progress covers the gap. On a client-side navigation
ScriptLoader.tsx injects the same scripts in order.
Production deploys publish engine assets under a per-commit path
(public/e/<sha>/) so they can be cached as immutable.
Engine. A single Tone.getTransport().scheduleRepeat at a 16th-note grid
drives everything. Each tick, every track advances by its own speed, runs its
automation, asks stepSource.js what the step plays (written pattern, euclid
ring or chance generator), expands chords and arps, applies swing and
micro-timing, fires the filter envelope and triggers its voice. Voices share one
interface (hit / setParam / getAudioParam / setEngine / getOutputNode / silence / dispose), so transport, modulation and UI stay engine-agnostic. The
worklet instruments and the worklet fx stages (crusher, reverb, prism, repeat,
the analog filter models) all follow one file shape: the processor source as a
string, registered from a Blob URL, with a Tone.js fallback so a track is never
silent.
Session format. serializeSet / applySet (session.js) are the song. One
more path writes that same format onto a running engine without stopping it:
mergeSet (liveSet.js), shared by undo, the compose audition, jam patches and
the code drawer. The format's tables and validators (engineData.js,
soundDefaults.js, theoryData.js, constants.js, sessionFormat.js,
chanceGen.js, historyStore.js, jamSync.js, songBuilder.js,
miniNotation.js, strudel.js) import nothing browser-side, which is what
lets node --test and the MCP server run them. The same goes for each worklet
processor, which is why the engines have measured tests rather than described
behaviour.
Shell. Supabase server actions under app/*/actions.ts handle songs,
versions, templates, patches, profiles and accounts; the public feeds
(app/home/feed.ts, app/songs/exploreFeed.ts, app/people/peopleFeed.ts)
read with an anonymous client so the pages stay cached. middleware.ts
refreshes the auth session on every request except engine assets. The compose
panel (ComposeChat.tsx), jam room (JamPanel.tsx) and patch bay
(PatchBay.tsx) talk to the engine only through window.seqbaby (typed in
app/seqbaby.d.ts).
See CLAUDE.md for the detailed tour: module map, data model,
each engine's design notes, timing rules and the load-bearing audio-unlock
behaviour.
npm install
npm run dev # Next.js dev server → http://localhost:3000 (studio at /studio)
The engine itself needs no env, but the Next pages need a Supabase URL and anon
key to render at all: copy .env.example and set NEXT_PUBLIC_SUPABASE_URL
and NEXT_PUBLIC_SUPABASE_ANON_KEY (any syntactically valid pair gets the
studio up without a project; account features then fail and the studio plays).
Compose on the site's key needs ANTHROPIC_API_KEY; with your own key pasted
into the panel it needs nothing. PostHog, Turnstile and the bug page's GitHub
token are optional and off when unset.
npm run build && npm run start # production build + serve
npm run netlify:dev # full Netlify emulation (functions + Next) on :8888
npm run legacy:dev # pre-Next static Node server on :5173 (engine only)
npm test # node --test over the pure engine modules, every worklet, and lib/
npm run test:rls # Supabase RLS policy tests in a throwaway Postgres (docker)
npm run mcp # the MCP server on stdio
The engine has no build step: edit files under public/js/ and reload. The
React shell hot-reloads via next dev. Adding a module to public/js/ means
adding it to the preload list in app/engineAssets.ts (the file's comment has
the one-liner).
app/ Next.js App Router: shell, auth, account UI, public site, server actions
page.tsx + home/ the homepage: toy sequencer, feed, people, patches, ranking
studio/page.tsx the studio at /studio: SSRs engine DOM, boots engine, AccountBar
songs/ people/ patches/ the explorers, their pure filter/sort modules, and the songs/patches actions
manual/ superbugs/ the manual, and the bug page that opens a GitHub issue
login/ settings/ u/[username]/ reset-password/ auth, settings (profile, avatar editor, patch manager), profiles
studioMarkup.ts the engine's static DOM skeleton (hexop/guitar/.../oracle panels generated)
EngineScripts / EnginePreload / ScriptLoader / Preloader engine boot
AccountBar / SongsMenu / SaveButton / PatchBay / NewSongButton / VersionTree / LikeButton / RemixButton
ComposeChat.tsx the compose panel and its review bar
JamPanel.tsx jam room: presence, Realtime channel, invite link
enginePlayer.ts + PlayButton.tsx play a listed song with the real engine in a hidden frame
shareCard.ts + shareCopy.js + api/og/ link previews and their image cards
api/share/ api/patch/[id]/ api/compose/ api/bugs/ share endpoint, patch config, compose job + status, bug reports
{songs,patches,profile,auth,account}/actions.ts Supabase server actions
public/
js/ the engine: ~80 dependency-free ES modules (12 worklet instruments,
4 worklet fx stages, the filter models, the Strudel reader, the song builder)
js/data/cmudict.txt the vox's pronouncing dictionary, fetched on demand
tone.js woscillators.js vendored Tone.js, Plaits WASM port
samples/ the acoustic kits (salamander, virtuosity, drskit)
wavetables/akwf/ bundled AKWF wavetables (CC0)
style.css icons/ manifest.webmanifest
lib/
supabase/ Supabase SSR helpers
composeModels / composeKey / composeJobs compose model, key handling, jobs + limits
jamWire.js splits jam messages to fit the broadcast cap
api.js legacy Netlify Blobs share store
mcp/ MCP server, tool definitions, the compose turn loop, headless audition
netlify/functions/ compose-background worker, legacy share wrapper
supabase/migrations/ profiles, songs, patches, versions, templates, chats, previews, likes, avatars
supabase/tests/ negative RLS tests
scripts/ asset stamping, app icons, drum kit rendering, the vox dictionary, RLS runner
test/ node --test suites (format, generators, every worklet, Strudel, the explorers)
.claude/skills/ compose (the agent's guide) and verify (driving the app to check a change)
OfflineAudioContext, which the Plaits WASM voice doesn't support.?vlat= to
calibrate).Personal project. Plaits synthesis models originate from Mutable Instruments
(open-source hardware); Tone.js is MIT-licensed. The hexop's algorithm table is
decoded from Dexed (Apache 2.0). The bundled wavetables are from
AKWF, Adventure Kid Waveforms
by Kristoffer Karl Axel Ekstrand, released under CC0-1.0 (see
public/wavetables/akwf/ATTRIBUTION.md).
The acoustic drum kits are rendered from Salamander (CC BY-SA 3.0), Virtuosity
(CC0) and DRSKit (CC BY 4.0); scripts/make-drum-kits.mjs records which file
each hit came from. The vox's pronouncing dictionary is CMUdict (BSD), with its
notice at the top of public/js/data/cmudict.txt.