Sitelet https://github.com/alikrc/Pena
Skip to content
alikrcPublic

About

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Pena – Gitar Öğren ve Akort Et

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öz biç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:2 biç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.

Çalıştırma

Mikrofon yalnızca https:// ya da localhost üzerinden açılır:

npm start

Sonra 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).

Test

npm install
npm test

Testler 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.

Kaynaklar

  • 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).

Dosyalar

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.

Yayınlama (GitHub Pages)

Depo ayarlarında Settings → Pages → Deploy from a branch → main / root; derleme adımı yoktur.

About

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages