🎹

เปียโนออนไลน์ 88 คีย์

✦ WEB AUDIO API · MIDI PLAYER · SPLIT LAYERS ✦ v2.2
🎹 88 คีย์
A0C1C2C3C4C5C6C7C8
เลือกเพลง
📖 วิธีเขียนโค้ด (MIDI Player + 88 Keys + Split)

🎯 เทคนิคหลัก

เปียโนตัวนี้ใช้ Web Audio API สร้างเสียง มี MIDI Parser ในตัวที่อ่านไฟล์ .mid โดยตรง

1️⃣ MIDI Parser (อ่านไฟล์ .mid)

Standard MIDI File (SMF) ประกอบด้วย Header + Track Chunks ใช้ Variable Length Quantity ในการอ่าน delta time

function parseMidiFile(dataView) {
  // "MThd" + header info → format, trackCount, division
  // "MTrk" + events → deltaTime + status + data
  // Note On (0x90) → note, velocity
  // Note Off (0x80) → note, velocity
  // Meta 0x51 → Set Tempo
  // seconds = ticks / (ticksPerBeat * (bpm/60))
}

2️⃣ 88 คีย์ (A0-C8)

MIDI 21 (A0) ถึง 108 (C8) = 52 คีย์ขาว + 36 คีย์ดำ. กว้างปรับอัตโนมัติตามหน้าจอ

3️⃣ Split Layer (แยกเสียงซ้าย-ขวา)

แบ่งคีย์บอร์ดเป็น 2 ส่วน แต่ละส่วนใช้ Instrument ต่างกัน คลิกที่คีย์เพื่อกำหนดจุด Split

4️⃣ 5 Instrument

เครื่องOscAttackRelease
🎹 PianoSine ×10.005s0.8s
🎛️ E.PianoSine ×10.010s0.6s
🎻 StringsSine ×10.050s1.0s
🎼 OrganSine ×10.003s1.2s
🪘 HarpsichordSine ×10.003s0.3s

5️⃣ Real-time Scheduler

MIDI → Scheduler setInterval(50ms)
→ Max 8 notes/tick + 4ms stagger
→ Single oscillator + Linear ADSR (no click)
→ Compressor -26dB + Master Gain 0.40
→ Polyphony cap 16
0 โน้ต
← กลับหน้าแรก