Pena – Learn Guitar & Tune
Uygulamayı aç: https://alikrc.github.io/GuitarNoteDetectionApp/
Tarayıcıda çalışan gitar öğrenme ve akort aracı (Sol Klarnet Dinleyici'nin gitar sürümü). Mikrofondan çaldığını dinler ve geri bildirim verir. Ses cihazda işlenir, hiçbir yere gönderilmez. Sekmeler:
- Dersler: 16 adımlı başlangıç kursu (akort → Em, Am → dörtlük vuruş → akor geçişleri → kulak → C, G → … → ilk şarkı → F). Her dersin hedefi mikrofonla kontrol edilir; hedefe ulaşınca ders kendiliğinden tamamlanır, ilerleme tarayıcıda saklanır.
- Akort: altı tel, hangi telin çalındığını kendisi bulur; ibre, sent sapması ve “burguyu sık / gevşet” talimatı, referans sesi. Altı tel de ±5 sent içinde kalınca tamam.
- Sap ve notalar: duyulan nota ve tampere notadan sent sapması, tıklanabilir sap (eşik + çalgıya göre 19–24 perde), aynı sesin diğer konumları, adım adım talimat, dizek, tab, entonasyon izi, klavyeden çalınan nota şeridi.
- Telefonda ayar çubuğu katlanır; düğmede seçili çalgı ve akort özetlenir.
- Akorlar: 31 akor kutu şemasıyla (parmak numaraları, tel tel talimat, akor formülü, ipuçları), dinleme, capo (0–7), mikrofonla tel tel ya da tümü kontrolü, akor değiştirme alıştırması (1 dakikada iki akor arası temiz geçiş sayısı, rekor), sık dizilişler.
- Ritim: 6 vuruş kalıbı (dörtlük, sekizlik, pop/folk, vals, Türk aksağı, Aksak), tempo, metronom, seçili akor ya da dizilişle çalma; birlikte çal modunda her vuruşun zamanlaması (erken/geç ms, kaçan, fazla), gecikme ölçümü.
- Metronom: üst çubuktan açılır, her sekmede çalışır (akor ya da ezgi çalarken de); 30–220 BPM, ölçü ve vurgu seçimi, dokunarak tempo, görsel vuruş. Mikrofon dinlerken de kullanılabilir: tık sesi vuruş yakalamayı bozmaz.
- Şarkılar: Türkçe pop/rock (Barış Manço, Teoman, Duman, MFÖ, Mor ve Ötesi, Cem Karaca, Yüksek Sadakat, Model, Ahmet Kaya),
anonim türküler (Kâtibim, Sarı Gelin, Yemen Türküsü) ve kamu malı yabancı şarkıların akorları bölüm bölüm. Uygulama şarkı
sözü içermez: Türkçe pop/rock şarkıların sözleri telifli olduğu için eklenmedi, bu ekranda da yazar. Sözleri kendin ekle
akorları editöre kopyalar; sözleri yapıştırınca her satır sıradaki akor satırıyla eşleşir. Sözlü kopya yalnızca senin
tarayıcında saklanır. Çalan akor yanar, sıradaki gösterilir; dinle ya da mikrofonla birlikte çal (sonunda zamanlama yüzdesi).
Kendi şarkını
[Am]söz [G*2]sözbiçiminde de yazabilirsin. - Ezgiler: nota nota çalma; her notanın teli, perdesi ve parmağı komşu notalara göre seçilir (pozisyon planı), tab. Doğru notayı
duyunca sıradakine geçer, yanlışta ne duyduğunu söyler. Kendi ezgini
Mi4 Re4 Do4:2biçiminde yazabilirsin. - Kulak: majör/minör, majör/minör/yedili, aralıklar, hangi açık tel; 10 soruluk turlar, en iyi puan.
Dil ve tema: Türkçe ve İngilizce (ilk açılışta tarayıcının diline göre; İngilizcede notalar C D E… ile yazılır), otomatik / açık / koyu tema. İkisi de üst çubuktaki düğmelerle değişir ve saklanır.
Ayarlar (tarayıcıda saklanır): çalgı (klasik 19, akustik 20, elektro 22/24 perde; örnek sesin tınısı da değişir), akort (Standart, Drop D, Yarım ses pes, DADGAD, Açık Sol, Açık Re), diyapazon (La = 430–450 Hz), mikrofon hassasiyeti.
Mikrofon yalnızca https:// ya da localhost üzerinden açılır:
npm startSonra http://localhost:8080 adresini aç. Uygulama bir kez açıldıktan sonra çevrimdışı da çalışır ve telefonda “Ana ekrana ekle” ile uygulama gibi kurulabilir.
Belirli bir notayı bağlantıyla açmak için: index.html#nota=67 (yazılı MIDI numarası; standart akortta 52 = Mi3 … 96 = Do7).
npm install
npm testTestler js/core/ altındaki saf mantığı (nota/perde, sap konumları ve parmak planı, akorlar ve akor dinleme, capo, akor
değiştirme sayacı, ritim ve vuruş yakalama, şarkı/ezgi ayrıştırma, kulak soruları, ders hedefleri) ve uygulama dosyalarının
tutarlılığını (betik sırası, ad çakışması, çevrimdışı önbellek listesi, fontlar) doğrular. test-ui.js sayfayı jsdom'da gerçek
betiklerle açar (ses ve mikrofon sahte) ve sekmeleri, dersleri, akort, akor, capo, şarkı, ezgi, kulak, metronom ve ayarları
tıklayarak dener; dil ve tema geçişlerini de denetler. GitHub Actions her push'ta testleri çalıştırır.
- Standart akort (Mi2 La2 Re3 Sol3 Si3 Mi4) ve gitarın duyulduğundan bir oktav yukarı yazılması: Wikipedia — Standard tuning
- Drop D, yarım ses pes, DADGAD, Açık Sol, Açık Re: Wikipedia — List of guitar tunings (kaynak oktav vermiyor; oktavlar en kalın telin standarttan en az gevşetilmesiyle seçildi)
- Pozisyon ve "her perdeye bir parmak" kuralı (1. pozisyonda 1–4. perde işaret–serçe): Classical Guitar Corner — Playing in positions, Dummies — Left-hand fingering in tab
- Açık akor perde dizilimleri: Wikipedia — Guitar chord; Am, C, D, Dm, Em parmak numaraları başlangıç rehberleriyle karşılaştırıldı (ör. skillnation.in); diğer akorların parmakları yaygın kullanımdır, bir kaynakla tek tek doğrulanmadı. Barre akorlar E ve A kalıbıdır. Testler her şeklin tel tel gerçekten o akorun seslerini verdiğini hesapla doğrular.
- Vuruş kalıpları: 4/4 kalıplar tabs4acoustic — Strumming patterns for beginners ve Guitar World — pendulum strumming; Aksak 9/8 = 2+2+2+3 Wikipedia — Aksak; Türk aksağı 5/8 = 2+3, üç vuruşlu TDV İslâm Ansiklopedisi. Usullerin gitar vuruş yönlerine çevrilmesi bizim uyarlamamızdır.
- Perde sayıları tipik değerlerdir; çalgı modeline göre değişebilir.
- Türkçe şarkıların akorları Ultimate Guitar kullanıcı akor sayfalarından alındı (her şarkıda bağlantı var), uygulamadaki şekillere sadeleştirildi; kaynakta süre bilgisi olmadığı için ölçü süreleri, tempo ve vuruş önerisi yaklaşıktır.
- Türkülerin akorları da Ultimate Guitar kullanıcı sayfalarından; Sarı Gelin ve Yemen Türküsü sayfaları oylanmamış, doğrulanmamıştır.
- Hazır ezgiler kamu malı eserlerdir (Neşeye Övgü, Twinkle Twinkle, Frère Jacques).
| Yol | İçerik |
|---|---|
index.html |
Yalnızca işaretleme: ayar çubuğu, sekmeler, paneller |
css/app.css |
Stiller (açık/koyu tema) |
js/core/ |
Saf mantık, tarayıcı ve Node testleri ortak: i18n (dil, metin sözlüğü), music (nota, perde bulucu, FFT), guitar (akort, sap, parmak planı), chords, rhythm, songs, ear, lessons |
js/app/ |
Arayüz modülleri: base (ayarlar, olay yolu, ses üretimi, mikrofon), i18n-html (sayfa metinleri), tabs, settings, metronome, prefs (tema, dil), sap, tuner, chords, rhythm, songs, melody, ear, lessons, main |
sw.js, manifest.webmanifest, icon.svg, icons/, screenshots/ |
Çevrimdışı kullanım, ana ekrana ekleme, mağaza görselleri |
fonts/, css/fonts.css |
Uygulamayla gelen fontlar ve lisansları (OFL) |
privacy.html |
Gizlilik politikası (Türkçe + İngilizce) |
docs/PLAY_STORE.md |
Android (Play Store) yayını için yapılacaklar |
test.js, test-ui.js |
Mantık ve arayüz testleri |
Betikler klasik <script> olarak sırayla yüklenir (derleme adımı yok). Her uygulama dosyası tek bir genel modül nesnesi
tanımlar; modüller birbirine Bus olaylarıyla haber verir.
Çeviri: metinler kullanıldıkları dosyada defStr({ anahtar: { tr, en } }) ile tanımlanır, t("anahtar") seçili dildekini verir.
Veri tablolarında İngilizce alanlar _en ekiyle durur (L(kayıt, "name")). Sayfadaki sabit metinler data-i18n anahtarlarıyla
js/app/i18n-html.js'te; arayüz testi HTML'deki Türkçe metnin sözlükle aynı olduğunu ve İngilizcede hiçbir sekmede Türkçe
metin kalmadığını denetler.
Depo ayarlarında Settings → Pages → Deploy from a branch → main / root; derleme adımı yoktur.