NES oyunlarında (2A03 dışında başka bir ek ses çipi kullanılmıyorsa) 5 tane ses kanalı bulunur. Bu da aynı anda 5 farklı sesi çalabileceğiniz anlamına gelir.
Bu kanallar sırasıyla şöyledir:
04 xx xx = Square 1
05 xx xx = Square 2 (bu ikisi ana melodileri çalar ve teknik özellikleri aynıdır)
06 xx xx = Triangle (ismini üçgen dalgalardan alan Triangle kanalında daha dip bir ses çalınır ve genelde bassline'lar için kullanılır.)
07 xx xx = Noise (Ritim enstrumanları, hat'ler snare'lar vs vs)
07 xx xx = PCM (Davul sesleriyle ritme destek olan kanal)
Dikkat ettiyseniz Noise ve PCM kanalları için 07 xx xx kodunu yazdım. Bu iki kanal da 07 xx xx yer göstermesiyle yönetiliyor.
0 = do
1
2 = re
3
4 = mi
5 = fa
6
7 = sol
8
9 = la
A
B = si
0C kodu = Sus kodu, nota çalmıyor, Duraklama için kullanıyoruz.
12 ana nota var, do'dan si'ye. eğer kodu 16 değer yukarı yahut aşağı çekerseniz sesi bir oktav kalınlaştırmış yahut inceltmiş olursunuz.
E2 xx = Duty cycle dedikleri zımbırtı. Aranızda gitar çalan varsa aynı oktavdaki aynı notanın farklı gerginlikteki tellerde farklı ses çıkardığını bilir. Ona benzer bir şey. Sık kullanılan 4 kod var(00 40 80 C0) Ama aradaki kodları deneyerek de güzel sesler elde edebiliyorsunuz
E3 xx = Ses yüksekliği. Burada maalesef kod yükseldikçe ses yükselir diye bir şey yok ama diğer müziklerden referans alarak kulağınıza en hoş geleni ayarlayabilirsiniz. Genelde Square kanalları için 07 yahut 08 kullanılıyor.
E0 xx = Notanın çalınma şeklini belirler. Pizzicato tarzı çal-bırak mı olacak, vibrato(titreşim) verilecek mi ya da Rhodes gibi bastığınız nota sonsuza kadar devam mı edecek, bunun kararını veriyosunuz. Kod denemek istemiyorsanız benim bu aralar favorilerim 08 09 11 14 15.
E8 xx xx = Müziğin sonunda tekrar için yer gösterme
E9 xx xx = Müziğin içinde, uzaktaki bir kod bloğuna yönlendirme için yer gösterme. Yer gösterdiğiniz yere yazdığınız kodları EA ile kapattığınızda müzik eski ofsetinden devam edecektir.
E5 xx = Frekansı belirliyor. Örneğin E5 0A kullanabilirsiniz.
ED xx = Ekolayzer ve titreşimi ayarlayan koddur ED 01 en uygunudur.
++++++++++++++++++++++++++++++++++++
Evet, artık başlayalım.
Öncelikle ED, EB, E5 kodlarını kullanmak size kalmış. Enstruman, melodi ve ses kodundan sonra yazabilirsiniz.
18C60 ofsetine gelelim ve oradaki kodları 10 FD ile değiştirelim.
18C60 ofseti 27(Sao Paulo) kodlu müziği göstermekte.
3FD20 ofsetine gelelim ve açılışımızı 04 00 00 FF ile yapalım.
Şimdi, 04 00 00 FF yazdık. FF'den sonra şu kodları giriyoruz ;
FF > Kanalları kapatma ve melodiler arası geçiş kodu, en sona mutlaka koyulmalı.
E2 80 E3 09 E0 00 91 25 27 28 2A E8 00 00
E2 80 > Enstrumanımız.
E3 09 > Melodimizin sesi
E0 00 > Melodimizin tonu.
Kalın ve altı çizilmiş kodlar melodimizdeki sesler.
91 kodu > Melodimizin çalacağı hız. Ne kadar yükseltirseniz hızı o kadar düşer. Minimum 80, maksimum 95.
25 27 28 2A > Melodimizde çalacak olan sesler. Mesela 31 33 34 36 yapabilirsiniz.
E8 00 00 > Tekrarı için yer göstermemiz.
Şimdi kodumuz şu oldu 04 00 00 FF E2 80 E3 09 E0 09 91 25 27 28 2A E8 00 00
Hemen E2'nin başladığı ofsete bakıyoruz ve 3FD24 olduğunu görüyoruz.
04 ve FF arasındaki 00 00 kodlarına 14 FD yazıyoruz ve müziğimizin başlangıç kısmını gösteriyoruz, yani kodumuz şu şekilde oluyor 04 14 FD FF E2 80 E3 09 E0 09 91 25 27 28 2A E8 00 00
Şimdi arkadaşlar buraya dikkat edelim ;
E8 00 00 kısmına göstereceğimiz bölge her zaman melodinin hız başlangıcı kodu olur. Yani 91'den itibaren olan yeri göstereceğiz. Şu şekilde olacak ;
04 14 FD FF E2 80 E3 09 E0 09 91 25 27 28 2A E8 1A FD
Şimdi, tek kanallık sesimizi bitirdik. Kaydedip Soccer Hit Roman kısmından 27. müziğe gelebilir veya maça başlayıp Sao Paulo müziğinin yeni melodisini dinleyebilirsiniz.
2. kanal eklemek için ise 04 14 FD ve FF arasına 05 00 00 kodlarını ekliyoruz yani şu şekilde ;
04 14 FD 05 00 00 FF
Bu kodların devamına ise şunları ekliyoruz ;
E2 80 E3 09 E0 00 91 25 27 28 2A E8 1A FD
Evet, şimdi bu kanalı eklediğimizde ne oldu, ilk yer göstermemiz kaydı değil mi? Hemen E2 80 E3 09 xx kodlarının yeni yer göstermesine bakıyoruz nerede imiş, 3FD27 ofsetinde. Hemen 14 FD kodlarını 17 FD ile değiştiriyoruz.
Ama kodları kaydırdığımız için E8 xx xx kısmıda değişti. Hemen yeni yerine bakalım, 3FD2D ofsetinde. Hemen 1A FD kodlarını 1D FD ile değiştiriyoruz.
Değişimleri yaptığımızda kodumuz şöyle bir hal almış olacak ;
04 17 FD 05 00 00 FF E2 80 E3 09 E0 00 91 25 27 28 2A E8 1D FD
Şimdi 2. kanalımız için melodi eklemeye gelelim, E8 1D FD kodlarını FF FF FF yapalım ve 2A kodundan sonra şu kodları girelim ;
E2 40 E0 0C 91 25 27 28 2A E8 26 FD
E2 40 > Enstruman
E0 0C > Melodimizin tonu.
91 Kodu > Melodimizin çalacağı hız.
25 27 28 2A Kodları > Melodimiz.
E8 26 FD > 3FD36 ofsetindeki 91 kodundan itibaren yer gösterme.
05 00 00 kodlarındaki 00 00 yerine hemen 2. kanalımızın başlangıcı olan yani E2 40 E0 0C 91 25 27 28 2A E8 26 FD kodlarının başladığı kısım olan 3FD32 ofsetinin yer göstermesi olan 22 FDkodlarını giriyoruz.
Şimdi kodumuz şu şekilde oldu ;
04 17 FD 05 26 FD FF E2 80 E3 09 E0 00 91 25 27 28 2A E2 40 E0 0C 91 25 27 28 2A E8 26 FD
Artık 2 kanallık basit bir müziğiniz hazır, güle güle kullanın.
Eğer en sondaki E8 26 FD kodu yerine E8 1D FD kodunu girerseniz 3FD2D ofsetinden itibaren müzikleri baştan almaya başlar, yani müziğiniz sonsuza kadar devam eder.
2. kanal için E3 xx kodu kullanmadık fark ettiyseniz, ses yüksekliğini kanal 1'den alacak.
Eğer daha fazla kanal eklemek isterseniz yani müziğinize daha fazla melodi/ses eklemek isterseniz yukarıdaki işlemlerin aynılarını kaydırarak yapabilirsiniz.
++++++++++++++++++++++++++++++++++++
Anlamayı kolaylaştırmak ve sıfırdan müzik yazmanın mümkün olduğunu kanıtlamak açısından sıfırdan yazdığım bir müzik örneğini aşağıya bırakıyorum.
Videomun açıklama kısmından ROM dosyasını indirebilir ve 3FD20 boş ofsetlerindeki müzik kodlarını inceleyebilirsiniz.
İyi eğlenceler.
-akdeniz, 2023
Bu kanallar sırasıyla şöyledir:
04 xx xx = Square 1
05 xx xx = Square 2 (bu ikisi ana melodileri çalar ve teknik özellikleri aynıdır)
06 xx xx = Triangle (ismini üçgen dalgalardan alan Triangle kanalında daha dip bir ses çalınır ve genelde bassline'lar için kullanılır.)
07 xx xx = Noise (Ritim enstrumanları, hat'ler snare'lar vs vs)
07 xx xx = PCM (Davul sesleriyle ritme destek olan kanal)
Dikkat ettiyseniz Noise ve PCM kanalları için 07 xx xx kodunu yazdım. Bu iki kanal da 07 xx xx yer göstermesiyle yönetiliyor.
0 = do
1
2 = re
3
4 = mi
5 = fa
6
7 = sol
8
9 = la
A
B = si
0C kodu = Sus kodu, nota çalmıyor, Duraklama için kullanıyoruz.
12 ana nota var, do'dan si'ye. eğer kodu 16 değer yukarı yahut aşağı çekerseniz sesi bir oktav kalınlaştırmış yahut inceltmiş olursunuz.
E2 xx = Duty cycle dedikleri zımbırtı. Aranızda gitar çalan varsa aynı oktavdaki aynı notanın farklı gerginlikteki tellerde farklı ses çıkardığını bilir. Ona benzer bir şey. Sık kullanılan 4 kod var(00 40 80 C0) Ama aradaki kodları deneyerek de güzel sesler elde edebiliyorsunuz
E3 xx = Ses yüksekliği. Burada maalesef kod yükseldikçe ses yükselir diye bir şey yok ama diğer müziklerden referans alarak kulağınıza en hoş geleni ayarlayabilirsiniz. Genelde Square kanalları için 07 yahut 08 kullanılıyor.
E0 xx = Notanın çalınma şeklini belirler. Pizzicato tarzı çal-bırak mı olacak, vibrato(titreşim) verilecek mi ya da Rhodes gibi bastığınız nota sonsuza kadar devam mı edecek, bunun kararını veriyosunuz. Kod denemek istemiyorsanız benim bu aralar favorilerim 08 09 11 14 15.
E8 xx xx = Müziğin sonunda tekrar için yer gösterme
E9 xx xx = Müziğin içinde, uzaktaki bir kod bloğuna yönlendirme için yer gösterme. Yer gösterdiğiniz yere yazdığınız kodları EA ile kapattığınızda müzik eski ofsetinden devam edecektir.
E5 xx = Frekansı belirliyor. Örneğin E5 0A kullanabilirsiniz.
ED xx = Ekolayzer ve titreşimi ayarlayan koddur ED 01 en uygunudur.
++++++++++++++++++++++++++++++++++++
Evet, artık başlayalım.
Öncelikle ED, EB, E5 kodlarını kullanmak size kalmış. Enstruman, melodi ve ses kodundan sonra yazabilirsiniz.
18C60 ofsetine gelelim ve oradaki kodları 10 FD ile değiştirelim.
18C60 ofseti 27(Sao Paulo) kodlu müziği göstermekte.
3FD20 ofsetine gelelim ve açılışımızı 04 00 00 FF ile yapalım.
Şimdi, 04 00 00 FF yazdık. FF'den sonra şu kodları giriyoruz ;
FF > Kanalları kapatma ve melodiler arası geçiş kodu, en sona mutlaka koyulmalı.
E2 80 E3 09 E0 00 91 25 27 28 2A E8 00 00
E2 80 > Enstrumanımız.
E3 09 > Melodimizin sesi
E0 00 > Melodimizin tonu.
Kalın ve altı çizilmiş kodlar melodimizdeki sesler.
91 kodu > Melodimizin çalacağı hız. Ne kadar yükseltirseniz hızı o kadar düşer. Minimum 80, maksimum 95.
25 27 28 2A > Melodimizde çalacak olan sesler. Mesela 31 33 34 36 yapabilirsiniz.
E8 00 00 > Tekrarı için yer göstermemiz.
Şimdi kodumuz şu oldu 04 00 00 FF E2 80 E3 09 E0 09 91 25 27 28 2A E8 00 00
Hemen E2'nin başladığı ofsete bakıyoruz ve 3FD24 olduğunu görüyoruz.
04 ve FF arasındaki 00 00 kodlarına 14 FD yazıyoruz ve müziğimizin başlangıç kısmını gösteriyoruz, yani kodumuz şu şekilde oluyor 04 14 FD FF E2 80 E3 09 E0 09 91 25 27 28 2A E8 00 00
Şimdi arkadaşlar buraya dikkat edelim ;
E8 00 00 kısmına göstereceğimiz bölge her zaman melodinin hız başlangıcı kodu olur. Yani 91'den itibaren olan yeri göstereceğiz. Şu şekilde olacak ;
04 14 FD FF E2 80 E3 09 E0 09 91 25 27 28 2A E8 1A FD
Şimdi, tek kanallık sesimizi bitirdik. Kaydedip Soccer Hit Roman kısmından 27. müziğe gelebilir veya maça başlayıp Sao Paulo müziğinin yeni melodisini dinleyebilirsiniz.
2. kanal eklemek için ise 04 14 FD ve FF arasına 05 00 00 kodlarını ekliyoruz yani şu şekilde ;
04 14 FD 05 00 00 FF
Bu kodların devamına ise şunları ekliyoruz ;
E2 80 E3 09 E0 00 91 25 27 28 2A E8 1A FD
Evet, şimdi bu kanalı eklediğimizde ne oldu, ilk yer göstermemiz kaydı değil mi? Hemen E2 80 E3 09 xx kodlarının yeni yer göstermesine bakıyoruz nerede imiş, 3FD27 ofsetinde. Hemen 14 FD kodlarını 17 FD ile değiştiriyoruz.
Ama kodları kaydırdığımız için E8 xx xx kısmıda değişti. Hemen yeni yerine bakalım, 3FD2D ofsetinde. Hemen 1A FD kodlarını 1D FD ile değiştiriyoruz.
Değişimleri yaptığımızda kodumuz şöyle bir hal almış olacak ;
04 17 FD 05 00 00 FF E2 80 E3 09 E0 00 91 25 27 28 2A E8 1D FD
Şimdi 2. kanalımız için melodi eklemeye gelelim, E8 1D FD kodlarını FF FF FF yapalım ve 2A kodundan sonra şu kodları girelim ;
E2 40 E0 0C 91 25 27 28 2A E8 26 FD
E2 40 > Enstruman
E0 0C > Melodimizin tonu.
91 Kodu > Melodimizin çalacağı hız.
25 27 28 2A Kodları > Melodimiz.
E8 26 FD > 3FD36 ofsetindeki 91 kodundan itibaren yer gösterme.
05 00 00 kodlarındaki 00 00 yerine hemen 2. kanalımızın başlangıcı olan yani E2 40 E0 0C 91 25 27 28 2A E8 26 FD kodlarının başladığı kısım olan 3FD32 ofsetinin yer göstermesi olan 22 FDkodlarını giriyoruz.
Şimdi kodumuz şu şekilde oldu ;
04 17 FD 05 26 FD FF E2 80 E3 09 E0 00 91 25 27 28 2A E2 40 E0 0C 91 25 27 28 2A E8 26 FD
Artık 2 kanallık basit bir müziğiniz hazır, güle güle kullanın.
Eğer en sondaki E8 26 FD kodu yerine E8 1D FD kodunu girerseniz 3FD2D ofsetinden itibaren müzikleri baştan almaya başlar, yani müziğiniz sonsuza kadar devam eder.
2. kanal için E3 xx kodu kullanmadık fark ettiyseniz, ses yüksekliğini kanal 1'den alacak.
Eğer daha fazla kanal eklemek isterseniz yani müziğinize daha fazla melodi/ses eklemek isterseniz yukarıdaki işlemlerin aynılarını kaydırarak yapabilirsiniz.
++++++++++++++++++++++++++++++++++++
Anlamayı kolaylaştırmak ve sıfırdan müzik yazmanın mümkün olduğunu kanıtlamak açısından sıfırdan yazdığım bir müzik örneğini aşağıya bırakıyorum.
Videomun açıklama kısmından ROM dosyasını indirebilir ve 3FD20 boş ofsetlerindeki müzik kodlarını inceleyebilirsiniz.
İyi eğlenceler.
-akdeniz, 2023