v3.0.9: 미디 에디터 대폭 개선 — 솔로/뮤트/CC/매핑 수정

미디 에디터:
- 솔로/뮤트 실시간 반영: writeMidi 기반으로 buildSpessaMidi 재설계, 토글 시 sfReloadSong()으로 즉시 시퀀서 리로드
- MIDI 파서 CC 이벤트 보존: 기존에 모든 CC(볼륨·팬·expression·리버브 등) 버리던 것 수정, ccs[] 배열로 저장·재출력
- 멀티채널 트랙 분리: 포맷0 등 한 트랙에 채널 혼합 시 채널별로 자동 분리, 드럼 채널 보호
- 노트에 ch 필드 추가: 파서에서 각 노트에 실제 MIDI 채널 저장, writeMidi에서 활용
- 롤에디터 기본 8마디 보기, 마스터 FX 패널 추가
- 기타프로 마스터 볼륨 200%까지 확장

기타프로 MIDI 포트 매핑:
- sendMidiProgramChanges 순서 수정: PC→Bank 오류를 Bank→PC로 교정
- 세컨더리 채널(팜뮤트·하모닉스) 초기화 추가
- CC7 볼륨·CC10 팬 초기값 전송 추가

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
kim
2026-06-22 17:44:32 +09:00
co-authored by Claude Sonnet 4.6
parent 9ad63ec8b1
commit 04e8f8ebe8
19 changed files with 3130 additions and 1008 deletions
+43
View File
@@ -266,5 +266,48 @@
},
"pubmed": {
"api_key": "vault:pubmed.api_key"
},
"email": {
"accounts": [
{
"id": "applecherry",
"imap_host": "121.183.65.201",
"imap_port": 993,
"imap_tls": true,
"imap_reject_unauthorized": false,
"smtp_host": "121.183.65.201",
"smtp_port": 587,
"smtp_secure": false,
"smtp_reject_unauthorized": false,
"username": "kim@applecherry.net",
"password": "vault:email.accounts.applecherry.password"
},
{
"id": "evangel",
"imap_host": "mail.evangel.xyz",
"imap_port": 993,
"imap_tls": true,
"imap_reject_unauthorized": false,
"smtp_host": "mail.evangel.xyz",
"smtp_port": 587,
"smtp_secure": false,
"smtp_reject_unauthorized": false,
"username": "kim@evangel.xyz",
"password": "vault:email.accounts.evangel.password"
},
{
"id": "daum",
"imap_host": "imap.daum.net",
"imap_port": 993,
"imap_tls": true,
"imap_reject_unauthorized": true,
"smtp_host": "smtp.daum.net",
"smtp_port": 465,
"smtp_secure": true,
"smtp_reject_unauthorized": true,
"username": "kimsgms@hanmail.net",
"password": "vault:email.accounts.daum.password"
}
]
}
}
+14
View File
@@ -20,3 +20,17 @@
[16:22:07] **SmallClaw**: HEARTBEAT_OK
[16:52:07] **User**: Check for anything important and reply HEARTBEAT_OK if nothing needs attention.
[16:52:08] **SmallClaw**: HEARTBEAT_OK
[18:26:17] **User**: Check for anything important and reply HEARTBEAT_OK if nothing needs attention.
[18:26:19] **SmallClaw**: HEARTBEAT_OK
[19:42:01] **User**: Check for anything important and reply HEARTBEAT_OK if nothing needs attention.
[19:42:02] **SmallClaw**: HEARTBEAT_OK
[20:12:02] **User**: Check for anything important and reply HEARTBEAT_OK if nothing needs attention.
[20:12:05] **SmallClaw**: HEARTBEAT_OK
[21:22:20] **User**: Check for anything important and reply HEARTBEAT_OK if nothing needs attention.
[21:22:23] **SmallClaw**: HEARTBEAT_OK
[21:52:23] **User**: Check for anything important and reply HEARTBEAT_OK if nothing needs attention.
[21:52:24] **SmallClaw**: HEARTBEAT_OK
[08:14:25] **User**: Check for anything important and reply HEARTBEAT_OK if nothing needs attention.
[08:14:27] **SmallClaw**: HEARTBEAT_OK
[08:44:27] **User**: Check for anything important and reply HEARTBEAT_OK if nothing needs attention.
[08:44:29] **SmallClaw**: HEARTBEAT_OK