diff --git a/wiki.md b/wiki.md index 37cc354..bbe7c6a 100644 --- a/wiki.md +++ b/wiki.md @@ -414,3 +414,10 @@ - **Nguyên nhân:** SoundFonts như saxophone có release envelope dài, noteOff không tắt âm ngay - **Fix:** Gửi `controllerChange(ch, 123, 0)` = All Notes Off trước mỗi NoteOn từ MIDI keyboard - **Kết quả:** Note trước tắt ngay khi play note mới, không còn đè âm + +### [2026-07-27 11:45] Fix: lazyInit in playNote + 3 root cause fixes +- **Root cause 1:** NoteOn with velocity=0 treated as NoteOff ✅ (cmd === 0x8 || (cmd === 0x9 && vel === 0)) +- **Root cause 2:** Same channel extraction for NoteOn+NoteOff ✅ (msg.data[0] & 0x0F) +- **Root cause 3:** pitch/channel always integers from msg.data[] ✅ +- **Added:** _lazyInit() called from playNote when _initialized false +- **Oscillator fallback:** 2000ms instead of 60000ms (quick preview before init)