CCS ile nasil Sound üretebilirim?

Başlatan Digimensch, 19 Mart 2007, 22:03:18

Digimensch

Arkadaslar CCS ile nasil PIC16F84'de sound (Melodi) caldirabilirim?
CCS'de  Sound Kodlari varmi?
Bir örnek kod veya bilgi alabilecegim bir Link verebilirmisiniz?
Kapi Zili yapmak istiyorum fakat C dili ile bu isi halletmek istiyorum.

zafzaf82

CCS'nin Example klasöründe EX_TONES.C diye bir örnek var. Bi incele istersen.
Mikroişlemci bi araçtır, amaç değil.....

mcan

ya da dahili pwm donanımını kullanarak hem ses yüksekliği hemde frekansını kontrol edebilirsin,yanlız her istediğin frekans pwm donanımı tarafından üretilemiyor.ama zaten notalar arasında da yarım ses ya da tam ses fark var.yani her frekansa da ihtiyacın olmaz sanırım

Digimensch

@zafzaf82 hocam,
Example Klosöründeki örnegi inceledim.
Orada tones.c adindaki CCS kütüphanesi icinde bulunan bir driverden yararlanilmis.
Acaba ben o örnekteki "happy_bday"  icin yazilan Kodu bir Türkce parca icin nasil yapmaliyim?
Türkce Parcanin Notalarini tones.c  dosyasindaki su Frekans tabelasindan nasil yararlanarak caldirabilirim?
                    Octave0  Octave1  Octave2  Octave3
const long C_NOTE[4]  ={ 262,     523,    1047,    2093};
const long Db_NOTE[4] ={ 277,     554,    1109,    2217};
const long D_NOTE[4]  ={ 294,     587,    1175,    2349};
const long Eb_NOTE[4] ={ 311,     622,    1245,    2489};
const long E_NOTE[4]  ={ 330,     659,    1329,    2637};
const long F_NOTE[4]  ={ 349,     698,    1397,    2794};
const long Gb_NOTE[4] ={ 370,     740,    1480,    2960};
const long G_NOTE[4]  ={ 392,     784,    1568,    3136};
const long Ab_NOTE[4] ={ 415,     831,    1661,    3322};
const long A_NOTE[4]  ={ 440,     880,    1760,    3520};
const long Bb_NOTE[4] ={ 466,     923,    1865,    3729};
const long B_NOTE[4]  ={ 494,     988,    1976,    3951};

Analyzer

Alıntı yapılan: "Digimensch"@zafzaf82 hocam,
Example Klosöründeki örnegi inceledim.
Orada tones.c adindaki CCS kütüphanesi icinde bulunan bir driverden yararlanilmis.
Acaba ben o örnekteki "happy_bday"  icin yazilan Kodu bir Türkce parca icin nasil yapmaliyim?
Türkce Parcanin Notalarini tones.c  dosyasindaki su Frekans tabelasindan nasil yararlanarak caldirabilirim?
                    Octave0  Octave1  Octave2  Octave3
const long C_NOTE[4]  ={ 262,     523,    1047,    2093};
const long Db_NOTE[4] ={ 277,     554,    1109,    2217};
const long D_NOTE[4]  ={ 294,     587,    1175,    2349};
const long Eb_NOTE[4] ={ 311,     622,    1245,    2489};
const long E_NOTE[4]  ={ 330,     659,    1329,    2637};
const long F_NOTE[4]  ={ 349,     698,    1397,    2794};
const long Gb_NOTE[4] ={ 370,     740,    1480,    2960};
const long G_NOTE[4]  ={ 392,     784,    1568,    3136};
const long Ab_NOTE[4] ={ 415,     831,    1661,    3322};
const long A_NOTE[4]  ={ 440,     880,    1760,    3520};
const long Bb_NOTE[4] ={ 466,     923,    1865,    3729};
const long B_NOTE[4]  ={ 494,     988,    1976,    3951};

Selam,

Tabloda 4 oktav tüm notaların frekansları verilmiş. Eskiden Nokia telefonlar için besteleyici bulunurdu. Onun format yapısını incelemeni tavs. ederim. Hatırladığım kadarıyla C8G4E16 gibi gidiyordu. Yani C notasını 8 birim uzunluğunda çal gibi... Ben olsam ccs'de bir prosedür yazardım, void NotaCal (int nota, int sure, int oktav); gibi. Ardından besteyi ve nota süresini bir diziye atardım. Nota sayısı kadar bu fonksiyonu döndürür ve diziden hem notayı hem süreyi hem de oktavı alırdım. İstediğim parçayı da çaldırırdım :)

Analyzer
Üşeniyorum, öyleyse yarın!

Digimensch

Notayi caldirma olayi Problem değil.
Ben simdi Türkü notalarinin Do-Re-Mi seklinde anahtar notalarini ve calma sürelerini bulamiyorum.
Bir örnek yaptim.
Yine Dertli Dertli türküsünü yaptim.
Yine_Dertli_Dertli[SIZE] = {
C_note[0],350, D_note[0],300, D_note[0],300, E_note[0],300, E_note[0],900, E_note[0],600,
E_note[0],600, F_note[0],300, D_note[0],300, E_note[0],1200,
C_note[0],300, D_note[0],300, C_note[0],300, D_note[0],300, C_note[0],500, E_note[0],300,
E_note[0],900, E_note[0],600, E_note[0],600,F_note[0],300, D_note[0],300, E_note[0],1200,
Gb_note[0],300, G_note[0],300, G_note[0],300};


Simdi sorunum istedigim bür Melodinin Anahtar notalarini ve calis sürelerini bilmem.Nette bir türlü bir Türkce Müzik Anahtar Nota kaynagi bulamadim.
Bulsam is kolay artik.

Digimensch

Türkce Melodilerin Anahtar notalarini ve bu notalarin vurus sürelerini nasil veya nerden bulabilirim?

conavar

guitar music pro diye bir program var orda notların ne kadar basıldığı gösterilıyordu ama ben cok iyi bilmem sadece arkadaşlarımdan görmüştüm...
bir incele istersen sanırım işine yarayabilir...
Selametle
.::BiLgi Paylaştıkça Çoğalır::.[/url]

Ersin

@Digimensch,
bir parca da tempo vardir , yani dakikada vurus olcusu.Bunu baz aldiktan sonra, tam/yarim/ceyrek/sekizlik/onaltilik  nota vardir.Tempoyu belirler ve tam notanin uzunlugunu bulursan digerlerini rahat cikarirsin.Adi ustunde yarim 1/2 , ceyrek 1/4  gibi.

Digimensch

@Ersin,
Hocam bana bir örnek vermen mümkünmü?
Türkce notalar buluyorum ama vurus sürelerini  nasil belirleyecegimi bilemiyorum.
CCS de Türkce melodi caldirabilmem icin gerekli.Yapabilirsem  söyle 10 - 15 örnek yapip burayada yazmak istiyorum.

Ersin

Diyelim tempo 120 ( beat ) . Yani 1dk da 120 vurus. Demek 1 vurus yarim saniye. 4/4 luk tempoda bu bir vurusa esit.Artik sure uzunlugunu notanin sekizlik mi onaltilik mi onu sen hesaplayacan.
60 beat e gore ornek verecektim daha kolay ama oyle parca ben pek bilmiyom cok yavas bir tempo oluyo :D