📋 Final Plan v4 🤖 Otomatik - Sadece Premium

Muzibu Otomatik Ses Kalitesi

Premium Kullanıcılar İçin Otomatik Kalite Seçimi (Web Audio API)

8 Ocak 2026
muzibu.com

🔴 HATA DÜZELTMESİ (v3'ten)

❌ v3'te Yanlış Olan:

"Free kullanıcılar Standard kalitede dinler" denilmişti. BU YANLIŞ!

Gerçek Sistem: Free kullanıcılar hiç müzik dinleyemez!
Backend API (SongStreamController.php) free kullanıcıya 402 döner, subscription sayfasına yönlendirir.

✅ v4'te Doğru Olan:

Sadece Premium/Trial kullanıcılar müzik dinleyebilir.
Kalite seçimi algoritması sadece onlar için çalışır.

📝 Basit Anlatım (Herkes İçin)

🎯 Ne Yapacağız?

Premium/Trial kullanıcılar için sistem otomatik olarak en uygun ses kalitesini seçecek. Kullanıcı hiçbir buton görmeyecek, hiç uğraşmayacak!

⚠️ Önemli: Kimler Müzik Dinleyebilir?

✅ Premium/Trial Kullanıcılar:

Müzik dinleyebilir, otomatik kalite seçimi çalışır.

❌ Free Kullanıcılar:

Play butonuna basınca subscription sayfasına yönlendirilir. Hiç çalmaz!

🤖 Sistem Neye Göre Karar Verir?

  • 📶
    1. İnternet Hızı:

    • Yavaş bağlantı (4G, 3G, < 5 Mbps) → Optimized
    • Orta hız (WiFi, 5-10 Mbps) → EQ Balanced
    • Hızlı (WiFi 5GHz, Fiber, > 10 Mbps) → Ultimate

  • 📱
    2. Cihaz Tipi:

    • Mobil (telefon) → Batarya ve CPU dostu kalite
    • Tablet → Orta-yüksek kalite
    • Desktop → En yüksek kalite (Ultimate)

  • 🔋
    3. Batarya Durumu (Mobil):

    • Batarya %20'nin altında → Optimized (enerji tasarrufu)
    • Batarya normal → İnternet hızına göre

🎚️ Otomatik Seçilen Kalite Seviyeleri:

  • 🟢
    Optimized: Yavaş internet, mobil veri, düşük batarya (256 kbps + Loudnorm)
  • 🟡
    EQ Balanced: Orta hız WiFi, tablet (Optimized + EQ)
  • 🔴
    Ultimate: Hızlı WiFi + desktop (Tüm filtreler - Backend FFmpeg ile aynı)

Not: Standard kalitesi kaldırıldı. Premium kullanıcılar minimum Optimized kalitede dinler.

✨ Kullanıcı Deneyimi

  1. 1. Premium kullanıcı sitede geziniyor
  2. 2. Şarkıya play basıyor
  3. 3. Sistem arka planda 0.5 saniyede analiz ediyor:
    • • İnternet: WiFi 50 Mbps ✓
    • • Cihaz: Desktop ✓
    • • Batarya: Tam (desktop) ✓
  4. 4. → Karar: Ultimate kalite
  5. 5. Web Audio API filtreleri devreye giriyor (kullanıcı fark etmiyor)
  6. 6. Müzik profesyonel kalitede çalıyor 🎵

⚙️ Ayarlar Sayfasında (Opsiyonel)

Premium kullanıcı istersa Ayarlar > Ses Kalitesi bölümünden global tercihini değiştirebilir:

  • Otomatik (Önerilen): Sistem karar verir (varsayılan) ✓
  • Her Zaman Yüksek Kalite: Her durumda Ultimate kullan
  • Veri/Batarya Tasarrufu: Her durumda Optimized kullan

🤖 Otomatik Seçim Algoritması (Basitleştirilmiş)

📊 Karar Akışı:

1. CİHAZ TİPİ & BATARYA
   ├─ Mobil cihaz?
   │  ├─ Batarya < %20?
   │  │  └─ YES → 🟢 OPTIMIZED (enerji tasarrufu)
   │  └─ NO → 2. ADIMA GEÇ
   │
   └─ Desktop/Tablet → 2. ADIMA GEÇ

2. İNTERNET HIZI (Navigator.connection API)
   ├─ Çok yavaş (< 1 Mbps, 2G/3G)?
   │  └─ YES → 🟢 OPTIMIZED
   │
   ├─ Yavaş (1-5 Mbps, 4G)?
   │  └─ YES → 🟢 OPTIMIZED
   │
   ├─ Orta (5-10 Mbps, LTE/WiFi)?
   │  └─ YES → 🟡 EQ BALANCED
   │
   └─ Hızlı (> 10 Mbps, WiFi 5GHz/Fiber)?
      ├─ Desktop? → 🔴 ULTIMATE
      └─ Mobil/Tablet? → 🟡 EQ BALANCED

3. KULLANICI TERCİHİ (Ayarlar sayfası - opsiyonel override)
   ├─ "Otomatik" seçili? → Yukarıdaki algoritma geçerli
   ├─ "Her Zaman Yüksek Kalite"? → 🔴 ULTIMATE (zorla)
   └─ "Veri/Batarya Tasarrufu"? → 🟢 OPTIMIZED (zorla)

🎬 Örnek Senaryolar:

📱 Senaryo 1: Mobil + 4G + Premium

Durum: Telefon, 4G (3 Mbps), Premium üyelik, Batarya %60
Analiz: Mobil + Batarya OK → İnternet yavaş (4G, 3 Mbps)
Sonuç: 🟢 OPTIMIZED

Mobil veri tasarrufu + CPU dostu. 4G'de buffering olmasın.

💻 Senaryo 2: Desktop + WiFi Fiber + Premium

Durum: Desktop, WiFi 100 Mbps, Premium üyelik
Analiz: Desktop ✓ → Hızlı internet (100 Mbps) ✓
Sonuç: 🔴 ULTIMATE

En yüksek kalite: Loudnorm + Stereo + EQ + Lowpass (Backend FFmpeg ile aynı)

📱 Senaryo 3: Mobil + WiFi + Düşük Batarya + Premium

Durum: Telefon, WiFi 50 Mbps, Premium, Batarya %15
Analiz: Mobil + Batarya %15 → Batarya tasarrufu öncelikli
Sonuç: 🟢 OPTIMIZED

WiFi hızlı olsa bile batarya %20'nin altında ise enerji tasarrufu önemli.

📱 Senaryo 4: Tablet + WiFi + Premium

Durum: iPad, WiFi 30 Mbps, Premium, Batarya %80
Analiz: Tablet → Batarya OK ✓ → WiFi orta-hızlı (30 Mbps)
Sonuç: 🟡 EQ BALANCED

Tablet'te iyi kalite ama Ultimate kadar CPU yükü yok.

🔧 Teknik Detaylar (Geliştiriciler İçin)

🎯 Otomatik Seçim Fonksiyonu (Basitleştirilmiş)

async function autoSelectQuality() {
  // NOT: Bu fonksiyon sadece Premium/Trial kullanıcılar için çağrılır
  // Free kullanıcılar zaten API'dan 402 alır, müzik çalmaz

  // 1. Kullanıcı tercihi (ayarlar sayfası - opsiyonel override)
  const userPreference = localStorage.getItem('audio_quality_preference');
  if (userPreference === 'always_high') {
    return 'ultimate'; // Kullanıcı zorladı
  }
  if (userPreference === 'data_saver') {
    return 'optimized'; // Kullanıcı zorladı
  }

  // 2. Mobil cihaz + batarya kontrolü
  if (isMobile) {
    try {
      const battery = await navigator.getBattery();
      if (battery.level < 0.2 && !battery.charging) {
        return 'optimized'; // Düşük batarya → Tasarruf
      }
    } catch (e) {
      // Battery API desteklenmiyorsa devam et
    }
  }

  // 3. İnternet hızı kontrolü
  const connection = navigator.connection;
  if (connection) {
    const downlink = connection.downlink; // Mbps
    const effectiveType = connection.effectiveType;

    // Çok yavaş/yavaş bağlantı
    if (downlink < 5 || effectiveType === 'slow-2g' || effectiveType === '2g' || effectiveType === '3g') {
      return 'optimized';
    }

    // Orta hız (LTE, WiFi orta)
    if (downlink < 10) {
      return 'eq_balanced';
    }

    // Hızlı bağlantı (WiFi 5GHz, Fiber)
    return isDesktop ? 'ultimate' : 'eq_balanced';
  }

  // 4. Fallback: Cihaz tipine göre varsayılan
  if (isDesktop) {
    return 'ultimate'; // Desktop → En yüksek kalite
  } else if (isTablet) {
    return 'eq_balanced'; // Tablet → Orta-yüksek
  } else {
    return 'optimized'; // Mobil → Dengeli
  }
}

// Kullanımı (player-core.js içinde):
const selectedQuality = await autoSelectQuality();
player.applyQualityPreset(selectedQuality);
console.log('Otomatik seçilen kalite:', selectedQuality);

🎚️ Kalite Presets (3 Seviye - Standard Kaldırıldı)

const QUALITY_PRESETS = {
  // Standard KALDIRILDI - Premium kullanıcılar minimum Optimized

  optimized: {
    label: 'Optimized',
    description: '256 kbps + Loudness normalize',
    filters: {
      gain: 1.2,           // +2dB (loudness normalize)
      eq: [],              // EQ YOK
      stereo: 0,           // Stereo YOK
      lowpass: false       // Lowpass YOK
    }
  },

  eq_balanced: {
    label: 'EQ Balanced',
    description: '256 kbps + Loudness + EQ',
    filters: {
      gain: 1.2,
      eq: [
        { type: 'peaking', frequency: 100, Q: 1, gain: 1 },    // Bass +1dB
        { type: 'peaking', frequency: 8000, Q: 1, gain: -2 }   // Treble -2dB
      ],
      stereo: 0,
      lowpass: false
    }
  },

  ultimate: {
    label: 'Ultimate',
    description: 'Tüm filtreler (Backend FFmpeg ile aynı)',
    filters: {
      gain: 1.2,           // Loudness
      eq: [
        { type: 'peaking', frequency: 100, Q: 1, gain: 1 },    // Bass +1dB @ 100Hz
        { type: 'peaking', frequency: 8000, Q: 1, gain: -2 }   // Treble -2dB @ 8kHz
      ],
      stereo: 0.2,         // Stereo widening (20%)
      lowpass: 14000       // 14kHz lowpass
    }
  }
};

📡 Kullanılacak JavaScript API'ler

  • Navigator.connection → İnternet hızı (Mbps, 4G/3G/WiFi)
  • Battery Status API → Batarya seviyesi (mobil)
  • User Agent → Mobil/Desktop tespiti

📁 Dosya Konumları

  • JS: public/themes/muzibu/js/player/features/auto-quality.js
  • Core: public/themes/muzibu/js/player/core/player-core.js (güncellenecek)
  • Ayarlar: resources/views/themes/muzibu/profile/settings.blade.php (opsiyonel)

📊 Yapılacaklar (Adım Adım)

1 Auto Quality Modülü Oluştur

  • auto-quality.js dosyası
  • autoSelectQuality() fonksiyonu (Premium için)
  • ✅ Network, Battery, Device detection API'leri
  • ✅ QUALITY_PRESETS (3 seviye: Optimized, EQ Balanced, Ultimate)

2 Player Core Entegrasyonu

  • ✅ AudioContext + Web Audio pipeline
  • ✅ Şarkı başlamadan önce autoSelectQuality() çağır
  • ✅ Seçilen preset'i uygula (GainNode, EQ, Stereo, Lowpass)
  • ✅ Console log: "Seçilen kalite: Ultimate (Desktop + WiFi 100Mbps)"

3 Ayarlar Sayfası (Opsiyonel)

  • ✅ Settings > "Müzik & Ses" bölümü
  • ✅ 3 radio button: Otomatik / Her Zaman Yüksek / Veri Tasarrufu
  • ✅ LocalStorage kaydet: audio_quality_preference

4 Test

  • ✅ Premium + Desktop + WiFi → Ultimate
  • ✅ Premium + Mobil + 4G → Optimized
  • ✅ Premium + Mobil + Düşük batarya → Optimized
  • ✅ Premium + Tablet + WiFi → EQ Balanced
  • ✅ Ultimate = Backend FFmpeg ile aynı çıktı?

🚀 Sonraki Adım: Onay

💬 Bu planı onaylıyor musunuz?

  • Evet: Koda geçiyoruz (auto-quality.js + player entegrasyonu)
  • Hayır: Neyi değiştirmek istersiniz?

📌 v4 Değişiklik Özeti (v3'ten farklar):

  • Kaldırıldı: Free kullanıcı kontrolü (zaten çalamıyorlar)
  • Kaldırıldı: Standard kalite preset'i (minimum Optimized)
  • Basitleştirildi: Algoritma sadece 3 kalite: Optimized, EQ Balanced, Ultimate
  • Değişmedi: Web Audio API implementasyonu
  • Değişmedi: Otomatik seçim mantığı (internet + cihaz + batarya)