TAMAMLANDI

Gapless Playback Implementasyonu

Muzibu - Şarkılar Arasında Sessizlik Yok

29 Aralık 2025 - Claude AI

Basit Anlatım (Herkes İçin)

Ne Yapıldı? Artık şarkılar bittiğinde bir sonraki şarkıya anında geçiyor. Arada sessizlik veya gecikme yok!

Nasıl Çalışıyor? Eskiden şarkı bittiğinde player önce "eski şarkıyı durdur" diyordu, sonra "yeni şarkıyı çal" diyordu. Bu iki adım arasında küçük bir gecikme oluyordu.

Şimdi: Şarkı zaten doğal olarak bittiğinde, "durdur" adımını atlıyoruz. Direkt "yeni şarkıyı çal" diyoruz. Sonuç: Gapless (boşluksuz) geçiş!

Spotify/Apple Music gibi çalışıyor:

  • Şarkı bitince → Anında sonraki şarkı başlar
  • Next butonu → Anında sonraki şarkı başlar
  • Arada sessizlik yok, kesinti yok

Teknik Detaylar (Geliştiriciler İçin)

1. nextTrack() Fonksiyonu Güncellendi

player-core.js:1152

// Yeni parametre eklendi:

async nextTrack(fromNaturalEnd = false)

fromNaturalEnd = true → stopCurrentPlayback() atlanır (gapless)
fromNaturalEnd = false → Normal davranış (manuel skip)

2. onTrackEnded() Güncellendi

player-core.js:2066

// Eski (gap var):

this.nextTrack();

// Yeni (gapless):

this.nextTrack(true);

3. Gapless Akış

1 Şarkı doğal olarak bitiyor (ended event)

2 onTrackEnded() → nextTrack(true)

3 stopCurrentPlayback() ATLANIR

4 playSongFromQueue() → Anında sonraki şarkı!

Eski vs Yeni Karşılaştırma

ESKİ (Gap Var)

  1. 1. Şarkı bitiyor
  2. 2. onTrackEnded()
  3. 3. nextTrack()
  4. 4. stopCurrentPlayback() ← GECİKME!
  5. 5. playSongFromQueue()

YENİ (Gapless)

  1. 1. Şarkı bitiyor
  2. 2. onTrackEnded()
  3. 3. nextTrack(true)
  4. stopCurrentPlayback() ATLANDI!
  5. 4. playSongFromQueue()

Ek Notlar

  • Preload sistemi gapless ile birlikte çalışıyor. Sonraki şarkı önceden yüklenirse geçiş daha da hızlı.
  • Manuel skip (next/prev butonu) hala stopCurrentPlayback() kullanıyor - böylece eski şarkı düzgün temizleniyor.
  • Crossfade devre dışı - bufferAppendError sorunları nedeniyle. Gapless daha stabil.
  • ! HLS cleanup playSongFromQueue() içinde yapılıyor (preload path veya loadAndPlaySong içinde).