Toprak
26 Ocak 2015, 01:48
Ders: Playing sounds
Tarih: 31 Ocak 2008 - 22:45
Yazan: L4roXyL
Amac: MP3 player vb. çalışmalar yapmak isteyenler için hazırladım.
NOT: Artık amaç'da giriyoruz .)
-
/splay komutu bildiğiniz veya bilmediğiniz üzere mIRC üzerinde mp3/mid/waw uzantılı dosyaları oynatabilmenize/çalabilmenize olanak sağlamaktadır.
Kullanımı(mIRC help dosyasında);
/splay -cwmpq [filename | stop | pause | resume | seek | skip] [pos]
Şeklinde yer almaktadır.
Parametreler;
-w(wave): Wav uzantılı dosyaları çalmak için kullanılır.
-m(midi): Mid uzantılı dosyaları çalmak için kullanılır.
-p(mp3): MP3 uzantılı dosyaları çalmak için kullanılır.
-q: Bu parametre ise, şarkı listesi yapmanızı sağlar. Yani şöyle açıklıyayım, mesela deneme.mp3 mp3'ü çalıyor. Ve siz /splay -q deneme2.mp3 yaptınız. Deneme.mp3 mp3'ü bitince, deneme2.mp3 mp3'ü otomatik olarak çalıcaktır.
-c: Bu parametre ise, "-q" parametresi ile oluşturduğunuz listeyi silicektir.
Çalan parçayı sonlandırmak için: /splay stop
Çalan parçayı durdurmak için: /splay pause
Durdurulan şarkıyı devam ettirmek için: /splay resume
Parçayı ilerletmek veya geriletmek için: /splay seek pos(aşşağıda açıklıyacağım)
Bir sonraki parçaya atlamak için: /splay skip
Komutlarını kullanıyoruz.
/vol -wmpvuN [volume]
Bu komut ise, çalan mp3/midi/wave dosyalarını veya bilgisayarın ana ses'ini açmak/kapatmak/kısmak için kullanılır.
Bu komut hakkında bir kaç açıklama yapıcağım;
Ses miktar'ı 0 ile 65535 arasında değişmektedir. Görüldüğü gibi, 0(ses sıfır'da demek) 65535 ise en yüksek ses seviyesi demek.
Bunun mantığını en son yazdığım kod'da anlıyacaksınız.
Parametreler;
-w: Wave dosyalarının seslerini kontrol etmek veya işlev yapmak için kullanılıyor.
-p: MP3 dosyalarının seslerini kontrol etmek veya işlev yapmak için kullanılıyor.
-m: Midi dosyalarının seslerini kontrol etmek veya işlev yapmak için kullanılıyor.
-v: Bilgisayarınızın ana sesi üzerinde işlem yapmanızı sağlar. Şöyleki; /vol -v 0-65535
-uN: Buradaki "N" yerine "1" ve "2" rakamları gelmek zorundadır. Bu parametre çalan mp3/midi/wave dosyasının veya pc ana sesini açmak ve kapatmak için kullanılır.
Bilgisayarın ana ses konsolunu sessiz(mute) hale getirmek için: /vol -vu1 komutunu kullanıcaksınız.
Yine bilgisayarınızın ana ses konsolunu sessiz(mute) mod'dan çıkarmak için: /vol -vu2 komutunu kullanıcaksınız.
NOT: Burada dikkat etmeniz gereken önemli nokta, parametrelerdir. Yani /vol -pu1 yaptığınız'da sadece mp3 dosyaları için, mute konumuna geçmiş olursunuz. Bu olay sesi kısma/açma olayların'dada aynıdır.
Identifier'lar;
1- $vol(wave | midi | song | master) - Prop: mute
Bu identifier, belirtilen dosya biçimi için veya pc ana(master) ses seviyesini belirtir.
Örneğin; //echo -ae $vol(midi) mid uzantılı ses dosyası için, ayarlanmış ses miktarını verir.
Properties: mute
Mute prop'u ise, belirtilen dosya biçimi veya bilgisayarın ana ses'inin açık olup olmaduğını "$true ve $false" yanıtları ile bize bildirir.
Örneğin; //echo -a $vol(master).mute bilgisayarın ana ses'inin açık olup olmadığını kontrol eder.
Eğer gelen cevap, $false ise ses açık, gelen cevap $true ise ses kapalı demektir.
2- $inwave(wav dosyası), $inmidi(mid dosyası), $insong(mp3 dosyası) - Prop: fname, pos, length, pause
Bu identifier'lar, mp3/wav/mid dosyalarının çalıp/çalmadığını kontrol etmek için kullanılır.
Tabiki properties'larla çalan veri hakkında detaylı bilgiler alabiliyorsunuz.
Örneğin: //echo -a $insong yaptığınız'da, eğer çalan bir "MP3" dosyası varsa $true olarak yanıt alırsınız.
Aynı sistem diğerleri($inwave, $inmidi) için'de geçerlidir.
Properties: fname, pos, length, pause
//echo -a $isnong.fname (Çalan MP3 dosyasının hangi klasör'de bulunduğunu gösterir)
//echo -a $insong.pos (Çalan MP3 dosyasının bulunduğu ilerlerme miktarını gösterir)
//echo -a $insong.length (Çalan MP3 dosyasının uzunluğunu verir)
//echo -a $insong.pause (Çalan MP3 dosyasının durdurulup/durdurulmadığını kontrol eder. Cevaplar yine $true, $false şeklinde gelmektedir.)
NOT: $insong ile $inmp3 aynıdır.
3- $sound(filename) - Prop: album, title, artist, year, comment, genre, track, length, version, bitrate, vbr, sample, mode, copyright, private, crc, .id3, .tag, .tags
Bu identifier en çok bilgiyi veren identifier'ımızdır.
Properties:
//echo -a $sound($insong.fname).album (Çalan MP3'ün albüm ismini gösterir.)
//echo -a $sound($insong.fname).title (Çalan MP3'ün başlık ismini gösterir.)
//echo -a $sound($insong.fname).artist (Çalan MP3'e girilmiş olan şarkıcı ismini gösterir.)
//echo -a $sound($insong.fname).year (Çalan MP3'ün yılını/senesini gösterir.)
//echo -a $sound($insong.fname).comment (Çalan MP3'e girilen yorum'u gösterir.)
//echo -a $sound($insong.fname).genre (Çalan MP3'ün ekolayzır'ını gösterir.)
//echo -a $sound($insong.fname).length (Çalan MP3'ün uzunluğunu gösterir.)
//echo -a $sound($insong.fname).version (Çalan MP3'ün versiyon bilgisini gösterir.)
//echo -a $sound($insong.fname).bitrate (Çalan MP3'ün kbps değerini gösterir.)
//echo -a $sound($insong.fname).sample (Çalan MP3'ün khz değerini gösterir.)
//echo -a $sound($insong.fname).mode (Çalan MP3'ün hangi şekilde çaldığını gösterir.)
//echo -a $sound($insong.fname).copyright (Çalan MP3'ün telif hakkı bilgisini gösterir.)
//echo -a $sound($insong.fname).private (Çalan MP3'ün özel olup/olmadığını gösterir.)
//echo -a $sound($insong.fname).crc (Çalan MP3'ün korumalı olup/olmadığını gösterir.)
//echo -a $sound($insong.fname).id3 (Çalan MP3'ü hakkında versiyon bilgisini gösterir.)
//echo -a $sound($insong.fname).tag (Çalan MP3'de kaç adet tag bulunduğunu gösterir.)
//echo -a $sound($insong.fname).tags (Çalan MP3'deki tüm tag'ları gösterir.)
NOT: Örnek olarak $insong kullandık, tabiki siz çaldığı taktirde $inwave/$inmidi kullanabilirsiniz. Yukarıdaki properties'ların hepsi bunlardada geçerlidir.
Birde, /sound komutu bulunmaktadır.
Kullanım şekli; /sound [on|off|nick/channel] <file.wav|file.mid|file.mp3> <message>Bu komut ise çalan parçayı belirlediğiniz nick'e veya kanal'a, messages kısmına eklediğiniz mesaj ile birlikte bildiri yapar.
Örneğin; /sound #kanal deneme.mp3 Deneme.mp3 dinliyorum.
ON/OFF ses isteklerini açıp kapatmanıza yarar.
Playing sounds hakkında event'ler;
1- on midiend
2- on waveend
3- on mp3end
Bu event'ler, mp3/mid/wav dosyaları sona erdikleri zaman aktif olan eventlerdir.
Event içerisin'de, $filename sona eren dosya ismini verir.
Örnek kullanım: on *:mp3end:/splay -p deneme.mp3
Dersimiz burada sona ermiştir.
Ne gibi bir kod yazılabilir ders sonunda?
Basit bir mp3 çalar yapalım;
on ^*:close:@mp3:.timersr off | splay stop
alias sure var %sure = $time($int($calc($insong($insong).length / 1000)),nn:ss),%sure2 = $time($round($calc($insong.pos / 1000),0),nn:ss),%byt = $bytes($file($insong.fname).size,m),%khz = $iif($calc($sound($insong.fname).sample /1000),$calc($sound($insong.fname).sample /1000),YOK.),%kbps = $iif($sound($insong.fname).bitrate,$sound($insong. fname).bitrate,YOK.) | rline 4 @MP3 3 $str($chr(160),15) $+(%sure2,/,%sure) - Kbps: %kbps - Khz: %khz - Boyut: %byt
alias mp3player $iif(!$window(@mp3),window -lCadk0 +l @MP3 0 0 370 300) | aline 5 @MP3 $str(-,38) MP3 Çalar $str(-,40)
menu @MP3 {
dclick:splay -p $findfile(%q,$gettok($sline($active,1),1,9),1) | .timersr 0 1 sure
Liste yükle:set %q $sdir(C:\,MP3 klasörünü seçiniz.) | if (!%q) echo -aet Liste seçmediniz. | else aline 0 @mp3 - | aline 0 @mp3 - | aline 0 @mp3 - | return $findfile(%q,*.mp3,0,aline 2 @mp3 $nopath($1-) $+($chr(9),$chr(9)) $time($calc($sound($1-).length / 1000),nn:ss))
-
Ses ayarı:vol -p $calc(655.35 * $iif($input(1 ile 100 arasında ses limiti giriniz.,eo) == $null,100))
-
Durdur/Devam:$iif($insong.pause,splay resume,$iif($insong,splay pause))
-
Bitir:$iif($insong,splay stop)
-
Listeyi temizle:dline @mp3 $+(2,-,$line(@mp3,0)) | splay stop | .timersr off | $iif($input(Liste temizlendi.,o,Temizlendi) == $true,halt,halt)
-
Kapat:.timersr off | window -c @mp3 | if ($insong || $inwave || $inmidi) { splay stop }
}
Kod'umuzu açıklıyalım;
/mp3player aliasımız;
alias mp3player $iif(!$window(@mp3),window -lCadk0 +l @MP3 0 0 370 300) | aline 5 @MP3 $str(-,38) MP3 Çalar $str(-,40)
;Eğer @mp3 isminde bir pencere yok ise, pencere açıyoruz.
;Parametreler;
;l: Listbox yüklüyoruz.
;C: Pencereyi ortada açıyoruz.
;a: Aktif ekranda açıyoruz.
;d: Masa üstünde açıyoruz.
;k0: @ karakterini pencereden ayıklıyoruz.
;+l: Tool yüklüyoruz.
;Devamında /aline ile pencerenin ilk satırına, MP3 Çalar yazdırıyoruz.
;Tabi $str identifier'ını kullanarak text'in hem başına 38, sonuna 40 adet "-" karakteri koyuyoruz.
Menümüz;
menu @MP3 {
;listbox'a yüklediğimiz mp3'lerden herhangi birisine "çift tıkladığımız'da" veriyi s/play -p(mp3) komutu ile çalıyoruz.
;tabi ilk önce veriyi $gettok identifier'ı ile ayırıyoruz. Bunu yapmamızın sebebi, satır'daki mp3'ü almak.
;devamında /timer komutu ile "sr" isminde bir timer açarak her saniye başı /sure alias'ını uygulatıyoruz
dclick:splay -p $findfile(%q,$gettok($sline($active,1),1,9),1) | .timersr 0 1 sure
;liste yükle isminde bir popup oluşturuyoruz. Bundan sonrasına dikkat;
;devamında, %q değerine seçilen klasör ismini atıyoruz. Eğer klasör seçilmez ise /echo komutu ile uyarı verdiriyoruz. Eğer liste seçilir ise;
;/aline komutu ile 3 satır "-" karakterini yazıdıyoruz.
;Devamında, %q değerine atanan klasör içindeki tüm .mp3 uzantılı dosyaları $findfile identifier'ının yardımı ile $nopath kullanarak pencere içine yüklüyoruz.
;Yalnız burada "$time($calc($sound($1-).length / 1000),nn:ss)" kısım önemli. Buradaki $1- $findfile identifier'ının bize verdiği tüm *mp3 uzantılı dosyalar.
;$sound($1-).length ile mp3 dosyasının, uzunluğunu alıyoruz. Ve 1000'e bölüyoruz. Son olarak $time identifier'ı ile, bu veriyi dakikaya(nn) ve saniyeye(ss) çeviriyoruz.
;Aradaki $+($chr(9),$chr(9)) kısmı ile 2 adet TAB koyuyoruz. Bunu yapmamızın sebebi, mp3'ler ile dakikaların bitişik olmamasıdır. Burada $str identifier'ıda kullanabilirdik. Niye kullanmadım yahu? Neyse devam edelim :)
Liste yükle:set %q $sdir(C:\,MP3 klasörünü seçiniz.) | if (!%q) echo -aet Liste seçmediniz. | else aline 0 @mp3 - | aline 0 @mp3 - | aline 0 @mp3 - | return $findfile(%q,*.mp3,0,aline 2 @mp3 $nopath($1-) $+($chr(9),$chr(9)) $time($calc($sound($1-).length / 1000),nn:ss))
-
;Burada yukarıda açıkladığım gibi ses limitini giriyoruz(istemiyen girmez)
;$input identifier'ındaki "e" parametresi editbox, "o" parametresi ise, ok butonu demektir.
;Neyse $input'dan aldığımız veri ile 655.35(en düşük ses limit) çarpıyoruz. Ve aldığımız veriyi "/vol -p" sadece mp3ler için işliyoruz.
;tabi siz gidipte "10000" veya "adsasd" sallamayn, zaten belirtmişim 1 ile 100 arasında bir rakam girin diye. He ben bunu yasaklarmıydım? Evet. Ama amac basit bir kod yazmak zaten kısa ve öz .)
Ses ayarı:vol -p $calc(655.35 * $iif($input(1 ile 100 arasında ses limiti giriniz.,eo) == $null,100))
-
;Durdur/devam adında bir popup daha ekliyoruz. Bu popup'a tıkladığınız'da;
;Eğer çalan mp3 durmuş ise, devam edicektir. Eğer pause modun'da değil ise, durdurulacaktır.
;gayet basit yani.
Durdur/Devam:$iif($insong.pause,splay resume,$iif($insong,splay pause))
-
;Burada eğer çalan bir mp3 dosyası var ise, "/splay stop" komutu ile mp3'ü sonlandırıyoruz.
;Buda gayet basit.
Bitir:$iif($insong,splay stop)
-
;Burada gördüğünüz gibi ama listeyi temizlemek.
;Popup'a tıkladığınız'da 2 ile son satır arasındaki tüm satırları /dline komutu ile temizliyoruz.
;Sonrada $input ile temizlendiğini belirtiyoruz. Bunu neden koydum :S Şimdi garip geldi. Sanırım şekil olsun diye koydum.
;Neyse idare edin .)
Listeyi temizle:dline @mp3 $+(2,-,$line(@mp3,0)) | splay stop | .timersr off | $iif($input(Liste temizlendi.,o,Temizlendi) == $true,halt,halt)
-
;Adı üstünde kapat popup'una tıkladığımız'da; sr isminde timer'ı kapatıyoruz.
;Devamında pencereyi kapatıyoruz. Ve son olarak çalan bir mp3 var ise sonlandırıyoruz.
Kapat:.timersr off | window -c @mp3 | $iif($insong,splay stop)
}
/sure aliasımız;
alias sure var %sure = $time($int($calc($insong($insong).length / 1000)),nn:ss),%sure2 = $time($round($calc($insong.pos / 1000),0),nn:ss),%byt = $bytes($file($insong.fname).size,m),%khz = $iif($calc($sound($insong.fname).sample /1000),$calc($sound($insong.fname).sample /1000),YOK.),%kbps = $iif($sound($insong.fname).bitrate,$sound($insong. fname).bitrate,YOK.) | rline 4 @MP3 3 $str($chr(160),15) $+(%sure2,/,%sure) - Kbps: %kbps - Khz: %khz - Boyut: %byt
;OO bu gerçekten önemli. Şimdi beni iyi dinlenemenizi istiyorum.
;İlk olarak %sure variablesine, yukarı'dada anlattığım gibi, çalan mp3'ün uzunluğunu alarak,
;ve bu uzunluğu 1000'e bölerek $time identifier'ı ile süreyi elde ediyoruz.
;Yani burada çalan şarkının süresini meydana çıkartıyoruz.
;%sure2 değerine ise $insong.pos(çalan mp3'ün ilerleme safası)'nı 1000'e bölüyoruz.
;$round ile yuvarlıyarak, $time identifier'ı ile yine süreye çeviriyoruz.
;Ama buradaki fark ne? Bu süre devamlı değişiyor/yükseliyor. Biz'de bu süreyi pencereye yazırcaz ama az bekleyin oraya daha gelmedik.
;$bytes identifier'ı ile çalan mp3'ün boyutunu "m" anahtarını kullanarak MB'a uyarlıyoruz. Ki bundan anlamıyacak birşey yok, çok basit.
;Unutmadan bir'de bu veriyi %byt variablesine atıyoruz.
;Devamında, yukarıda söylemiştim ".sample" prop'u khz değerini veriyor diye.
;Ama tabiki cart diye vermiyor, biz bunu 1000'e bölüyoruz o zaman birşeye benziyor.
;Sonra bu khz değerini %khz variablesine atıyoruz. ve devam ediyoruz (sıkıldım bu arada :+)
;Devamında, yine yukarıda söylediğim gibi ".bitrate" prop'u kbps değerini alıyoruz.
;Bu değeri %kbps variablesine atıyoruz. He birde %khz ve %kbps variablelerine değer atarken, $iif kullandım.
;Bazen bu tanıtı alamıyoruz. O yüzde eğer yanıt gelmez ise, olmayan değer yerine "YOK." diye yazdırıyoruz.
;-
;VE son olarak /rline(replace line) komutu ile aldığımız tüm değer'leri 3. satır'a yazdırıyoruz.
;Şimdi diyeceksiniz'ki, "timer niye açtın kardeşim?
;Timer'ı açmasaydım, çalan mp3'ün ilerlemesini göremiyecektiniz. Boşuna açmadık yani.
on close event'imiz;
on ^*:close:@mp3:.timersr off | splay stop
;Gayet basit, @mp3 penceresi kapandığında, "sr" isminde timer'ı kapatıyoruz. Ve çalan mp3'ü sonlandırıyoruz.
;Bunu yapmazsak mp3 çalmaya devam eder. Ve timer'a atadığımız /sure komutu her saniye tekrarlar, kafayı yersiniz.
Dersimiz ve kod açıklamamız burada sona ermiştir.
Umarım birşeyler öğrenebilirsiniz.
Bu arada mp3 çalar'ı demek için; /mp3player yazınız.
Tarih: 31 Ocak 2008 - 22:45
Yazan: L4roXyL
Amac: MP3 player vb. çalışmalar yapmak isteyenler için hazırladım.
NOT: Artık amaç'da giriyoruz .)
-
/splay komutu bildiğiniz veya bilmediğiniz üzere mIRC üzerinde mp3/mid/waw uzantılı dosyaları oynatabilmenize/çalabilmenize olanak sağlamaktadır.
Kullanımı(mIRC help dosyasında);
/splay -cwmpq [filename | stop | pause | resume | seek | skip] [pos]
Şeklinde yer almaktadır.
Parametreler;
-w(wave): Wav uzantılı dosyaları çalmak için kullanılır.
-m(midi): Mid uzantılı dosyaları çalmak için kullanılır.
-p(mp3): MP3 uzantılı dosyaları çalmak için kullanılır.
-q: Bu parametre ise, şarkı listesi yapmanızı sağlar. Yani şöyle açıklıyayım, mesela deneme.mp3 mp3'ü çalıyor. Ve siz /splay -q deneme2.mp3 yaptınız. Deneme.mp3 mp3'ü bitince, deneme2.mp3 mp3'ü otomatik olarak çalıcaktır.
-c: Bu parametre ise, "-q" parametresi ile oluşturduğunuz listeyi silicektir.
Çalan parçayı sonlandırmak için: /splay stop
Çalan parçayı durdurmak için: /splay pause
Durdurulan şarkıyı devam ettirmek için: /splay resume
Parçayı ilerletmek veya geriletmek için: /splay seek pos(aşşağıda açıklıyacağım)
Bir sonraki parçaya atlamak için: /splay skip
Komutlarını kullanıyoruz.
/vol -wmpvuN [volume]
Bu komut ise, çalan mp3/midi/wave dosyalarını veya bilgisayarın ana ses'ini açmak/kapatmak/kısmak için kullanılır.
Bu komut hakkında bir kaç açıklama yapıcağım;
Ses miktar'ı 0 ile 65535 arasında değişmektedir. Görüldüğü gibi, 0(ses sıfır'da demek) 65535 ise en yüksek ses seviyesi demek.
Bunun mantığını en son yazdığım kod'da anlıyacaksınız.
Parametreler;
-w: Wave dosyalarının seslerini kontrol etmek veya işlev yapmak için kullanılıyor.
-p: MP3 dosyalarının seslerini kontrol etmek veya işlev yapmak için kullanılıyor.
-m: Midi dosyalarının seslerini kontrol etmek veya işlev yapmak için kullanılıyor.
-v: Bilgisayarınızın ana sesi üzerinde işlem yapmanızı sağlar. Şöyleki; /vol -v 0-65535
-uN: Buradaki "N" yerine "1" ve "2" rakamları gelmek zorundadır. Bu parametre çalan mp3/midi/wave dosyasının veya pc ana sesini açmak ve kapatmak için kullanılır.
Bilgisayarın ana ses konsolunu sessiz(mute) hale getirmek için: /vol -vu1 komutunu kullanıcaksınız.
Yine bilgisayarınızın ana ses konsolunu sessiz(mute) mod'dan çıkarmak için: /vol -vu2 komutunu kullanıcaksınız.
NOT: Burada dikkat etmeniz gereken önemli nokta, parametrelerdir. Yani /vol -pu1 yaptığınız'da sadece mp3 dosyaları için, mute konumuna geçmiş olursunuz. Bu olay sesi kısma/açma olayların'dada aynıdır.
Identifier'lar;
1- $vol(wave | midi | song | master) - Prop: mute
Bu identifier, belirtilen dosya biçimi için veya pc ana(master) ses seviyesini belirtir.
Örneğin; //echo -ae $vol(midi) mid uzantılı ses dosyası için, ayarlanmış ses miktarını verir.
Properties: mute
Mute prop'u ise, belirtilen dosya biçimi veya bilgisayarın ana ses'inin açık olup olmaduğını "$true ve $false" yanıtları ile bize bildirir.
Örneğin; //echo -a $vol(master).mute bilgisayarın ana ses'inin açık olup olmadığını kontrol eder.
Eğer gelen cevap, $false ise ses açık, gelen cevap $true ise ses kapalı demektir.
2- $inwave(wav dosyası), $inmidi(mid dosyası), $insong(mp3 dosyası) - Prop: fname, pos, length, pause
Bu identifier'lar, mp3/wav/mid dosyalarının çalıp/çalmadığını kontrol etmek için kullanılır.
Tabiki properties'larla çalan veri hakkında detaylı bilgiler alabiliyorsunuz.
Örneğin: //echo -a $insong yaptığınız'da, eğer çalan bir "MP3" dosyası varsa $true olarak yanıt alırsınız.
Aynı sistem diğerleri($inwave, $inmidi) için'de geçerlidir.
Properties: fname, pos, length, pause
//echo -a $isnong.fname (Çalan MP3 dosyasının hangi klasör'de bulunduğunu gösterir)
//echo -a $insong.pos (Çalan MP3 dosyasının bulunduğu ilerlerme miktarını gösterir)
//echo -a $insong.length (Çalan MP3 dosyasının uzunluğunu verir)
//echo -a $insong.pause (Çalan MP3 dosyasının durdurulup/durdurulmadığını kontrol eder. Cevaplar yine $true, $false şeklinde gelmektedir.)
NOT: $insong ile $inmp3 aynıdır.
3- $sound(filename) - Prop: album, title, artist, year, comment, genre, track, length, version, bitrate, vbr, sample, mode, copyright, private, crc, .id3, .tag, .tags
Bu identifier en çok bilgiyi veren identifier'ımızdır.
Properties:
//echo -a $sound($insong.fname).album (Çalan MP3'ün albüm ismini gösterir.)
//echo -a $sound($insong.fname).title (Çalan MP3'ün başlık ismini gösterir.)
//echo -a $sound($insong.fname).artist (Çalan MP3'e girilmiş olan şarkıcı ismini gösterir.)
//echo -a $sound($insong.fname).year (Çalan MP3'ün yılını/senesini gösterir.)
//echo -a $sound($insong.fname).comment (Çalan MP3'e girilen yorum'u gösterir.)
//echo -a $sound($insong.fname).genre (Çalan MP3'ün ekolayzır'ını gösterir.)
//echo -a $sound($insong.fname).length (Çalan MP3'ün uzunluğunu gösterir.)
//echo -a $sound($insong.fname).version (Çalan MP3'ün versiyon bilgisini gösterir.)
//echo -a $sound($insong.fname).bitrate (Çalan MP3'ün kbps değerini gösterir.)
//echo -a $sound($insong.fname).sample (Çalan MP3'ün khz değerini gösterir.)
//echo -a $sound($insong.fname).mode (Çalan MP3'ün hangi şekilde çaldığını gösterir.)
//echo -a $sound($insong.fname).copyright (Çalan MP3'ün telif hakkı bilgisini gösterir.)
//echo -a $sound($insong.fname).private (Çalan MP3'ün özel olup/olmadığını gösterir.)
//echo -a $sound($insong.fname).crc (Çalan MP3'ün korumalı olup/olmadığını gösterir.)
//echo -a $sound($insong.fname).id3 (Çalan MP3'ü hakkında versiyon bilgisini gösterir.)
//echo -a $sound($insong.fname).tag (Çalan MP3'de kaç adet tag bulunduğunu gösterir.)
//echo -a $sound($insong.fname).tags (Çalan MP3'deki tüm tag'ları gösterir.)
NOT: Örnek olarak $insong kullandık, tabiki siz çaldığı taktirde $inwave/$inmidi kullanabilirsiniz. Yukarıdaki properties'ların hepsi bunlardada geçerlidir.
Birde, /sound komutu bulunmaktadır.
Kullanım şekli; /sound [on|off|nick/channel] <file.wav|file.mid|file.mp3> <message>Bu komut ise çalan parçayı belirlediğiniz nick'e veya kanal'a, messages kısmına eklediğiniz mesaj ile birlikte bildiri yapar.
Örneğin; /sound #kanal deneme.mp3 Deneme.mp3 dinliyorum.
ON/OFF ses isteklerini açıp kapatmanıza yarar.
Playing sounds hakkında event'ler;
1- on midiend
2- on waveend
3- on mp3end
Bu event'ler, mp3/mid/wav dosyaları sona erdikleri zaman aktif olan eventlerdir.
Event içerisin'de, $filename sona eren dosya ismini verir.
Örnek kullanım: on *:mp3end:/splay -p deneme.mp3
Dersimiz burada sona ermiştir.
Ne gibi bir kod yazılabilir ders sonunda?
Basit bir mp3 çalar yapalım;
on ^*:close:@mp3:.timersr off | splay stop
alias sure var %sure = $time($int($calc($insong($insong).length / 1000)),nn:ss),%sure2 = $time($round($calc($insong.pos / 1000),0),nn:ss),%byt = $bytes($file($insong.fname).size,m),%khz = $iif($calc($sound($insong.fname).sample /1000),$calc($sound($insong.fname).sample /1000),YOK.),%kbps = $iif($sound($insong.fname).bitrate,$sound($insong. fname).bitrate,YOK.) | rline 4 @MP3 3 $str($chr(160),15) $+(%sure2,/,%sure) - Kbps: %kbps - Khz: %khz - Boyut: %byt
alias mp3player $iif(!$window(@mp3),window -lCadk0 +l @MP3 0 0 370 300) | aline 5 @MP3 $str(-,38) MP3 Çalar $str(-,40)
menu @MP3 {
dclick:splay -p $findfile(%q,$gettok($sline($active,1),1,9),1) | .timersr 0 1 sure
Liste yükle:set %q $sdir(C:\,MP3 klasörünü seçiniz.) | if (!%q) echo -aet Liste seçmediniz. | else aline 0 @mp3 - | aline 0 @mp3 - | aline 0 @mp3 - | return $findfile(%q,*.mp3,0,aline 2 @mp3 $nopath($1-) $+($chr(9),$chr(9)) $time($calc($sound($1-).length / 1000),nn:ss))
-
Ses ayarı:vol -p $calc(655.35 * $iif($input(1 ile 100 arasında ses limiti giriniz.,eo) == $null,100))
-
Durdur/Devam:$iif($insong.pause,splay resume,$iif($insong,splay pause))
-
Bitir:$iif($insong,splay stop)
-
Listeyi temizle:dline @mp3 $+(2,-,$line(@mp3,0)) | splay stop | .timersr off | $iif($input(Liste temizlendi.,o,Temizlendi) == $true,halt,halt)
-
Kapat:.timersr off | window -c @mp3 | if ($insong || $inwave || $inmidi) { splay stop }
}
Kod'umuzu açıklıyalım;
/mp3player aliasımız;
alias mp3player $iif(!$window(@mp3),window -lCadk0 +l @MP3 0 0 370 300) | aline 5 @MP3 $str(-,38) MP3 Çalar $str(-,40)
;Eğer @mp3 isminde bir pencere yok ise, pencere açıyoruz.
;Parametreler;
;l: Listbox yüklüyoruz.
;C: Pencereyi ortada açıyoruz.
;a: Aktif ekranda açıyoruz.
;d: Masa üstünde açıyoruz.
;k0: @ karakterini pencereden ayıklıyoruz.
;+l: Tool yüklüyoruz.
;Devamında /aline ile pencerenin ilk satırına, MP3 Çalar yazdırıyoruz.
;Tabi $str identifier'ını kullanarak text'in hem başına 38, sonuna 40 adet "-" karakteri koyuyoruz.
Menümüz;
menu @MP3 {
;listbox'a yüklediğimiz mp3'lerden herhangi birisine "çift tıkladığımız'da" veriyi s/play -p(mp3) komutu ile çalıyoruz.
;tabi ilk önce veriyi $gettok identifier'ı ile ayırıyoruz. Bunu yapmamızın sebebi, satır'daki mp3'ü almak.
;devamında /timer komutu ile "sr" isminde bir timer açarak her saniye başı /sure alias'ını uygulatıyoruz
dclick:splay -p $findfile(%q,$gettok($sline($active,1),1,9),1) | .timersr 0 1 sure
;liste yükle isminde bir popup oluşturuyoruz. Bundan sonrasına dikkat;
;devamında, %q değerine seçilen klasör ismini atıyoruz. Eğer klasör seçilmez ise /echo komutu ile uyarı verdiriyoruz. Eğer liste seçilir ise;
;/aline komutu ile 3 satır "-" karakterini yazıdıyoruz.
;Devamında, %q değerine atanan klasör içindeki tüm .mp3 uzantılı dosyaları $findfile identifier'ının yardımı ile $nopath kullanarak pencere içine yüklüyoruz.
;Yalnız burada "$time($calc($sound($1-).length / 1000),nn:ss)" kısım önemli. Buradaki $1- $findfile identifier'ının bize verdiği tüm *mp3 uzantılı dosyalar.
;$sound($1-).length ile mp3 dosyasının, uzunluğunu alıyoruz. Ve 1000'e bölüyoruz. Son olarak $time identifier'ı ile, bu veriyi dakikaya(nn) ve saniyeye(ss) çeviriyoruz.
;Aradaki $+($chr(9),$chr(9)) kısmı ile 2 adet TAB koyuyoruz. Bunu yapmamızın sebebi, mp3'ler ile dakikaların bitişik olmamasıdır. Burada $str identifier'ıda kullanabilirdik. Niye kullanmadım yahu? Neyse devam edelim :)
Liste yükle:set %q $sdir(C:\,MP3 klasörünü seçiniz.) | if (!%q) echo -aet Liste seçmediniz. | else aline 0 @mp3 - | aline 0 @mp3 - | aline 0 @mp3 - | return $findfile(%q,*.mp3,0,aline 2 @mp3 $nopath($1-) $+($chr(9),$chr(9)) $time($calc($sound($1-).length / 1000),nn:ss))
-
;Burada yukarıda açıkladığım gibi ses limitini giriyoruz(istemiyen girmez)
;$input identifier'ındaki "e" parametresi editbox, "o" parametresi ise, ok butonu demektir.
;Neyse $input'dan aldığımız veri ile 655.35(en düşük ses limit) çarpıyoruz. Ve aldığımız veriyi "/vol -p" sadece mp3ler için işliyoruz.
;tabi siz gidipte "10000" veya "adsasd" sallamayn, zaten belirtmişim 1 ile 100 arasında bir rakam girin diye. He ben bunu yasaklarmıydım? Evet. Ama amac basit bir kod yazmak zaten kısa ve öz .)
Ses ayarı:vol -p $calc(655.35 * $iif($input(1 ile 100 arasında ses limiti giriniz.,eo) == $null,100))
-
;Durdur/devam adında bir popup daha ekliyoruz. Bu popup'a tıkladığınız'da;
;Eğer çalan mp3 durmuş ise, devam edicektir. Eğer pause modun'da değil ise, durdurulacaktır.
;gayet basit yani.
Durdur/Devam:$iif($insong.pause,splay resume,$iif($insong,splay pause))
-
;Burada eğer çalan bir mp3 dosyası var ise, "/splay stop" komutu ile mp3'ü sonlandırıyoruz.
;Buda gayet basit.
Bitir:$iif($insong,splay stop)
-
;Burada gördüğünüz gibi ama listeyi temizlemek.
;Popup'a tıkladığınız'da 2 ile son satır arasındaki tüm satırları /dline komutu ile temizliyoruz.
;Sonrada $input ile temizlendiğini belirtiyoruz. Bunu neden koydum :S Şimdi garip geldi. Sanırım şekil olsun diye koydum.
;Neyse idare edin .)
Listeyi temizle:dline @mp3 $+(2,-,$line(@mp3,0)) | splay stop | .timersr off | $iif($input(Liste temizlendi.,o,Temizlendi) == $true,halt,halt)
-
;Adı üstünde kapat popup'una tıkladığımız'da; sr isminde timer'ı kapatıyoruz.
;Devamında pencereyi kapatıyoruz. Ve son olarak çalan bir mp3 var ise sonlandırıyoruz.
Kapat:.timersr off | window -c @mp3 | $iif($insong,splay stop)
}
/sure aliasımız;
alias sure var %sure = $time($int($calc($insong($insong).length / 1000)),nn:ss),%sure2 = $time($round($calc($insong.pos / 1000),0),nn:ss),%byt = $bytes($file($insong.fname).size,m),%khz = $iif($calc($sound($insong.fname).sample /1000),$calc($sound($insong.fname).sample /1000),YOK.),%kbps = $iif($sound($insong.fname).bitrate,$sound($insong. fname).bitrate,YOK.) | rline 4 @MP3 3 $str($chr(160),15) $+(%sure2,/,%sure) - Kbps: %kbps - Khz: %khz - Boyut: %byt
;OO bu gerçekten önemli. Şimdi beni iyi dinlenemenizi istiyorum.
;İlk olarak %sure variablesine, yukarı'dada anlattığım gibi, çalan mp3'ün uzunluğunu alarak,
;ve bu uzunluğu 1000'e bölerek $time identifier'ı ile süreyi elde ediyoruz.
;Yani burada çalan şarkının süresini meydana çıkartıyoruz.
;%sure2 değerine ise $insong.pos(çalan mp3'ün ilerleme safası)'nı 1000'e bölüyoruz.
;$round ile yuvarlıyarak, $time identifier'ı ile yine süreye çeviriyoruz.
;Ama buradaki fark ne? Bu süre devamlı değişiyor/yükseliyor. Biz'de bu süreyi pencereye yazırcaz ama az bekleyin oraya daha gelmedik.
;$bytes identifier'ı ile çalan mp3'ün boyutunu "m" anahtarını kullanarak MB'a uyarlıyoruz. Ki bundan anlamıyacak birşey yok, çok basit.
;Unutmadan bir'de bu veriyi %byt variablesine atıyoruz.
;Devamında, yukarıda söylemiştim ".sample" prop'u khz değerini veriyor diye.
;Ama tabiki cart diye vermiyor, biz bunu 1000'e bölüyoruz o zaman birşeye benziyor.
;Sonra bu khz değerini %khz variablesine atıyoruz. ve devam ediyoruz (sıkıldım bu arada :+)
;Devamında, yine yukarıda söylediğim gibi ".bitrate" prop'u kbps değerini alıyoruz.
;Bu değeri %kbps variablesine atıyoruz. He birde %khz ve %kbps variablelerine değer atarken, $iif kullandım.
;Bazen bu tanıtı alamıyoruz. O yüzde eğer yanıt gelmez ise, olmayan değer yerine "YOK." diye yazdırıyoruz.
;-
;VE son olarak /rline(replace line) komutu ile aldığımız tüm değer'leri 3. satır'a yazdırıyoruz.
;Şimdi diyeceksiniz'ki, "timer niye açtın kardeşim?
;Timer'ı açmasaydım, çalan mp3'ün ilerlemesini göremiyecektiniz. Boşuna açmadık yani.
on close event'imiz;
on ^*:close:@mp3:.timersr off | splay stop
;Gayet basit, @mp3 penceresi kapandığında, "sr" isminde timer'ı kapatıyoruz. Ve çalan mp3'ü sonlandırıyoruz.
;Bunu yapmazsak mp3 çalmaya devam eder. Ve timer'a atadığımız /sure komutu her saniye tekrarlar, kafayı yersiniz.
Dersimiz ve kod açıklamamız burada sona ermiştir.
Umarım birşeyler öğrenebilirsiniz.
Bu arada mp3 çalar'ı demek için; /mp3player yazınız.