← Tüm Yazılar

Satranç oyununa müzik — reel üretici nasıl çalışır

PGN yapıştır, 9:16 reel çıkar. Heatmap'e göre 8 enstrüman çalıyor. Instagram ve TikTok için doğrudan paylaş.

Yeni bir sayfa: /create/story/. Herhangi bir satranç oyununu PGN olarak yapıştırıyorsun, tıpkı analyzer'da olduğu gibi. Ama tahta + heatmap'i kağıda dökmek yerine, tarayıcıda 1080×1920 (dikey) bir video olarak render ediyor. Instagram Reels, TikTok, X, Shorts — doğrudan paylaşılabilir.

Temelde üç katman üst üste çalışıyor. Birincisi: 2D tahta animasyonu. Her hamle smooth bir easing ile from→to karesine kayıyor. Rok hamlesinde hem şah hem kale aynı anda hareket ediyor, en-passant taşı kaybolurken gerçek kareden bonus bir 'silinme' kadrosu ekleniyor.

İkinci katman: piece heatmap. Tahtanın altında iki ısı haritası — biri beyaz, biri siyah — her hamle sonrası taşın yerleştiği kareye +1 ekleniyor. Oyun ilerledikçe hangi bölgeler 'kullanıldı' görülüyor. Bir Najdorf Sicilian ve bir Italian Game görsel olarak çok farklı şekiller bırakıyor; o görsel fark reel'in kimliği oluyor.

Üçüncü katman: müzik. Bu kısım biraz deli görünüyor. Heatmap'in yatay ekseni (a..h dosya) do majör gam üzerinde 8 notaya (C-D-E-F-G-A-B-C) eşleniyor. Dikey eksen (1..8 rank) 8 enstrümana — piyano, bas, viyolonsel, viyola, keman, klarnet, flüt, soprano. Bir hamle e4 karesine gittiğinde 'E majör' notası 'keman' enstrümanıyla çalınıyor; aynı piyonun d5'e geri dönüşü 'D' + 'keman'. Heatmap yoğunluğu velocity — çok gezilen kareler daha gür, tek kez gidilenler zarif.

Sadece tek notalarla sınırlı kalmıyor. Aynı kareye iki farklı hamle gelirse (mesela beyazın sonra siyahın aynı meydanı kullanması) bir chord çalınıyor — ama sadece piyano için, çünkü tek-sesli synth'lerde ikinci nota ilkini keser. Aynı dosyaya ardışık hamleler geldiğinde arpegio: kök nota + majör üçlü, 16'lık bir gecikmeyle. Bir siciliandaki 'e-file battle' böylece armonik bir crescendo oluşturabiliyor.

Reel'in başında 3 saniyelik bir intro overlay: oyunun açılış adı ve tek cümlelik özet. Sonunda 5 saniyelik outro: oyunun hikayesi + sonuç + tagline. Bu metinler 'story-generator.js' modülünden geliyor — açılış tespiti, heatmap'teki en yoğun file, oyun uzunluğu ve sonuca bakarak TR veya EN şablonlu 3-5 cümle üretiyor. Stockfish yüklüyse kritik hamle otomatik tespit ediliyor ve outro'ya ekleniyor: '23. Nxf7 (+2.4)'.

Format ve teknoloji tarafında: Canvas'ı captureStream ile WebM'e çeviriyoruz (vp9,opus codec). Ses için Tone.js'in Transport + synth'lerini AudioContext üzerinden MediaStreamDestination'a patchliyoruz; video ve ses aynı MediaRecorder'a akıyor. Sonunda .webm dosyası indiriliyor; mobilde ayrıca navigator.share tetikleniyor, kullanıcı doğrudan Instagram'a atabiliyor. MP4 isteyenler için tek satır bir ffmpeg komutu: crf 18, yuv420p, libx264.

Neden? İki basit sebep. Bir: Analyzer'da yarattığın heatmap statik bir görsel — paylaşmak zor. Bir video, reel/feed algoritmalarında görsele göre çok daha iyi performans gösteriyor. İki: satranç oyunu geleneksel olarak görsel bir şey; işaretle-pas-paylaş döngüsü üçüncü bir katman ekliyor, duyusal. Bu tercihli, ama hoş bir ek.

Denemek için: /create/story/ sayfasına git, 'Örnek' butonuna bas (rastgele bir tarihsel maç yüklenir), 'Önizle' ile sessiz oynat, beğendiysen 'Kaydet'. Analyzer'dan da girebilirsin — bir oyun seçili ikenki 'Reel olarak paylaş' butonu PGN'i otomatik taşır.

Sınırlar: Safari'de WebM kaydı bazı sürümlerde bozulabilir — MP4 fallback test aşamasında. Çok uzun partiler (150+ ply) tarayıcıyı zorluyor, şimdilik ilk 60 hamle ile sınırlı. Ses Tone.js synth'leri — gerçek SoundFont değil — ileride lisanslı bir piano/strings sample seti düşünüyoruz ama bir sonraki sprint değil.

Feedback gerçekten işe yarıyor: hangi oyunlar en iyi ses çıkarıyor, hangi açılışlar görsel olarak en net — bunları gör, bize yaz. Launch'tan sonra her çıkan reel'i arşivliyoruz, ileride 'bu hafta en çok paylaşılan reel' feed'i bile düşünülebilir.

Bu özellik ücretsiz, hesap gerekmez. Üretilen dosya senin cihazında kalır; biz tarafta kayıt tutmuyoruz. Tek istediğimiz: paylaşırken bir köşeye thechess.art yazman.