{"id":49394729,"url":"https://github.com/ashref-dev/nes-daw","last_synced_at":"2026-04-28T15:02:59.343Z","repository":{"id":337128232,"uuid":"1152433037","full_name":"Ashref-dev/nes-daw","owner":"Ashref-dev","description":"Browser-based NES Digital Audio Workstation with Mega Man-style chiptune synthesis","archived":false,"fork":false,"pushed_at":"2026-03-20T04:57:04.000Z","size":564,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-20T21:17:01.579Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://nes-daw.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Ashref-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-07T21:40:24.000Z","updated_at":"2026-03-20T05:00:15.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Ashref-dev/nes-daw","commit_stats":null,"previous_names":["ashref-dev/nes-daw"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Ashref-dev/nes-daw","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ashref-dev%2Fnes-daw","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ashref-dev%2Fnes-daw/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ashref-dev%2Fnes-daw/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ashref-dev%2Fnes-daw/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Ashref-dev","download_url":"https://codeload.github.com/Ashref-dev/nes-daw/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ashref-dev%2Fnes-daw/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32385943,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-28T14:34:11.604Z","status":"ssl_error","status_checked_at":"2026-04-28T14:32:37.009Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-28T15:02:52.795Z","updated_at":"2026-04-28T15:02:59.328Z","avatar_url":"https://github.com/Ashref-dev.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NES DAW Extended Suite\n\nBrowser-based DAW for NES-inspired music with two production modes:\n- **Strict NES**: pulse1/pulse2/triangle/noise/dpcm constraints.\n- **Modern**: extra synth engines and flexible tracks.\n\nBuilt with Next.js + React + TypeScript + Zustand + Web Audio API.\n\n## Current Feature Set\n\n### Audio \u0026 Transport\n- Unified transport command bus (`play/pause/stop/record/seek`)\n- Stable scheduler sync across UI, shortcuts, and playback state\n- NES channels + DPCM-like channel path + modern synth engines\n- Looping, quantize, BPM control, arrangement-aware playback\n\n### Composition\n- Piano roll editing: add/move/resize/delete notes\n- Pattern arrangement sequencer with section markers\n- Track management: mute/solo/volume, engine/instrument selection\n- Editor quick tools: duplicate, quantize selected, nudge, transpose\n\n### Input\n- Computer keyboard performance mode\n- Web MIDI device input with record capture\n- MIDI controller mapping with learn/detect flow (CC, pitch bend, aftertouch, transport realtime)\n- Routing modes: Selected Track / Omni / Channel Map (1-16 manual routing)\n- Per-device profile bindings + project-level MIDI binding overrides\n- Virtual keyboard\n- Customizable shortcut map with conflict detection and persistence\n\n### Import / Export / Persistence\n- Advanced MIDI file import wizard (track mapping, transpose, quantize, clamp, velocity scale)\n- MIDI export\n- WAV offline bounce\n- Project JSON save/load with schema migration support\n- Auto-draft persistence in local storage with restore prompt\n- Bundled test song loader for Mega Man 2/3/4 templates via local MIDI pack\n\n### Bundled Mega Man Test MIDI Pack\n\nTo bundle and load the three test songs, add authorized MIDI files to:\n\n- `public/midi/megaman/mega-man-2.mid`\n- `public/midi/megaman/mega-man-3.mid`\n- `public/midi/megaman/mega-man-4-title.mid`\n\nThen use the **Test Songs** button in the transport or startup screen.\n\n### UX \u0026 Accessibility\n- Settings panel with tabs (Audio, Constraints, Channels, MIDI, Shortcuts, UI, Accessibility)\n- Help dialog and shortcut cheat-sheet\n- Toast feedback + error boundary\n- Desktop/tablet responsive layout + companion banner on narrow screens\n- Reduced-motion and high-contrast focus toggles\n\n## Keyboard Shortcuts (Defaults)\n\n- `Space`: Play/Pause\n- `Shift+Space`: Stop\n- `Shift+R`: Record\n- `Shift+L`: Loop toggle\n- `Shift+Q`: Quantize grid cycle\n- `Delete`: Delete selected notes\n- `Ctrl+D`: Duplicate selected notes\n- `Alt+ArrowLeft/Right`: Nudge selected notes\n- `Alt+ArrowUp/Down`: Transpose selected notes\n- `Ctrl+Z`: Undo\n- `Ctrl+Shift+Z`: Redo\n- `,`: Toggle settings\n- `/`: Toggle help\n\n## Tech Stack\n\n- Next.js 16 (App Router)\n- React 19\n- TypeScript 5\n- Zustand 5\n- Tailwind CSS 4 (global CSS tokenized design system)\n- @tonejs/midi (MIDI file parse/export)\n\n## Development\n\n### Prerequisites\n- Node.js 18+\n- npm or bun\n\n### Install\n\n```bash\nnpm install\n# or\nbun install\n```\n\n### Run\n\n```bash\nnpm run dev\n# or\nbun run dev\n```\n\n### Quality Gates\n\n```bash\nnpm run lint\nnpm run test\nnpm run build\nnpm run verify\n```\n\n`verify` runs lint + tests + production build.\n\n## CI\n\nGitHub Actions workflow at `.github/workflows/ci.yml` runs:\n- lint\n- tests\n- build\n\n## Project Structure\n\n```text\nsrc/\n  app/                     # app shell + global styles\n  audio/                   # engine, scheduler, transport controller, note scheduling\n  components/\n    arrangement/           # pattern timeline\n    common/                # toasts, error boundary, help dialog\n    editor/                # editor quick actions\n    import/                # MIDI import wizard\n    instruments/           # virtual keyboard\n    piano-roll/            # main note editor\n    settings/              # settings UI\n    tracks/                # track/channel controls\n    transport/             # transport + file operations bar\n  hooks/                   # UI-engine integration hooks\n  lib/                     # constants, shortcut utilities, song utilities\n  services/                # import/export, project IO, draft storage, wav export\n  store/                   # Zustand DAW state/actions\n  types/                   # core contracts\n```\n\n## Browser Notes\n\n- Web Audio API required for playback.\n- Web MIDI API availability varies by browser/platform.\n- When MIDI API is unavailable, app still works with keyboard + mouse input.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fashref-dev%2Fnes-daw","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fashref-dev%2Fnes-daw","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fashref-dev%2Fnes-daw/lists"}