Project Documentation

AudioMaster Pro Studio

เครื่องมือ Audio Mastering ออนไลน์ที่ทำงานบนเบราว์เซอร์โดยตรง ใช้ Web Audio API ประมวลผลเสียงแบบ Real-time ไม่ต้องติดตั้งอะไรเพิ่ม

Web Audio API TailwindCSS Browser-based Real-time

ฟีเจอร์หลัก

Drag & Drop Upload

ลากไฟล์เสียงวางที่ช่อง Waveform หรือคลิกปุ่ม Upload รองรับ WAV, MP3, FLAC, OGG

Waveform Player

แสดงรูปคลื่นเสียงแบบละเอียด มี Seek Bar กระโดดไปยังจุดต่างๆ ของเพลงได้

Spectrum Analyzer

กราฟความถี่เสียง Real-time 64 แท่ง พร้อม Peak Indicator สี Mint เมื่อเกิน 70%

EQ Response Curve

เส้นโค้ง EQ 7 Band แบบ Real-time มี Drag Handles 7 จุดให้ลากปรับค่าได้โดยตรง

35 Genre Presets

เลือกแนวเพลงได้ 35 แนว ตั้งแต่ Pop, Rock, EDM ถึง Afrobeats, Shoegaze และ Grunge

Multi-format Export

ส่งออกเป็น WAV 16/24/32-bit หรือ MP3 192/256/320kbps พร้อมดาวน์โหลดทันที

Dynamic Compressor

Compressor 7 พารามิเตอร์: Threshold, Ratio, Attack, Release, Knee, Make-Up, SC HPF

Noise Gate & De-Esser

Noise Gate ตัดเสียงรบกวน + De-Esser ลด Sibilance ทำงานแบบ Real-time

Saturation / Harmonics

WaveShaper จำลองเสียง Saturation พร้อม Dry/Wet Mix ให้ความอบอุ่นแก่เสียง

Stereo Width Control

ปรับความกว้าง Stereo 0% (Mono) ถึง 200% (Extra Wide) ด้วย Mid/Side Matrix

Brickwall Limiter

Limiter ป้องกัน Clipping ด้วย Ratio 20:1 ปรับ Ceiling, Threshold, Release ได้

Responsive & Mobile

รองรับทุกขนาดหน้าจอ มี Mobile Bottom Nav และ Genre Drawer สำหรับมือถือ

เริ่มต้นใช้งาน

1

เปิดหน้า Studio

เปิดไฟล์ index.html บนเบราว์เซอร์ — ไม่ต้องติดตั้งอะไรเพิ่ม ทำงานได้ทันทีบนเบราว์เซอร์สมัยใหม่

2

อัพโหลดไฟล์เสียง

คลิกปุ่ม Upload Audio หรือลากไฟล์เสียงวางที่ช่อง Waveform รองรับ WAV, MP3, FLAC, OGG

3

เลือก Genre Preset

เลือกแนวเพลงจาก Sidebar (Desktop) หรือแท็บ Genres (มือถือ) ระบบจะปรับ EQ + Compressor อัตโนมัติ

4

ปรับแต่งเสียง

ใช้ Slider ในส่วน Mastering Controls หรือลาก Handle บน EQ Curve เพื่อปรับแบบ Real-time

5

ฟังผลลัพธ์ & Export

กด Play ฟังเสียงที่ปรับแล้ว → พอใจแล้วกด Export เลือกฟอร์แมตและดาวน์โหลด

โครงสร้างไฟล์

index.html

หน้า Studio หลัก — UI ทั้งหมดของแอปพลิเคชัน

help.html

คู่มือการใช้งานสำหรับผู้ใช้ทั่วไป

README.html

เอกสารประกอบโปรเจกต์ (หน้านี้)

style.css

CSS ทั้งหมด — Custom Properties, Glass Cards, Sliders, Genre Buttons, Responsive

script.js

JavaScript Logic — Audio Engine, UI Controls, Genre Presets, Export, Animation Loop

รายละเอียด Controls ทั้งหมด

Slider ทั้ง 28 ตัว แบ่งเป็น 8 กลุ่ม

Input / Output

Control Web Audio Node Range Default Step
Input Gain GainNode -24 → +24 dB 0 dB 0.1
Output Gain GainNode -24 → +24 dB 0 dB 0.1

Equalizer — 7 Band

Band Filter Type Freq Q Range Default
Sub 60Low Shelf60 Hz±12 dB0
Bass 150Low Shelf150 Hz±12 dB0
Lo Mid 400Peaking400 Hz1.0±12 dB0
Mid 1kPeaking1 kHz0.7±12 dB0
Hi Mid 3kPeaking3 kHz1.0±12 dB0
Treble 6kHigh Shelf6 kHz±12 dB0
Air 12kPeaking12 kHz0.8±6 dB0

Compressor

Control Range Default Step
Threshold-60 → 0 dB-24 dB0.5
Ratio1 → 20 :14:10.1
Attack0.1 → 100 ms10 ms0.1
Release10 → 1000 ms100 ms1
Knee0 → 30 dB10 dB0.5
Make-Up Gain0 → +24 dB0 dB0.1
SC HPF0 → 500 Hz0 Hz1

Saturation

Drive0 → 100%
Mix0 → 100%

Stereo

Width0 → 200%

Brickwall Limiter

Ceiling-6 → 0 dB
Threshold-24 → 0 dB
Release10 → 500 ms

Noise Gate

Threshold-80 → 0 dB
Attack0.1 → 100 ms
Release10 → 1000 ms
Hold0 → 500 ms

De-Esser

Threshold-60 → 0 dB
Frequency2k → 10k Hz
Amount0 → 100%

Audio Signal Chain

ลำดับการไหลของเสียงผ่าน Web Audio Node ต่างๆ:

Source Input Gain 7-Band EQ Compressor Make-Up Gain Saturation Stereo Width Limiter Noise Gate De-Esser Output Gain Analyser Destination

35 Genre Presets

แต่ละ Preset ปรับค่า EQ 7 Band + Compressor 7 พารามิเตอร์ + Saturation, Stereo, Limiter, Gate, De-Esser อัตโนมัติ

🎵 Pop 🎸 Rock 🔥 Metal ⚡ EDM 🎤 Hip-Hop 💜 R&B 🎷 Jazz 🎻 Classical ☕ Lo-Fi 🌊 Ambient 🌴 Reggae 🤠 Country 🎺 Blues 🏕️ Folk 🏴 Punk 🎨 Indie 🏭 Techno 🏠 House 🥁 D&B 💰 Trap ✨ K-Pop 💃 Latin ❤️ Soul 🕺 Funk 🙏 Gospel 🎶 Acoustic 🎙️ Podcast 🎬 Cinematic 🌆 Synthwave 🌸 Vaporwave 🏝️ Reggaeton 🌍 Afrobeats 📻 Boom Bap 🌫️ Shoegaze 🖤 Grunge

Export Formats

Format คุณภาพ ขนาดโดยประมาณ (ต่อนาที) หมายเหตุ
WAV 16-bit CD Quality ~10 MB/min ไฟล์เล็กสุดในบรรดา WAV
WAV 24-bit Studio Quality ~15 MB/min คุณภาพระดับสตูดิโอ
WAV 32f Max Precision ~20 MB/min IEEE Float สำหรับประมวลผลต่อ
MP3 320 Best MP3 ~2.4 MB/min คุณภาพสูงสุดของ MP3
MP3 256 Good Quality ~1.9 MB/min สมดุลระหว่างคุณภาพและขนาด
MP3 192 Smaller Size ~1.4 MB/min เหมาะส่งต่อ/แชร์

MP3 Encoding ใช้ไลบรารี lamejs — หากไลบรารีไม่พร้อมใช้งาน ปุ่ม MP3 จะถูก Disable อัตโนมัติ แนะนำใช้ WAV แทน

Keyboard Shortcuts

Play / Pause Space
อัพโหลดไฟล์
Ctrl+O
Reset ค่าทั้งหมด
Ctrl+R
Export
Ctrl+E
ปรับ Volume
/

ปุ่ม Reset ทั้ง 3 แบบ

🔄 Reset Preset

คืนค่าทุก Slider กลับไปที่ค่า Preset ของ Genre ที่เลือก — ถ้ายังไม่ได้เลือก Genre จะคืนเป็น Default

📊 Reset EQ

คืนเฉพาะ 7 Band EQ เป็น 0 dB โดยไม่กระทบ Compressor หรือเอฟเฟกต์อื่น

🗑️ Reset All

คืนทุก Slider กลับเป็น Default (ศูนย์ทั้งหมด) และยกเลิกการเลือก Genre

ปุ่ม EQ Compressor เอฟเฟกต์อื่น Genre ที่เลือก
Reset Preset → Preset → Preset → Preset ✅ คงไว้
Reset EQ → 0 dB ไม่แตะ ไม่แตะ ✅ คงไว้
Reset All → 0 dB → Default → Default ❌ ลบ

การใช้งานบนมือถือ

Bottom Nav

แถบนำทาง 4 แท็บ: Player, Genres, Controls, Analyze

Genre Drawer

แท็บ Genres เปิด Drawer จากด้านล่าง แสดง 3 คอลัมน์

Touch Sliders

สไลด์นิ้วปรับค่าได้ทุก Slider + EQ Handle

Responsive Layout

จัดเรียงใหม่อัตโนมัติให้พอดีกับหน้าจอเล็ก

Tech Stack

Web Audio API

Audio Processing Engine — GainNode, BiquadFilter, DynamicsCompressor, WaveShaper, AnalyserNode

TailwindCSS

Utility-first CSS Framework สำหรับ Responsive Layout

Lucide Icons

Icon Library สำหรับ UI Elements ทั้งหมด

Canvas API

Waveform, Spectrum Analyzer, EQ Curve และ Particle Background

lamejs

MP3 Encoder สำหรับ Export เป็น MP3 (192/256/320kbps)

Inter Font

Google Fonts — ฟอนต์หลักที่ใช้ทั้งโปรเจกต์

Developer Guide

เพิ่ม Genre Preset ใหม่

1. เพิ่ม Object ในอาร์เรย์ GENRES ในไฟล์ script.js

2. เพิ่ม Overrides ใน GENRE_OVERRIDES — ระบุเฉพาะค่าที่ต่างจาก BASE_PRESET

// ตัวอย่าง: เพิ่ม Genre "Drill"
GENRES.push({ name: 'Drill', emoji: '🔫' });

GENRE_OVERRIDES['Drill'] = {
  bass: 4, mid: 1, treble: 2.5, air: 1,
  compThreshold: -16, compRatio: 4.5, compMakeup: 4,
  satDrive: 15, stereoWidth: 110,
  // ... ระบุเฉพาะค่าที่ต่างจาก BASE_PRESET
};

เพิ่ม Export Format

1. เพิ่ม Object ในอาร์เรย์ EXPORT_FORMATS

2. เพิ่ม Case ในฟังก์ชัน exportAudio() สำหรับ Encoding logic

3. เพิ่ม Case ในฟังก์ชัน estimateFileSize() สำหรับคำนวณขนาดไฟล์

เพิ่ม Audio Node ใหม่ใน Signal Chain

1. เพิ่ม Section ใน CONTROL_SECTIONS — กำหนด id, label, icon, controls

2. สร้าง Node ใน initAudioNodes() — สร้าง Web Audio Node และเก็บใน state

3. ต่อ Node เข้า connectProcessingChain() — แทรกเข้าในลำดับที่ต้องการ

4. เพิ่ม Case ใน applyControlToAudio() — เชื่อม Slider เข้า Node

5. เพิ่ม Node ใน renderOffline() — สำหรับ Export

AudioMaster Pro v2.0 — Built with Web Audio API, TailwindCSS & ❤️