TFMX EDİTÖR V1.5
Retro bilgisayar
Kubilay Kılınç Merhaba! Tekrar birlikteyiz. Geçen ay TFMX'e şöyle bir göz atmıştık. Bu ay sohbetimize Makrolar ile devam edeceğiz, Ama her zamanki gibi Makrolar'a geçmeden önce bilmemiz gereken bazı şeyler var. Bunlar da bilgi kayıt ortamlarından çağırdığımız seslerin hafızada nasıl depolandıkları ve nasıl kullanıldıkları hakkında olacak.
Sesler; bilgi kayıt ortamlarından çağırıldıkları zaman hafızada daha önceden programcı tarafından kendilerine ayrılmış bölgeye yerleşirler. Artık bir sesin başlangıç adresi ve bitiş adresi olmak üzere iki adresi bulunmaktadır. Başlangıç adresi, sesin hafızada nereden itibaren yer işgal ettiğini bildirir. Bitiş adresi de, tabii ki sesin nerede sona erdiğini gösterir. Bu adresler birer rakamdır (TFMX editörde seslerin başlangıç ve bitiş adreslerinin rakamları hexadecimal (16'lık) sayı sistemindedir). Bu rakamlar makroları tanımlarken ana rehberlerimiz olacaklar. Seslerin başlangıç ve bitiş adreslerini Sample List menüsünden öğrenebiliriz.
Programcılar, hafızada bulunan bu sesleri çalabilmek için aşağıdaki işlem sırasını takip eden bir program yazarlar:
1- DMA kanallarını kapat. (Bu daha evvelden çalan bir sesi kesmek için yapılır. Zaten otomatik olarak daha evvel çalan ses kesilir, fakat bu esnada istenmeyen bir pıt pıt sesi oluşabilir veya ortalık birbirine karışabilir.)
2- Çalınacak sesin başlangıç ve bitiş adreslerini oku.
3- Sesin period'unu ayarla (Sesin dalga boyunu belirler.). 4- Ses şiddeti seviyesini ayarla. (Ses volümü)
5- DMA kanallarını aç (Artık ses insan kulağı tarafından işitilebilir hale gelir.). TFMX Editör Makrolarında da bu mantığın aynısını kullanacağız. Şimdi bu kısa bilgiden sonra hemen makro'lara geçelim. MAKROLAR
Makroları tasarlamak için ilk yapılacak iş, tabii ki edit macro menüsüne geçmek olacaktır. Bu menüde; çalışma sayfasının sol alt kenarında bulunan makro sayfalarını ileri veya geri çevirmemize izin veren "<", ">" işaretleri vardır. Mouse'un sol düğmesini kullanarak ya da klavyeden "<", ">" tuşlarına basarak bu seçenekleri kullanabiliriz. Ayrıca bu menüde yarattığımız makroları dinlemek için, mouse işaretçisini "TEST" yazan yerin üstüne getirip sol düğmeye basmamız kafi gelmektedir. Makroları test ettiğimiz yerin yanındaki yerde ise, test işlemini hangi nota üzerinden gerçekleştireceğimizi seçmek için bir evvelki işaretlere benzeyen iki 'ok' bulunmaktadır.
Makrolar, hafızada bulunan sesleri belirli bir programlama mantığı ile işleyerek kendi yarattığımız enstrümanlara dönüştürürler. Bu enstrümanlar çoğu zaman hafızadaki sesleri ile aynı özelliğe sahiptirler. Ancak bu sesleri türlü efektlere sokmak işin içine girince makroların kıymeti su yüzüne çıkıverir. Aşağıda makroların tüm komutlarını tek tek açıkladıktan sonra örnekler üzerinde bunları inceleyeceğiz.
MAKRO KOMUTLARI Komutların açıklamasında verilen ilk rakam, macroda sizin yazarak çağıracağınız komutun kodudur. Makro sayfasında bu kodu yazdığınız anda o satırda hemen komutun ismi olan cümle ve parametrelerinin yazım formu çıkacaktır. Daha sonra satırın en sağında size ayrılan yere bu parametrelerin değerlerini girerek o satırda ne işlemin yapılacağını belirtmiş olursunuz. Her komutta parametre girişleri farklı olmaktadır. Parametreler 6 hanelidir. Kullanılmayan haneler "." kullanılanlar ise "x" işaretiyle belirtilir. Bir komutta birden fazla parametre girilebilir. Bu durumda olan komutlarda 6 haneli olan parametre listesi "/" işaretiyle bölünerek belirtilmiştir.
00 - DMA off+Reset (Stop Sample and Reset all) : Bu komut DMA kanallarını kapatarak ses çıkış ünitesinden ses bulmasını engeller ve daha evvel işlevde olan makronun yaptıklarını devre dışı bırakır.
Hiçbir parametresi yoktur. Bu komutu aşağı yukarı her makronun ilk komutu olarak kullanacaksınız.
01 - DMA on (Start Sample at selected begin) : DMA kanallarını açar sesin çıkış ünitesine gitmesini sağlar. Böylece biz de tüm parametreleri ayarlanmış bir sesi duyarız. Bu komutun hiçbir parametresi yoktur.
02 - SetBegin xxxxxx Sample Start address : Makrolarda; hafızada bulunan, kullanmak istediğimiz sesin başlangıç adresini girmemiz gerekir. Bu adresi de "Sample List" menüsünden öğrenebiliriz.
03 - SetLen ..xxxx Sample-Length : Başlangıç adresini tanımladığınız sesin hafızada ne kadar yer kapladığını da belirtmeniz gerekir. Bunun için de bu komutun parametresine kullanacağınız sesin uzunluğunu belirten rakamı girmeniz yeterlidir. Bu rakamı, yine "Sample List" menüsünden öğrenebilirsiniz. Yalnız bu rakam hiçbir zaman 4 haneyi geçmez.

04 - Wait ..xxxx count (VBI's) : Makroları bir program olarak düşündüğümüzden, bazı program adımlarında makinamızın bu iş için fazla olan hızı nedeniyle bazı bekletmeler yapmamız gerekebilir. Örneğin bu aşırı hızdan dolayı yapılan bazı döngüler ve sıçramalar makronun kafasını karıştırabilir veya bir yankı yapan makroda her yankı arası biraz bekletme yapmamız gerekebilir. İşte bu ve buna benzer durumlarda, bu komutu devreye sokacağız. Bu komut; parametresine yazdığımız adım kadar bekler ve sonra kaldığı yerden devam eder.
05 - Loop xx/xxxx count/step : Döngü yapmak için kullanılan tek komut budur. "Step" parametresinde belirtilen adıma atlar ve "count" parametresinde bulunan rakam kadar bu atlamayı tekrar eder.
06 - Cont xx/xxxx macronumber/step: Bir başka makroya geçmemizi sağlar. Bu komutun avantajı bir makro sayfası dolduğunda devamını başka bir makroya yazabiliriz ancak makroların son komutları "—STOP—" olduğundan dolayı öteki devam edilecek olan makroya geçmeye fırsat kalmayabilir. İşte bu komut sayesinde komutların devamı bir başka makrodan alınır.
07.......................... STOP-----------------------: Makronun en son komutudur. Makronun bittiğini belirtir. Bu komutu biz yazmayız her makronun sonunda zaten bulunmaktadır.
08 - AddNote xx/xxxx note/detune : Kullanılan sesin tonunu belirler. Birinci parametreye yazılan değer sesin tonunu yarım ses etkiler. İkinci parametre ise, daha ince bir ayar yapar. Ayrıca makro çalışırken her kullanıldığında sesin notasını parametreye yazılan değer kadar artırır.
09 - SetNote xx/xxxx note/detune : AddNote ile aynı işi yapar. Aradaki tek fark, SetNote kullanıldığında paternlere hangi notayı yazarsak yazalım, hep aynı sesin çıkmasını sağlamasıdır. Ayrıca her kullanıldığında sesin nota değerini artırmaz. Bu komut vurmalı çalgılarda bazen oldukça işe yaramaktadır.
0A - Reset Vibrato-Portamento-Envelope :
Daha evvel yapılmış olan Vibrato, Portamento, Envelope komutlarının parametrelerini temizler.
0B - Portamento xx/.../xx count/speed: Sesin tonunu yukarıya veya aşağıya kaydırır. İlk parametre portamento süresini. İkinci parametre ise portamento hızını belirtir.
0C - Vibrato xx/./xx speed/intensity : Sesi vibrasyona sokar. Sesin tonunu belirli bir salınımla kaydırır. Bu efekt çok hafif kullanıldığında seslere çok tatlı bir doğallık katar. İlk parametre vibrasyon salınım hızını, ikinci ise vibrasyon şiddetini belirler.
0D - AddVolume ....xx volume 00-3F: Ses şiddeti seviyesini ayarlar. Parametresi en az 0, en çok 3F değerini alır. Yine "AddNote" komutunda olduğu gibi makro içerisinde her kullanılışında sesin volümünü artırır. Ancak bu artış en fazla 3F değerine kadar olur daha sonra sabit kalır.
0E - SetVolume ....xx volume 00-3F : AddVolume ile aynı işi yaparlar. Fakat SetVolume ile ayarlanan ses şiddeti paternlerde kullanılan komutlarla değiştirilemez.
0F - Envelope xx/xx/xx speed/count/endvol: Sesin ses şiddetini bulunduğu seviyeden daha yüksek veya daha düşük ses seviyesine doğru otomatik olarak azaltır (veya çoğaltır). İlk parametre düşüş (veya artış) hızını, ikinci parametre düşüş (veya artış) süresini ve son parametre de en son ses seviyesini belirtir.
10 - No Entry : Hiç bir önemi ve işlevi yoktur. Sanınm bu boş komut bölgeleri ileride çıkacak yeni versiyonlardaki yeni komutlar için aynlmış.
11 - AddBegin ..xxxx add to start adress : Sesin; daha evvel makronun başında tanımlanmış başlangıç adresine parametreye yazılan rakam kadar adres ekler. Böylece sesin başlangıç adresi kaydınlmış olur.
12 - AddLen ,.xxxx add to sample-Lenght: Add Begin'e benzer bir işlev görür. Burada Sesin başlangıcı yerine sesin hafızada kapladığı yeri belirten daha evvel SetLen komutuyla girilmiş olan sayı arttınlır. Parametreye kaç arttırılacağı girilmelidir.
13 - DMAoff stop sample but no clear: DMA kanallarını kapatır. Ses hala çalmaktadır, ancak ses çıkış ünitesine ulaşmamaktadır. Bu komutun hiçbir paranetresi yoktur.
14 - Wait key up ....xx count (VBI's) : "Wait" komutuyla işlev bakımından hiçbir farkı yoktur. Fakat kullanım bakımından parametreye yazılan rakam hem iki handedir, hem de öteki "wait'"e göre ters orantılıdır. 15 - Go sub macro xx/xxxx macro-number/step : Bir başka makroya atlamaya yarar. İlk parametreye atlanacak olan makronun numarası, ikinci parametreye ise atlanan makro nun kaçıncı adımına gidileceği belirtilir.
16 -------------------- Return old Macro ...........................: Örneğin 10. makrodan 22. makroya atladık. Artık komutlar 22. makrodan alınmaktadır. Eğer tekrar eski makroya dönmek istiyorsak sıçradığımız makronun sonuna bu komutu yazmalıyız. Geri dönüş olduğunda eski makronun en başına değil "Go sub Macro" komutundan sonraki komuta dönülür.
17 - SetPeriod ..xxxx DMA period: DMA kanallarının çalışma hızını ayarlar. Böylece çalınan sesin tonu (aslında çalım hızı) değiştirilmiş olur.
18 - Sample Loop ,.xxxxrelatıve adress : Eğer kullandığımız ses devamlı tekrarlanan cinsten yani "Loop" konumunda ise, ses hafızaya yüklendiğinde "Sample Listesi'"ne başlangıç ve bitiş adreslerinden başka bir değer daha yazılır. Bu da "Loop" edilecek kısmın başlangıç adresidir. Eğer biz sesi istediğimiz bir şekilde devamlı tekrarlatmak istiyorsak, bu komutun parametresine sample listesindeki sese ait 3. rakamı girmeliyiz. Bu konuda detaylı bilgi edinmek isteyenler 3. sayıdaki "AudioMaster II" adlı yazıda "LOOP" ile ilgili bölümü okuyabilirler.
19 ............... Set one Shot Sample----------------: Makronun son komutlarından biridir. Eğer bu komut makronun sondan bir evvelki komutu olarak yazılmazsa makro devamlı tekrarlanır. Bu komut sayesinde makro bir defa işlevini yerine getirir ve devamlı kendini tekrarlamaz.
1A - No Entry : lA'dan FF'e olan her komut bizim TFMX'imizde şimdilik boş.
……………. …………….. FF - S o Entry:
MAKRO ÖRNEKLERİ ÖRNEK 1 : île önce işe en basit makrodan başlıyalım. Bu makro yapması gereken en basit görevi yapacak yani hafızada bulunan bir sesi çalacak.
00 DMAoff+Reset (stop sample & reset all) 000000 2 SetBegin xxxxxx 0120FE 3 SetLen . .xxxx 004400 OD AddVolume ... .xx volume 00-3F 000015 08 AddNote xx/xxxx note/detune 0100FF 4 Wait . .xxxx count (VBI's) 0000000 19--------------------- Set one shot sample ....................... 07..................................... STOP ...................................... Yukarıdaki makroda 04 kodlu komut haricinde her komutun pa ndi isteğinize göre değiştirebilirsiniz. rametresini ke ÖRNEK 2: Bu makro kullanılan sesi; tonunu aşağıya doğru kaydınrak çalar. Sesin tınısının kaydırılmasına "Portamento" denir.
00 DMAoff+Reset (stop sample & reset all)
000000
2 SetBegin xxxxxx
0120FE
3 SetLen . .xxxx
004400
OD AddVolume ... .xx volume 00-3F
000015
8 AddNote xx/xxxx note/detune
0100FF
0B Portamento xx/xxxx count/step
010018
9 SetNote xx/xxxx note/detune
000000
2 SetBegin xxxxxx sample startadress 000000 3 SetLen . .xxxx sample lenght 000001 4 Wait . .xxxx count (VBI's) 0000000 19....................— Set one shot sample ........................... 07........................................STOP--------------------------- Yukarıdaki makroda 09, 02, 03 ve 04 numaralı komutların parametreleri bu makroda standarttır. Diğer komutların parametreleri sizin isteğinize göre değişmektedir. Burada "AddNote" sesin başjangıç tonunu, "SetNote" ise sesin bitiş tonunu belirtmektedir.
ÖRNEK 3.1: Şimdiki iki örnek "Envelope" komutu hakkında olacak. İlk örnek Loop halinde olan bir sesin volümünü 0'dan yavaş yavaş arttıracak.
00 DMAoff+Reset (stop sample & reset all) 000000
2 SetBegin xxxxxx
0189A4
3 SetLen
. .xxxx
0006DF
OD AddVolume ___ xx volume 00-3F
000000
08 AddNote xx/xxxx note/detune
000000
01 DM Aon (start sample at selected begin)
000000
OF Envelope xx/xx/xx speed/count/endvol 010420
04 Wait
.
.xxxx
count
(VBI's)
000000
18 SampleLoop . .xxxx relatıve adress 000002
04
Wait
.
.xxxx
count
(VBI's)
000000
07 STOP ----------------- ---
Bu makroda sesin başlangıcının ses seviyesi "AddVolume" ile
belirtildikten sonra sesin ulaşacağı son noktanın ses seviyesi
Envolepe" komutunun son parametresinde belirtilmelidir. Ayrı-
ca burada önemli komutlardan biri de "SampleLoop" komutudur.
Bu komutda bulunan parametre; Audiomaster II programında
bulunan, baştaki loop kursorunun sesin başlangıç adresinden kaç
byte" ötede olduğunun değerini alır.
ÖRNEK 3.2: Bu makroda yukarıdaki örneğe benzer bir mantıkla çalışır. Tek farkı, başlangıç ses seviyesi bu sefer bitiş ses seviyesine göre daha çoktur. Bu yüzden ses seviyesi zaman içerisinde çoğalacağına azılır. Burada yine "AddVolume" başlangıç volümünü "Envelope" komutunun son parametresi ise son volüm seviyesini belirtir.
00 DMAoff+Reset (stop sample & reset all)
000000
2 SetBegin xxxxxx
0189A4
3 SetLen . .xxxx
0006DF
OD AddVolume ... .xx volume 00-3F
00003F
08 AddNote xx/xxxx note/detune
000000
01 DM Aon (start sample at selected begin) 000000 OF Envelope xx/xx/xx speed/count/endvol 010400 04 Wait . .xxxx count (VBI's) 000000 18 SampleLoop . .xxxx relatıve adress 000002 04 Wait . .xxxx count (VBI's) 000000 07..................................... STOP .................................. ----- ÖRNEK 4: Bu örnek, herhangi bir sese yankı efekti verir. Yine bu işi "Envelope" komutu ile halldeceğiz.
00 DMAoff+Reset (stop sample & reset all)
000000
OD AddVolume ___xx
volume 00-3F
000014
OF Envelope
xx/xx/xx speed/count endvol 030300
13 DMAoff stop sample but no clear
000000
2 SetBegin
xxxxxx
001169
3
SetLen . .xxxx
0001B8
08 AddNote xx/xxxx note/detune
000000
01 DMAon (start sample at selected begin)
000000
04 Wait
.
.xxxx
count
(VBI's)
000000
19 Set one shot sample ------------------------------------------
4 Wait
. .xxxx count (VBI's)
000009
5
Loop
xx/xxxx count/step
000003
04 Wait . .xxxx count (VBI's)
000000
07........................................STOP .......................................
Buradaki yankı yapma mantığı aslında oldukça basitdir (ayrıca el-
de edilen yankı da çok basit). Ancak buna karşın müzik içerisinde
yine de büyük iş görüyor. Burada ses devamlı tekrarlanmasına kar-
şın biryandan da ses ses seviyesi düşürülüyor ve meydana bu yankı
çıkıyor.
Evet Makrolann da öyküsü buraya kadar. Sizler bu makro örneklerinin özünü kavradıktan sonra çoğaltmanız mümkün. Sanırım Amiga'da ciddi bir şekilde müzikle uğraşanların bu program kesinlikle ilgisini çekmiştir. Sizler eğer karmaşık olan bu konu hakkında sormak istedikleriniz olursa çekinmeden bana yazabilirsiniz (Tabii ki dergiye).
Gelecek ay "Pattern'ler de buluşmak üzere hoşcakalın…!!!!