EPROM İLE SESLİ YANIT

Başlatan HEXF2, 05 Kasım 2005, 09:45:25

stlg

Sevgili conavar
Arkadasım bu kaydettigin wav dosyasını pice gondermeyeceksin bunu harici bir bellekte saklamalısın bu bellegin data cıkıslarında dac turu birsey
kullanacaksın yada R2R mantıgı ile yapacaksın bu bellegede sesi oyle hop
diye kaydedemezsin onu bir programlayıcıda yapman lazım bu sesi bellege kalıcı olarak kayıt etmek istiyorsan eprom kullanmalısın gecici olarak ses kaydı yapacaksan ramlarla calısmalısın pic ise bize bu adreslemelerde ve kanal secme işlemlerinde yardımcı olacak kolay gelsin

             ALLAHA EMANET OLUNUZ
ALLAHA EMANET OLUNUZ Hoştur bana senden gelen,  Ya gonca gül yahut diken,  Ya kaftandır yahut kefen,  Kereminde hoş lütfunda hoş.

akaragoz

picin ses ile işi yok. o sadece adresleme ile ilgilenecek. epromun data çıkışı ki 27c040 8 bitlik bir epromdur R2R DAC kullan olsun bitsin.
İnternette R2R diye araştırırsan bir sürü kaynak ta bulabilirsin. Biraz araştırmacı olmak lazım değilmi ? PİC ile sadece adreslemeyi kontrol edeceksin. Yani digital bilgiyi önce pice alıp orada işlemeyeceksin. Buna gerek yok. Anlatıldığı gibi üst hafıza blokları birden fazla sesin seçimi için alt adreler ise sesi oluşturacak tarama için kullanmalısın.

HEXF2

Arkadaşlar ben bu devreyi yaptım ve alt hafıza üst hafıza blokları gibi olay kullanmadım zaten dediğinizide pek anlamadım daha güzel örneklerle açıklayacak biri çıkar umarım @akaragoz dediklerini biraz daha açar mısın örnek yapmadığım için yani dediğin şekilde konuyu anlamam zor oluyor

CaFFeiNe

alt hafıza üst hafıza blokları denen olay sanal birşey bunu sen programın ile yapacaksın olayı şöyle düşün EPROM a çok ilkel bir dosya sistemi yapmışsın gibi mesela 64KB epromda 8 adet 8KB lık bloklar oluşturacaksın 64KB epromda 16 adres hattı vardır 8KB için ise 13 adres hattı gerekir böylece A0-12 adres hatlarını binary sayıcı tarzında adresleyerek sesi çalarsın A13-15 hatlarını ise 8 adet (2^3=8 ) sesten birini seçmek için kullanırsın

tabiki sesleride herbiri kendi 8KB lık bloklarını aşmayacak şekilde eproma yazman gerekir. bu yöntemin avantajı seslerin başlangıç bitiş adreslerinin sabit olmasıdır aynen bir diskteki format yapısı gibi böyle bir yöntem kullanmazsan haliyle her sesin başlangıç bitişlerini programa yazman gerekir ama böyle bir yöntem kullanırsan pic programını birkere yazarsın sonra sadece epromdaki sesleri istediğin zaman değiştirebilirsin

umarım açıklayıcı olmuştur

Erol YILMAZ

Bir devre buldum atacaktim, birilerine lazim olur diye atmadim kosede duruyor.
Uzerinde sayiciyla okumuslar Epromu anladigim kadariyla kucuk bir ses anfisi de var uzerinde... Ugrasirim diyene kargoyla gondereyim.
Isteyen var mi?

OG

WAV2DMX is a conversion program used to convert Windows WAV files to binary EPROM image files for use in digital drum machines, such as the Oberheim DMX or LinnDrum.

http://www.electrongate.com/software/
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

mihri

slm. bende iki adet 27c512 var bu epromlara ses kaydetmek istiyordum ama karşıma şöyle bir problem çıktı kaydetmek istediğim ses 705kb bu ses dosyasını küçültmek için matlab da program yazdım. ses dosyasını 1/50 oranında örnekleyerek boyutunu 7.88kb ta kadar indirdim tabi bu ses kalitesini biraz düşürdü. bunu matlab da nasıl gerçekleştirdiğimi sizinle paylaşmak istedim bu konuyla ilgilenen arkadaşların işine yarayacağından eminim.
    öncelikle ses dosyamız wav formatında olmalı çıkış da aynı formatta olacak.
program şöyle;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

clear all
clc
[y,Fs,bits] = wavread('indirgemek istediğiniz ses dosyasının ismi');
frekans=Fs
bit=bits
e=1;
h=2;
k=input('ses dosyasını hangi oranda orneklemek istiyorsunuz :');
for j=k:k:length(y)
   sonuc(j/k)=y(j);
end
subplot(2,1,1),plot(y),title('orjinal ses')
subplot(2,1,2),plot(sonuc),title('orneklenmis ses')
soru1=input('orjinal sesi dinlemek istiyormusunuz e-h :');
if soru1==1
   sound(data,Fs)
end
soru2=input('sonuc sesi dinlemek istiyormusunuz e-h :');
if soru2==1
   sound(2*sonuc,length(sonuc)/(length(y)/Fs))
end
wavwrite(sonuc,(length(sonuc)/(length(y)/Fs)),bits,'indirgenmis_ses');
olusturulan_dosyanin_bit_degeri=bits
olusturulan_dosyanin_frekansi=(length(sonuc)/(length(y)/Fs))
soru3=input('olusturulan ses dosyasinda degisiklik yapacakmisiniz e-h :');
if soru3==1
   bitdeger=input('kac bit olsun :');
   fre=input('frekansı ne olsun :');
   wavwrite(sonuc,fre,bitdeger,'indirgenmis_ses');
end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

indirgemek istediğiniz bi ses dosyası varsa sonucu görmek için deneme amaçlı bana gönderebilirsiniz. çalışmalarınızda başarılar dilerim
"Eppur si muove!"

mihri

bu programla wav formatındaki mono sesleri 8 16 24 32 bit ve istediğimiz frekansta çaldırabiliyoruz birde istediğimiz oranda örnekleyebiliriz.
"Eppur si muove!"

salim ALTIN

Merhaba.
@erol atmamakta yarar var tabi. bende de vardı ben attım. Eski anılarımı canlandırdı bu konu.
eskiden tüp satanlara o tip devreleri yapanlar ortalığı biraz karıştırmışlar. ( O devrede de olabilir ) sayıcı normal şekilde adreslemiyor epronu. atlamalı yapmışlar kopyalayanların işini zorlaştırmak için.
Fakat en basiti şu şekilde ben yapıp çalıştırmıştım çok seneler önce...
Bilgisayarlarımızdaki ses kartları ses kopyalayabiliyorlar ya. Bu kartlarda eskiden vardı şimdi varmı bilmiyorum ama ses kopyalarken örnekleme frekansını siz belirleyebiliyorsunuz.
Bu frekans 8 Khz veya 10 Khz dolayında olursa bu örneklenen sesi tekrar çaldığınızda anlaşılır oluyor.
Bu nedenle 8 Khz mono örnekleme uygun bir değer.
Bu örnekleme de size 64K epromda 8 saniye ses yükleme süresi demektir ki iyi bir süre sayılır.
ses kartınızdan 8 bit 8khz ses dosyasını alıp bunu bir programlama cihazıyla eproma yükleriz.(64K eprom)
Epromumuzu okutmak için;
önce 555 li bir osilatör bunun arkasına 64K yı adresleyecek bir sayıcı entegre devresi kurarız (sanırım 4040 tı) 16 bit sayacağı için 2 entegre kullanıyoruz .555 sayıcının saat darbelerini veriyor. bu sayıcıların çıkışlarını epromumuzun adres girişlerine bağlıyoruz.. eprom data çıkışlarını arkadaşların söylediği gibi R2R dac sistemi ile 8 kanalı 1 çıkış haline getiriyoruz. isterseniz bir çıkış entegresi ile sesi kuvvetlendirebilirsiniz. Bu çıkışı hoparlöre bağlayınca devremiz tamam.
555 li osilatörümüzü sesi kopyaladığımız hızda çalıştırdığımızda çıkıştan kopyaladığımız sesi duyabiliyoruz. 555 li devreyi frekansını değiştirerek denemeler yapabilirsiniz.
İnsanlar 3 guruba ayrılırlar. 1- Birşeyler yapıp üretmeye çalışan küçük bir gurup. 2- Birşeyler yapanları hayranlıkla ve takdirle izleyen büyük bir gurup. 3- Hiç birşeyden haberi olmadan yaşayan devasa yığınlar....

stlg

Sevgili Arkadaslar

Salim ALTIN arkadasımızın soyledigine katılıyorum bu sekilde tek kanal sistemler yapılabilir eger eprom kapasiteniz buyukse ve daha cok kanal isteniyorsa o zaman farklı bir yol izlenebilir ben su anda 555 ve 4040 ların yaptıgı işlemleri pıce 16f877 ye yaptırıyorum basit tact anahtarlarlada farklı kanalları dinleyebiliyorum tabii bu anahtarların yerine optolar baglayarak dısarıdan gelen uyarılara gorede ses kanalarındaki farklı kayıtları dinleme sansımız oluyor (ornegin bir makineden gelen uyarılar ,bir robot uygulaması,vs..vs )pıcın getirdigi kolaylık ise bir kanalı defalarca arka arkaya dinleyebilirsiniz yada 3 adet anons yap sus diyebilirisiniz onemli uyarılarda sesi hic kapatmassınız gibi sesi kayıt ederken en kolayı windowsun kendi ses kaydedicisini kullanmak orada 8khz mono vs ayarlamaları yapmanız mümkün kolay gelsin

      ALLAHA EMANET OLUNUZ
ALLAHA EMANET OLUNUZ Hoştur bana senden gelen,  Ya gonca gül yahut diken,  Ya kaftandır yahut kefen,  Kereminde hoş lütfunda hoş.

deliko

pic konusunda bende baya bi acemiyim devre tamam ama picde malesef  :?  aslında anlamadığımız tek yer ve sorun devre yapımı değil sadece devreyi yaptıktan sonra ISD chipini 8 bölüme ayırıp ses yüklemek.. nasıl 8 bölüm oluşturup 8 farklı ses kaydedebilir açıklamalar için gerçekten sağolun çok iyi amaa sonuçta picden pek çakmayınca ne kadar anlatsanıızzdaa yok yani olmuo  :D  eğer zahmet olmazsa mesela 8 değilde 1 hücre için kısadan 3-5 satırlı kbi başlangıç yazsanız program. yani 8 i için değil sadece ilki için örnek olarak en azından bişiler oluşsun akfamızda ve o örneklede bizde diğer bölümleri yapabilelim en azından..  :?
şimdiden sağolun

buiba

isd 2560'ta ard arda kaydetttigin parcalar var diyelim 2 ve ustu,ve istedigin parcaya ulasip caldirmak istiyorsun.isd paralel kontrol edildigi gibi seri olarakta kontrol edilebiliyor,yapman gereken isd den 3 adet uc almak(A0,PD,CE) kullanmaya gelince ; her islemin basinda PD ucunu kullanarak isd'ye reset atiyorsun(PD=1 bekle PD=0),daha sonra ilk parcayi calicaksan (A0=0 da sabit kaliyor-CE=0 bekle CE=1)yapiyorsun boylelikle isd ilk parcayi calar ve 2.parca basinda durur.2 ve sonrasi parcalari caldirmak icinse tekrar reset atiyorsun (A0=1 'e cekiyorsun.CE ucunu kacinci parcayi calicaksan,sayisi kadar (CE=0 bekle CE=1) yapiyorsun.ardindan A0=0 cekiyorsun ve bir kez (CE=0 bekle CE=1) yapiyorsun.islem tamam boylelikle 3 uc kullanarak isd istedigin kadar parca caldirabiliyorsun.aslinda calisma mantigi CD calar cihaziyla ayni burada (CE /PLAY ve FORWARD ,A0'da CE o an icin PLAY mi FORWARD mi olacak onu belirliyor).

fryrmnd

#27
valla hocalar bu eprom nasıl adreslenicek pic basicde... 2764 için 13 adet adres bacağı var...  yani 8192 byte 13 bacakla adresliyoz... rasgele bir  kaç btye kayıt yapsam... ilk adres için picin adreslemede kullnadığım 13 bacağına 0000000000001 değerini mi vermem gerekiyo ki bu adrese ulaşayım(ilk byte?) .... birde okuma  yapmadan önce CE ve OE bacaklarının LOW yapam gerekiyo datasheetten anladığım... fakat okuduğum byteın içeriğini çıkışa nasıl vericem...  Vpp ve PGM bacaklarını ne yapmam gerekir... çıkışar 8 bit paralel yanılmıyorsam?... bilgisi olanlar yanıtlarsa çok sevinicem... teşekkürler