İçeriğe geç
Tüm projeler

Lain Wave: Çevrimdışı Yüksek Çözünürlüklü (FLAC) Müzik Oynatıcı

Abonelik gerektirmeyen, tamamen lokal bellek üzerinde çalışan ve yüksek çözünürlüklü (FLAC) medya arşivlemeye odaklanan, Tauri ve SvelteKit tabanlı masaüstü dijital müzik kütüphanesi.

Teknoloji yığını

Çatılar & kütüphaneler

Performans & metrikler

  • Medya dönüştürme ve I/O işlemleri Tokio thread havuzlarına (thread pool) devredilerek SvelteKit arayüzünün 60 FPS akıcılığı garanti altına alınmıştır
  • Whisper model çıkarımı (inference) için RAM'i yormayan, donanım ivmeli (C++ GGML tabanlı) düşük seviyeli yürütme kullanılmıştır
  • Veritabanı bağlantıları bellekte (in-memory) önbelleklenerek (caching), binlerce FLAC dosyası içeren devasa arşivlerde bile anında arama/filtreleme sağlanır

Neden geliştirdim?

Modern müzik dinleme alışkanlıkları (Spotify, Apple Music vb.) tamamen bulut tabanlı, DRM kilitli ve abonelik gerektiren bir ekosisteme hapsolmuş durumda. Lain Wave'i bu sisteme bir alternatif olarak geliştirdim. Temel amaç; internet bağlantısına ihtiyaç duymayan, kullanıcının kendi verisi üzerinde tam kontrol sahibi olduğu, telemetrisiz, 100% ücretsiz ve sesi kayıpsız (FLAC) formatta yerel diskte saklayan yüksek performanslı bir arşivleme motoru inşa etmekti.

Mimari & kararlar

Uygulama, SvelteKit dosya tabanlı yönlendirme motoru (/playlist/[id], /artist/[name]) ile Tauri'nin Rust arka ucunu birleştirir. Veritabanı katmanı, eşzamanlı okuma/yazma güvenliği için Arc<Mutex<Connection>> ile sarmalanmış rusqlite kullanır. YouTube'dan medya indirme ve dönüştürme işlemleri, Tauri'nin ana olay döngüsünü (event loop) bloklamamak adına tauri::async_runtime::spawn_blocking görevleri içine izole edilmiştir. yt-dlp ve FFmpeg doğrudan std::process::Command üzerinden stdout borulama (piping) ile kontrol edilirken, Windows ortamlarında CMD pencerelerinin görünmesini engellemek için 0x08000000 oluşturma bayrakları (creation flags) inject edilmiştir. Uygulama içi asenkron şarkı sözü oluşturma işlemi, bulut API'leri yerine yerel makinede çalışan C++ GGML modelini (whisper_rs binding'i üzerinden) kullanır.

Temel özellikler

  1. 01YouTube üzerinden tam asenkron medya indirme, ID3 tag manipülasyonu ve FLAC formatında yerel depolama
  2. 02Yerel sistem kaynaklarını kullanarak çalışan Whisper AI entegrasyonu ile otomatik SRT (altyazı/şarkı sözü) senkronizasyonu
  3. 03Thread-safe SQLite mimarisi ile ultra hızlı yerel kütüphane, sanatçı ve çalma listesi (playlist) yönetimi
  4. 04Donanım düzeyinde entegre edilmiş global medya kısayol tuşları (tauri_plugin_global_shortcut)
  5. 05Gelişmiş asenkron durum yönetimi (state management) ile Discord Rich Presence (RPC) entegrasyonu

Teknik değerlendirme

Bu proje, bağımlılıkları en aza indirilmiş 'local-first' (önce yerel) bir mimarinin gücünü gösterir. Uygulama, dışarıdan hiçbir sunucuya (YouTube scraping işlemi hariç) istek atmaz. İndirilen ham ses verisi hound kütüphanesi ile pcm_s16le formatına çevrilerek doğrudan Whisper modeline beslenir. SQLite veritabanındaki JSON tabanlı yedekleme/geri yükleme senaryolarında, transaction tabanlı bulk-insert algoritmaları kullanılarak veri tutarlılığı (ACID uyumluluğu) en üst düzeye çıkarılmıştır.