콘텐츠로 이동

로컬 음원으로 채보 만들기

제작 도구 열기 · Haneoka

첫 릴리스는 로컬 음원, 단일 객체 채보 편집, 타이밍, 표시 미리보기, 브라우저 로컬 버전, 이식 가능한 내보내기를 제공합니다. 작은 완전한 예제로 시작한 뒤 음원이나 채보를 직접 만든 파일로 바꾸세요.

  1. local-demo.zip을 내려받습니다.
  2. 제작 도구를 엽니다.
  3. 백업 열기를 누르고 이 ZIP을 그대로 고릅니다. 압축을 풀 폴더 아카이브가 아니라 제작 도구의 네이티브 백업입니다.
  4. Local audio starter(원본 120 BPM 클릭 트랙 8초와 편집 가능한 노트 3개)가 나타날 때까지 기다립니다.
  5. 미리보기에서 재생을 누르고, 같은 버튼으로 일시 정지합니다. 편집 캔버스는 실제 오디오 시계로 움직입니다. 이 미리보기는 노트를 보여 줄 뿐 판정이나 점수 계산은 하지 않습니다.

백업을 가져오면 새 로컬 프로젝트가 만들어지고, 이전에 저장한 프로젝트는 그대로 남습니다.

Haneoka-120bpm.wav와 local-demo.project.json을 한 폴더에 저장합니다.

my-chart/
Haneoka-120bpm.wav
local-demo.project.json
  1. 로컬 음원 불러오기를 누르고 WAV를 고른 뒤 이름과 길이가 표시될 때까지 기다립니다.
  2. 로컬 채보 가져오기를 누르고 Project JSON을 고릅니다.
  3. 재생을 눌러 노트 3개를 확인합니다. JSON에는 편집 가능한 Project 데이터가 들어 있고, 음원은 따로 고릅니다.
  4. 페이지를 닫거나 원본을 바꾸기 전에 버전 저장을 누릅니다.

음원은 브라우저가 디코딩할 수 있어야 하며 32 MiB, 600초, 8채널까지입니다. 원래 인코딩된 파일이 저장되고, 디코딩한 PCM은 임시입니다. 파형 분석으로 BPM 후보를 최대 3개까지 로컬에서 제시하며, 고르면 적용됩니다. 필요하면 BPM을 직접 입력하세요. 절반·두 배 템포 후보가 같은 리듬을 나타낼 수도 있습니다.

채보 가져오기는 Project JSON, Our Notes/SS JSON, USC v2, SUS 텍스트를 지원하며 2 MiB까지입니다. Sonolus LevelData는 배포용 형식이며 편집 가능한 Project 입력이 아닙니다. Cassiopeia 튜토리얼의 재생용 ChartDocument도 다른 형식입니다. 이 제작 도구는 제공된 Project JSON을 씁니다.

Tap, Flick, Trace 중 하나를 고르고 편집 격자를 누릅니다. 기본 좌표 기준은 24이며, 너비 4인 그룹 6개로 표시됩니다. Hold와 Guide는 시작점을 놓은 뒤 더 뒤쪽 끝점이 필요합니다. Escape로 놓다 만 끝점을 지웁니다.

선택 도구로 노트나 선의 점을 고릅니다. 박, 레인, 너비, 종류, 크리티컬, 표시 여부를 편집합니다. Flick에는 왼쪽·위·오른쪽 방향이 있고, 선의 점에는 좌우 이징도 있습니다. 지우기는 맞은 단일 노트나 그 연결선 전체를 지웁니다. 선택한 선의 점을 복사하면 연결선 전체가 복사됩니다. 붙여넣기는 현재 재생 위치에 새 ID로 삽입합니다.

조작기본값 / 가능한 값용도
도구Tap / 선택, tap, flick, trace, hold, guide, 지우기, 이동선택, 배치, 삭제, 화면 이동.
스냅1/4 / 1/1, 1/2, 1/3, 1/4, 1/6, 1/8, 1/12, 1/16배치·붙여넣기의 음악적 분할.
표시 시간 범위4초 / .5, 1, 2, 4, 8, 16초와 휠로 정해지는 값화면 확대. 만든 타이밍은 유지된다.
재생 속도1× / .25, .5, .75, 1, 1.25, 1.5, 2×오디오 미리보기 속도.
새 크리티컬false새 노트의 기본 플래그.
새 Flick 방향위 / 왼쪽, 위, 오른쪽새 Flick 노트의 기본값.
삽입 레인0, 표시 범위 안으로 제한버튼으로 현재 음악 위치에 노트를 추가한다.
시작 BPM120, 유한한 양수프로젝트의 처음 템포. 후보는 이 이벤트만 바꾼다.
음원 오프셋0, 유한한 초음악 시각 0에 더하는 초.

프로젝트에서는 제목, 아티스트, 채보 작성자, 시작 BPM, 음원 오프셋을 편집합니다. BPM 추가는 현재 스냅 위치에 삽입하며 같은 틱 중복은 거부합니다. 시간 배율은 양수 스크롤 배율 이벤트를 추가합니다. JSON은 박자 이벤트와 원본 확장을 유지합니다.

휠로 시간 방향을 이동하고, Ctrl/Command+휠로 포인터 시각을 중심으로 확대하며, 이동 도구로 화면을 끕니다. 재생 위치로 이동은 음악을 따라가고, 박 필드로 미리보기를 탐색합니다. 이 조작들은 만든 타이밍을 바꾸지 않습니다.

버전 저장으로 편집을 저장합니다. 저장한 채보로 로컬 프로젝트를 다시 열고, 버전에서 스냅숏을 복원합니다. 이전 버전에서 고친 내용을 저장하면 늘어나는 로컬 기록에 새 버전이 생깁니다. 작업 공간은 저장한 프로젝트를 바꾸거나 내보내기 전에 저장하지 않은 채보를 저장합니다.

음원과 버전은 이 브라우저의 IndexedDB에 있습니다. 사이트 저장소를 지우면 로컬 라이브러리도 사라지므로 내보낸 백업을 남겨 두세요. 다른 탭에서 더 최근에 저장하면 충돌이 납니다. 저장한 프로젝트를 다시 열거나, 사본 저장으로 현재 초안을 따로 남기세요.

내려받기내용
백업 ZIP원본 채보, 현재 스냅숏, 선택적 원본 텍스트, SHA-256으로 관리하는 원본·현재 인코딩 음원. 백업 열기로 읽는다. 전체 로컬 수정 기록은 브라우저에 남는다.
Haneoka Project JSON확장과 마커를 포함한 편집 가능한 완전한 채보. 음원은 별도 파일로 남는다.
Our Notes/SS 또는 USC v2변환한 채보 JSON. 표시되는 형식 경고에 생략되거나 정규화된 필드가 나열된다. 이어서 만들려면 Project나 백업을 보관한다.

첫 릴리스에서 SUS는 가져오기만 됩니다. 백업에는 JSON(유효한 YAML 1.2)을 담은 project.yaml과 최대 2개의 audio/<sha256> 항목이 들어갑니다. 가져올 때 채보, 엔벌로프, 음원 해시를 검증하며, 4 MiB 매니페스트와 32 MiB 음원 2개의 예산에 맞는 것은 최대 3개 항목입니다. 백업은 제작 도구의 내보내기로 만드세요.

예제에는 필수 필드가 모두 들어 있습니다. version 1, resolution 480, laneBasis 24입니다. 1박은 480틱이며, 120 BPM에서 틱 480의 첫 노트는 0.5초 위치입니다.

필드타입 / 제약
version / resolution리터럴 1 / 480.
laneBasis유한한 양수, 기본값 24. 원본 형식에는 다른 기준이 남을 수 있다.
meta필수 문자열 title/artist/charter/difficulty/level. 선택 source:string, tags:string, extra:JSON 객체.
audioOffset유한한 초.
tempos비어 있지 않은 {id,tick,bpm}[]. 중복 없는 0 이상의 안전한 정수 틱, 틱 0 이벤트, 유한한 양수 BPM.
meters비어 있지 않은 {id,tick,numerator,denominator}[]. 양의 안전한 정수 분자, 2의 양의 거듭제곱 분모, 중복 없는 0 이상의 틱.
timeScales{id,tick,scale}[]. 중복 없는 0 이상의 안전한 정수 틱, 유한한 양수 배율.
singles아래 설명한 단일 노트 배열.
lines`{id,kind:“long”
markers{skill:number[],fever:[number,number][],call:{tick:number,timing:number[]}[]}. 0 이상의 안전한 정수 틱, 유한한 콜 타이밍 값.
extensions원본 형식별 데이터를 담는 필수 JSON 객체.
sourceOrder원본 객체 순서를 나타내는 선택 string[].

각 노트는 중복 없고 비어 있지 않은 id, 0 이상의 안전한 정수 tick, 유한한 lane, 0 이상의 유한한 size, type:"tap"|"flick"|"trace", 불리언 critical/visible, none/left/up/right 방향을 가집니다. Tap의 방향은 none입니다. ID는 노트, 연결선, 타이밍 이벤트 전체에서 중복되지 않습니다. 무대 밖 범위는 경고가 나며 만든 값은 그대로 유지됩니다.

선의 점에는 ease:{left:"linear"|"in"|"out",right:"linear"|"in"|"out"}가 더해집니다. 레인은 "auto"일 수 있으며, 선택 항목 resolvedLane/resolvedSize/autoSize가 가져온 보간 데이터를 보존합니다. 완전한 예제로 시작하세요. 검증으로 잘못된 필드를 알 수 있습니다.

캔버스에 포커스가 있으면 Ctrl/Command+S로 저장, Ctrl/Command+Z로 실행 취소, Ctrl/Command+Shift+Z나 Ctrl/Command+Y로 다시 실행, Ctrl/Command+C/V로 복사·붙여넣기를 합니다. Delete/Backspace로 지우고, Space로 재생·일시 정지, Escape로 선택이나 놓다 만 끝점을 해제하며, 1~7로 선택·tap·flick·trace·hold·guide·지우기를 고르고, 위아래 키로 편집 창을 옮깁니다. 텍스트와 Material 입력란에서는 일반 키 동작이 유지됩니다.

음원 오류가 나면 작은 WAV로 시험하고, 제한을 확인하고, 브라우저가 지원하는 코덱을 고르세요. 음원이나 해시가 없다는 오류에는 완전히 내보낸 백업이 필요합니다. 저장소 충돌이나 데이터베이스 접근이 막히면 다른 탭을 닫으세요. 저장소를 비우기 전에는 백업을 내보내세요. 이 첫 단계는 로컬 단일 객체 제작과 표시 미리보기까지이며, 고급 편집과 원본 플랫폼·공개 연동은 따로 단계적으로 제공됩니다.