iArt.ai
AI 모션 그래픽 소프트웨어, 누구나 사용할 수 있는 After Effects 대안, 텍스트 프롬프트로 몇 분 안에 애니메이션·설명 영상 제작
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
브라우저에서 여는 작곡(시퀀서) 앱. 악기를 고르고 → 격자(피아노 롤)에 음표를 찍고 → 재생하면 곡이 흘러나온다. 링크 하나로 폰·태블릿·다른 PC 어디서든 접속하는 것이 목표. • 소리 엔진: Tone.js (Web Audio API 위에서 악기·타이밍·재생을 다룸) • 화면: HTML + CSS + 바닐라 JS (프레임워크 없이 시작) • 별도 빌드 도구 없음 — index.html을 브라우저로 열면 바로 돈다 index.html을 브라우저로 열거나, 로컬 서버로 띄운다: 그 다음 http://localhost:8000 접속. (첫 재생 버튼 클릭 때 소리가 켜진다 — 브라우저 정책상 사용자 클릭이 있어야 오디오가 시작됨)README 전문 보기 ↗
브라우저에서 여는 작곡(시퀀서) 앱. 악기를 고르고 → 격자(피아노 롤)에 음표를 찍고 → 재생하면 곡이 흘러나온다. 링크 하나로 폰·태블릿·다른 PC 어디서든 접속하는 것이 목표.
index.html을 브라우저로 열면 바로 돈다index.html을 브라우저로 열거나, 로컬 서버로 띄운다:
python3 -m http.server 8000
그 다음 http://localhost:8000 접속. (첫 재생 버튼 클릭 때 소리가 켜진다 — 브라우저 정책상 사용자 클릭이 있어야 오디오가 시작됨)
곡이름.wav 파일로 저장(서버 없음)#songz=, 긴 곡도 짧게).mid 파일로 다른 DAW(로직·큐베이스·개러지밴드 등)와 주고받기(라이브러리 없이 직접 읽고 씀)setBpm이 슬라이더·숫자·Transport를 함께 맞추고 범위 밖은 확정 시 클램프).Tone.Volume 노드(createVoices의 vol)를 거쳐 마스터로 간다.
setTrackVolume이 그 노드를 라이브로 조절(재생성 없음). 재생·WAV 렌더 모두 반영.track.volume은 세션 저장 + 공유 링크(코덱 v5) 에도 실린다(v1~v4 링크는 볼륨 0으로 열림).track.collapsed는 세션에 저장된다(공유 링크엔 안 담김).moveTrack이 tracks 배열 순서를 바꾼다(맨 위/아래는 비활성).Tone.Sampler 로 만들어
한 샘플을 건반 전체에 음정 맞춰 재생한다. 트랙 사운드 드롭다운에 🎵 로 뜨고, 다른 소리처럼 트랙에 끼운다.sounds에 data URL로 저장(localStorage). 디코드 버퍼는 sampleBuffers(id→ToneAudioBuffer)에
캐시하고, 로드되면 그 소리를 쓰는 트랙 신스를 다시 만든다(로딩 전에는 무음 폴백).PolySynth에 넣어 화음 가능).
기타·클라리넷은 FMSynth(배음이 풍부): 통기타=빠른 어택+긴 감쇠로 잦아드는 뜯는 줄,
클라리넷=홀수 배음의 목관·부드러운 어택·긴 지속. 나머지는 Synth+파형/엔벨로프.PluckSynth/NoiseSynth는 Monophonic이 아니라 PolySynth에 못 넣는다
(넣으면 재생 시 "Voice must extend Monophonic" 에러). 예전 '플럭'이 그 버그였고 Synth 기반으로 고쳤다.position: sticky로 항상 위에 고정했다(스크롤해도 보임).syncTracksHorizontally, 각 트랙 _hscroll의 scroll 이벤트로 나머지를 맞춤, 피드백 루프는 syncingScroll로 방지).
상태는 localStorage에 기억한다..gridscroll) 가 맡고 touch-action: pan-x pan-y로 양축을 허용한다.
(축을 나눠 중첩하면 안쪽 컨테이너의 touch-action이 격자를 한 축으로 제한해 다른 축이 막힌다.) 가로 스크롤이
실제로 생기려면 **flex 항목이 격자 크기만큼 커지지 않게 .track에 min-width:0**이 필요하다.tanh로 완만히 굽혀 입력이
아무리 커도 ~0.93에서 멈춘다(피크 3.3→0.93 확인). 재생·WAV·미리듣기 모두 동일 마스터.
(Web Audio엔 진짜 리미터가 없어 컴프레서는 순간 피크를 놓친다 → WaveShaper로 확실히 눌렀다.)#은 올림표로, 오선 밖 음은 보조선으로 표기.Tone.Offline로 한 번에 렌더링 → 16비트 PCM WAV로 인코딩 →
곡이름.wav 다운로드. 서버 없이 브라우저에서 만든다.스텝수 × 16분음표 길이 + 여운 2초(현재 템포 기준). 재생용 신스는 건드리지 않고
오프라인 컨텍스트에 별도 신스(createVoices)를 만들어 렌더한다. 음이 하나도 없으면 안내만 뜬다..mid 파일로 다른 DAW(로직·큐베이스·개러지밴드 등)와 주고받는다.
외부 라이브러리 없이 브라우저에서 SMF를 직접 읽고 쓴다.곡이름.mid. 1칸 = 16분음표, 드럼은 일반 MIDI 드럼(채널 10). 거의 그대로 옮겨진다..mid 파일을 골라 새 곡으로 연다. MIDI는 자유 타이밍이라 격자(16·32분음표)에 맞춰 정렬하고,
음역(도3~도6) 밖 음은 옥타브를 옮겨 담는다 → "음 N개, M개 옮김/무시"를 알려준다.+ 새 소리, 각 소리 [편집]·[이름변경]·[삭제].applySoundToTracks→poly.set).sounds 배열에 담겨 저장(localStorage) 되고 공유 링크에도 실린다(코덱 v3).
링크에서 소리는 이름 + 7바이트로 양자화(파형 1 + ADSR 4 + 컷오프 1 + 볼륨 1), 트랙은 소리를 인덱스로 참조 — 값이
아주 미세하게 바뀔 수 있다(귀로는 구분 안 됨). v1/v2 링크도 계속 열린다(하위호환).마스터(여러 트랙이 겹쳐도 깨끗하게): ① 헤드룸(-6dB)으로 정상 믹스(2~4트랙)가 천장(0.9) 아래에 머물러 마스터가 손대지 않는다(왜곡 0). ② 넓은 범위 소프트 클립: 무거운 믹스가 넘쳐도 tanh로 부드럽게 포화. WaveShaper는 입력이 ±1을 넘으면 곡선 끝에 '평평하게 잘라'(=퍼벅) 버리므로, 입력을 1/DRIVE로 축소해 넣고 곡선이 ±DRIVE까지 다루게 한다 → 아무리 겹쳐도 하드클리핑 없이 매끄럽게 눌린다.
#song=...)에 담는다.
격자가 불리언이라 그대로 두면 링크가 길어지므로 비트 패킹으로 짧게 유지한다(2트랙 2마디 ≈ 150자).🔗 공유 또는 왼쪽 메뉴) → 링크 복사 → 나에게(카톡·메일 등) 보내 다른 기기에서 연다.encodeShare/decodeShare(app.js). 버전 바이트가 있어 나중에 포맷이 바뀌어도 구분 가능.정적 파일뿐이라 아무 정적 호스팅에나 올리면 된다. 가장 쉬운 건 GitHub Pages:
main/root로 지정https://<아이디>.github.io/<저장소>/ 로 열림 → 이 주소에서 공유하면 폰에서도 열린다(아직 push 안 함. 원하면 도와줄 수 있음.)
musik-maker.sessions, 활성 곡: musik-maker.activeId).+ 새 곡으로 추가, ✎로 이름 변경(인라인),
🗑로 삭제(실행취소 토스트 포함).