openjutsu
영상에서 원클릭으로 인물 교체, ComfyUI·MiniMax H3 기반 오픈소스 로컬 힉스필드 겐주츠 대안, FLUX.3 Klein 재조명 지원
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기A zero dependency mood-based music visualizer.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Pick a mood. Hear it. See it. A music visualizer that generates original music and matching audio-reactive visuals, live in your browser.
🔗 Live demo: moodwave.carterscoding.com
Moodwave turns a feeling into a small live show. Choose a mood (Calm, Energetic, Dreamy, Moody, or Happy), and the page composes looping, slowly evolving music with the Web Audio API while a full-screen canvas animation pulses, bursts, and swirls in time with it.
| Key | Action |
|---|---|
Space | Play / pause |
1–5 | Switch mood |
N | Next shape set |
F | Toggle fullscreen |
S | Save screenshot |
Open the settings panel (the 'sliders' button) to:
The microphone needs a secure page (https:// or localhost), which GitHub Pages and the local servers below both provide.
ES modules don't load from file://, so serve the folder with any static server:
# Node
npx serve .
# or Python 3
python3 -m http.server 8000
Then open the printed URL (e.g. http://localhost:8000) and press Start.
main branch and the / (root) folder, then Save.https://<username>.github.io/moodwave/.All paths are relative, so the site works from that subpath as-is.
Custom domain: the CNAME file points Pages at moodwave.carterscoding.com. Add a CNAME DNS record for moodwave → <username>.github.io, then enable Enforce HTTPS in Settings → Pages. If you don't use a custom domain, delete CNAME.
| File | What it does |
|---|---|
index.html | Page structure: canvas, welcome screen and control bar. |
style.css | All styling: CSS variables, glass UI, animations, idle fade and responsive layout. |
audio.js | The MOODS config plus the Web Audio engine: synth voices, drums, step sequencer, crossfades and the AnalyserNode. |
visuals.js | Canvas animation loop, 12 shape renderers, shape-set cycling, particle bursts, crossfades and snapshots. |
main.js | App setup: builds mood buttons, wires controls, keyboard shortcuts and idle detection, and connects audio to visuals. |
favicon.svg, apple-touch-icon.png | Site icon (browser tab and iOS home screen). |
CNAME | Custom domain for GitHub Pages. |
LICENSE | MIT license. |
audio.js visuals.js
┌───────────────────────────────────────────┐ ┌──────────────────────────┐
│ sequencer → synths/drums → mood bus ┐ │ │ requestAnimationFrame │
│ (crossfade per mood) │ │ │ ↓ │
│ ↓ │ │ getLevels() ─────────────┼─┐
│ reverb ←──────────────────────── master │ │ ↓ │ │
│ ↓ │ │ renderer(shape) draws │ │
│ compressor → AnalyserNode ─┼─→ bass/mid/treble/hit │ │
│ ↓ │ └──────────────────────────┘ │
│ speakers │ │
└───────────────────────────────────────────┘ main.js passes engine.getLevels ──┘
AudioContext clock, so timing stays tight even if the page is busy.AnalyserNode. getLevels() reads its frequency data once per frame and returns { volume, bass, mid, treble, bassHit, spectrum }. The levels are 0–1, bassHit is a simple onset detector that fires when bass energy jumps above its running average, and spectrum is the raw frequency data (used by the radial spectrum shape).bassHit triggers bursts and jumps, mids drive opacity, and treble brightens colors and speeds up spin. The intensity slider scales all of it.Everything about a mood lives in the MOODS object at the top of audio.js. Add an entry and the button, music, and visuals all appear automatically:
export const MOODS = {
// ...existing moods
spooky: {
label: 'Spooky',
music: {
bpm: 90, root: 45, scale: MINOR, progression: [0, 1, 0, 4], seventh: true,
swing: 0, reverb: 0.7, fills: false,
pad: { type: 'sawtooth', octave: 0, gain: 0.07, pattern: 'x', dur: 16, attack: 1, release: 2, cutoff: 900, detune: 20, voices: 2 },
bass: { type: 'sine', octave: -1, gain: 0.25, pattern: '1.......1...5...', dur: 4, cutoff: 400 },
lead: { type: 'triangle', octave: 1, gain: 0.05, every: 4, density: 0.3, dur: 2, attack: 0.02, release: 0.8, cutoff: 2000 },
arp: null,
drums: { kick: 'x.......x.......', snare: '............x...', hat: '', gain: 0.6 },
},
visual: { shapes: ['galaxy', 'warp', 'ripples'], cycle: 15, palette: ['#39ff14', '#8a2be2', '#ff6f00'], background: '#030806', trail: 0.1, speed: 0.6 },
},
};
MOODS. Patterns are 16-step strings (x hit, - ghost, . rest; bass uses 1 3 5 8 for chord tones).visual.shapes lists the renderers to cycle through, in order: circles, ripples, waves, geometric, warp, grid, spectrum, glow, bubbles, swirl, galaxy, confetti. The optional cycle sets the seconds per set (default 20). For a brand-new look, add an { init, draw } entry to SHAPES in visuals.js.1–9 map to moods in the order they're defined.MediaRecorder?mood=dreamy&intensity=80)MIT © 2026 Carter K