Bilgisayarınızda Analog Ses Sentezi: 10 Adım (Resimlerle)
Bilgisayarınızda Analog Ses Sentezi: 10 Adım (Resimlerle)
Anonim

O eski analog sentezleyicilerin sesi gibi mi? Biriyle istediğiniz zaman, kendi yerinizde, istediğiniz kadar ÜCRETSİZ oynamak ister misiniz? İşte en çılgın Moog hayallerinizin gerçekleştiği yer. Bir elektronik kayıt sanatçısı olabilir veya sadece mp3 çalarınızda dinlemek için havalı, tuhaf sesler çıkartabilirsiniz. Tek ihtiyacınız olan bir bilgisayar! Her şey LTSpice adlı ücretsiz bir devre simülatörünün sihriyle yapılır. Şimdi muhtemelen "Vay be, Tyler, bir devre simülatörü çalıştırmak hakkında hiçbir şey bilmiyorum - bu ZOR geliyor!" dediğinizi biliyorum. Merak etme Bunky! Çok kolay ve size istediğiniz tuhaf sesleri çıkarmak için başlamanız ve değiştirmeniz için birkaç şablon vereceğim. Bu çabaya değip değmeyeceğinden emin değil misiniz? İşte deneyebileceğiniz çalmaya hazır bir ses dosyasına (bu 'ible'nin 7. adımındaki "composition_1.asc" dosyasından yapılmıştır) bir bağlantı. İndirme süresini azaltmak için onu.wav'dan mp3'e dönüştürdüm. https://www.rehorst.com/mrehorst/instructables/composition_1.mp3Sesinde biraz düşük bas var, bu yüzden kulaklık veya iyi hoparlörlerle dinleyin. Gördüğünüzü beğendiyseniz, bana oy verin! Not: Bilgisayarınızda çalıştırabileceğiniz LTSpice için şematik dosyalar ekledim, ancak bazı nedenlerden dolayı bunları indirmeye çalıştığınızda adlar ve uzantılar değişiyor. Dosyaların içeriği iyi görünüyor, bu yüzden dosyaları indirdikten sonra sadece adları ve uzantıları değiştirin ve çalışması gerekir. İndirmek için tıkladığınız simgelerde doğru adlar ve uzantılar gösterilir.

Adım 1: Önce İlk Şeyler

LTSpice bir Windows programıdır, ancak bunun sizi hayal kırıklığına uğratmasına izin vermeyin. Linux'ta Wine altında iyi çalışır. Linux altında VMWare istemcisinde, VirtualBox'ta veya diğer sanallaştırma araçlarında ve muhtemelen Mac'lerde çalıştırırken herhangi bir sorun olmadığından şüpheleniyorum. Windows için LTSpice'in bir kopyasını (ugh!) buradan indirin: https://www.linear.com/ designtools/software/ltspice.jspInstall it. LTSpice nedir? Her elektronik meraklısının nasıl kullanılacağını bilmesi gereken bir zaman alan devre simülatörüdür. Burada nasıl çalıştığına dair ayrıntılı bir eğitim vermeyeceğim, ancak ilerledikçe bilmeniz gereken birkaç şeyi açıklayacağım. Bir uyarı - çok düşük frekanslar üretmek kolayca mümkündür. ya da duyamayacak kadar yüksek. Bunu yaparsanız ve pahalı hoparlörlerinizi yüksek güçlü bir amfi ile sürerseniz, hoparlörlerinizi/amplifikatörünüzü parçalara ayırabilirsiniz. DAİMA, onları oynatmadan önce dalga formlarına bakın ve bir dosyayı ilk kez oynatırken yalnızca güvende olmak için ses seviyesini sınırlamaya dikkat edin. Hoparlörleri denemeden önce dosyaları ucuz kulaklıklarla düşük ses seviyesinde çalmak her zaman iyi bir fikirdir.

2. Adım: Giriş

Simülatöre giriş, şematik bir diyagram şeklindedir. Bileşenleri seçersiniz, bunları şematik üzerine yerleştirirsiniz ve sonra bunları birbirine bağlarsınız. Devreniz tamamlandığında, simülatöre devreyi nasıl simüle etmesini istediğinizi ve ne tür bir çıkış istediğinizi söylersiniz. resistors.asc adlı şemaya bir göz atın. Bir voltaj kaynağı, bir çift direnç, etiketli bir çıkış düğümü, bir toprak ve bir metin komut satırı içeren bir devre olduğunu göreceksiniz. Her birine bakalım. Şimdi aşağıda bağlantısı verilen devre dosyasını açmanın tam zamanı. Zemin: Bu, şemanızdaki EN KRİTİK bileşendir. Devrenizde en az bir noktaya topraklamanız GEREKİR yoksa simülasyonlarınızdan çok garip sonuçlar alırsınız. Voltaj kaynağı: Bir devreye voltaj veriyorsanız AC mi DC mi olduğunu söylemeniz gerekir. (veya daha karmaşık bir şey), voltajın ne olduğu, kaynağın "iç direnci" vb. Bu parametreleri kaynak üzerindeki işaretçi ile sağ tıklayarak girebilirsiniz. Gerçekten ihtiyacınız olan tek şey basit simülasyonlar için dirençtir. Dirençler: Dirençleri anlamak oldukça kolaydır. Direnç değerini ayarlamak için sağ tıklayın. Orada saklanabilecek diğer parametreleri yok sayın. Etiketli giriş ve çıkış düğümleri:Devredeki kullanıcı dostu düğümler için yalnızca adlar.- "output", "input", vb. gibi adlar kullanın. Simülasyon yönergesi:.tran ifadesi simülatöre devrenin nasıl simüle edilmesini istediğinizi söyler. Bu, devreyi zaman içinde farklı noktalarda analiz ettiği anlamına gelen bir zaman alan simülatörüdür. Maksimum zaman adımının ne olması gerektiğini ve simülasyonun gerçek zamanlı değil "devre zamanı" ne kadar sürmesi gerektiğini söylemeniz gerekir. Simülatöre 10 saniye devre süresi boyunca çalışmasını söylerseniz ve maksimum süre adımını 0.001 saniye olarak ayarlarsanız, devreyi en az 10.000 kez (10 sn/0.001 sn) analiz eder ve sonra durur. Simülasyon çalıştığında, devredeki her düğümdeki voltaj ve her bir düğüme giren ve çıkan akımlar her zaman adımında hesaplanacak ve kaydedilecektir. Tüm bu bilgiler osiloskop ekranı gibi bir ekranda (yatay eksenin zamanı, dikey eksende voltaj veya akım) çizilmeye hazır olacaktır. Alternatif olarak, çıktıyı bir.wav ses dosyasına da gönderebilirsiniz. bilgisayar, CD'ye yazın veya mp3 çalarınızda çalmak için mp3'e dönüştürün.

3. Adım: Çıktı

Çıktı, voltaja karşı zamana, voltaja karşı voltajın vb. grafiksel bir grafiği veya her adımdaki bir grup voltaj veya akımdan oluşan bir metin dosyası veya içinde çok kullanacağımız bir.wav ses dosyası olabilir. bu talimat verilebilir. "resistors.asc" dosyasını indirin ve açın. Küçük koşan adam sembolüne (ekranın sol üst kısmı) tıklayın ve devre çalışmalıdır. Şimdi devredeki "OUT" etiketine tıklayın. Zamanı temsil eden yatay bir eksen boyunca grafik çıktıda görüntülenen "çıkış" etiketli voltajı göreceksiniz. Bu, toprağa göre ölçülen voltajdır (bu yüzden her devrede en az bir toprağa ihtiyacınız vardır!). Temel bilgiler bunlar. Direnç değerlerinden birini veya voltajı değiştirmeyi deneyin, ardından simülasyonu yeniden çalıştırın ve çıkış voltajına ne olduğunu görün. Artık bir devre simülatörünü nasıl çalıştıracağınızı biliyorsunuz. Kolay değil miydi?

Adım 4: Şimdi Biraz Ses

"dizzy.asc" adlı devreyi açın. Bu, çalabileceğiniz CD kalitesinde (16 bit, 44.1 ksps, 2 kanal) ses dosyası üretmek için bir modülatör ve birkaç voltaj kaynağı kullanan garip bir gürültü oluşturucudur. Modülatör bileşeni aslında bir osilatördür. Frekans ve genlik, gerçek bir analog sentezleyicideki VCO ve VCA gibi ayarlanabilir. Dalga formu her zaman sinüzoidaldir, ancak bunu daha sonra değiştirmenin yolları vardır. Frekans limitleri, işaret ve boşluk parametreleri tarafından belirlenir. İşaret, FM giriş voltajı 1V olduğunda frekans ve boşluk, FM giriş voltajı 0V olduğunda frekanstır. Çıkış frekansı, FM giriş voltajının doğrusal bir fonksiyonudur, bu nedenle frekans, FM giriş voltajı 0,5V olduğunda işaret ve boşluk frekansları arasında yarı yolda ve FM giriş voltajı 2V olduğunda işaret frekansının 2 katı olacaktır. modülatör ayrıca AM giriş pimi aracılığıyla genlik modülasyonuna da tabi tutulabilir. Modülatör (osilatör) çıkış genliği, AM voltaj girişine uygulanan voltajla eşleşecektir. 1 voltajlı bir DC kaynağı kullanırsanız, çıkış genliği 1V olacaktır (bu, -1 ile +1 V arasında sallanacağı anlamına gelir). Modülatörün iki çıkışı vardır - sinüs ve kosinüs. Dalga biçimleri, 90 derece faz dışı olmaları dışında tamamen aynıdır. Bu, stereo ses uygulamaları için eğlenceli olabilir. Simülatöre maksimum zaman adımını ve simülasyonun süresini söyleyen bir.tran ifadesi vardır. Bu durumda devre zamanı (toplam simülasyon zamanı) = ses dosyası zamanı. Bu, simülasyonu 10 saniye çalıştırırsanız, 10 saniye uzunluğunda bir ses dosyası alacağınız anlamına gelir..save ifadesi, simülasyonu çalıştırırken simülatörün kaydedeceği veri miktarını en aza indirmek için kullanılır. Normalde her düğümdeki gerilimleri ve her bileşene giren ve çıkan akımları kaydeder. Devreniz karmaşıklaşırsa veya uzun bir simülasyon çalıştırırsanız, bu çok fazla veri ekleyebilir. Simülasyonu çalıştırdığınızda, diyalog kutusundaki listeden sadece bir voltaj veya akım seçin ve veri dosyası (.raw) küçük olacak ve simülasyon maksimum hızda çalışacaktır. Son olarak,.wave ifadesi simülatöre şunu söyler: voltajı sol kanala "OUTL" ve voltajı sağ kanala "OUTR" koyarak bir CD kalitesinde stereo ses dosyası (örnek başına 16 bit, 44.1 ksps, iki kanal) oluşturun..wav dosyası 16 bitlik örneklerden oluşur..wav dosyasındaki tam ölçekli çıktı (bir örnekteki 16 bitin tümü açık), çıkış gerilimi tam olarak +1 Volt veya -1 Volt olduğunda gerçekleşir. Sentezleyici devreniz her kanala +/- 1V çıkıştan daha fazla voltaj üretmeyecek şekilde ayarlanmalıdır, aksi takdirde voltaj +1 veya -1 V'yi aştığında.wav dosyasındaki çıkış "kırpılır". 44.1 kps'de örneklenen bir ses dosyası için, simülatörün devreyi saniyede en az 44, 100 kez simüle etmesine ihtiyacımız var, bu yüzden maksimum zaman adımını 1/44, 100 sn veya yaklaşık 20 mikrosaniye (us) olarak ayarladık.

Adım 5: Diğer Voltaj Kaynakları Türleri, Diğer Ses Türleri

Bir analog sentezleyici, rastgele bir gürültü kaynağına ihtiyaç duyar. Bir "davranışsal voltaj kaynağı" (bv) kullanarak gürültü üretebilir ve bir "voltaj kontrollü anahtar" (sw) kullanarak onu açıp kapatabilirsiniz. Gürültü oluşturmak için bv bileşenini kullanmak, voltajı bir formüle dayalı olarak tanımlamayı içerir. Gürültü oluşturma formülü şuna benzer: V=beyaz(zaman*X)*Y Beyaz işlevi, mevcut zaman değerini tohum olarak kullanarak -0.5 ile +0.5 V arasında rastgele bir voltaj oluşturur. Y'nin 2'ye ayarlanması +/- 1V'luk bir salınım sağlar. X'in 1.000 (1e3) ile 100.000 (1e5) arasında ayarlanması, gürültünün spektrumunu etkiler ve sesi değiştirir. Voltaj kontrollü anahtarın ayrıca bir.model ifadesinde ayarlanması için bazı parametrelere ihtiyacı vardır. İsterseniz her birinin farklı davranmasını sağlamak için birden fazla voltaj kontrollü anahtar ve birden fazla model ifadesi kullanabilirsiniz. Simülatöre "açık" ve "kapalı" dirençleri ve geçiş yaptığı eşik voltajını söylemelisiniz. Vh "histerezis voltajı" dır. 0,4V gibi bir pozitif değere ayarlayın ve anahtar açılıp kapandığında herhangi bir tıklama sesi olmayacak.>>>Güncelleme: Kapılı bir gürültü kaynağı yapmanın daha da kolay bir yolu var - gürültü voltajını darbeli bir darbe ile çarpmanız yeterli kaynak- aşağıdaki easy_gated_noise.asc'ye bakın.

Adım 6: Ziller, Davullar, Ziller, Koparılmış Teller

Çanlar, davullar, ziller ve koparılmış teller hepsi vurmalı. Nispeten hızlı bir yükselme süresine ve üstel bir bozulma süresine sahiptirler. Bazı basit devrelerle birleştirilmiş sinüs ve davranışsal voltaj kaynaklarını kullanarak bunları oluşturmak kolaydır. "bell_drum_cymbal_string.asc" şemasına bakın. Dirençli, kapasitörlü ve diyotlu darbeli voltaj kaynakları, ihtiyaç duyulan hızlı artış ve yavaş üstel bozunma dalga formlarını yaratır. Bu çıkış voltajları, rastgele gürültü veya sinüs dalgası kaynakları olarak ayarlanmış davranışsal kaynakların çıkışlarını modüle eder. Darbeli kaynak voltajı yükseldiğinde, kapasitörü hızla şarj eder. Kondansatör daha sonra direnç üzerinden boşalır. Diyot, kaynak voltajı sıfır olduğunda voltaj kaynağının kapasitörü boşaltmasını engeller. Daha büyük direnç değerleri deşarj süresini arttırır. Darbeli kaynağın yükselme süresini belirleyebilirsiniz - zil çok hızlı yükselme süresi olan güzel bir kaynaktır. Tambur aynı zamanda daha düşük frekansta çalışan ve daha yavaş yükselme süresine sahip bir gürültü kaynağıdır. Zil ve dize, darbeli kaynaklar tarafından da modüle edilen sinüs dalgası kaynaklarını kullanır. Zil daha yüksek frekansta çalışır ve dizeden daha hızlı yükselme süresine sahiptir. Simülasyonu çalıştırın ve sonucu dinleyin. Diğer tüm sesler sağ veya sol kanal iken davulun her iki kanalda da göründüğünü unutmayın. Davul çıkışındaki iki direnç, sesi her iki kanala da vermekten sorumludur.

7. Adım: Hepsini Bir Araya Getirmek

Tamam, şimdi bazı sesleri nasıl çıkaracağınızı ve zarfları ve frekansı nasıl modüle edeceğinizi gördünüz. Şimdi birkaç farklı kaynağı tek bir şematikte bir araya getirmenin ve dinlemesi ilginç bir şey üretmenin zamanı geldi. Bu gürültü kaynağının 33 saniyede kompozisyona girmesini nasıl sağlıyorsunuz? O çanı 16 saniyede nasıl açarsın, sonra kapatırsın, sonra 42 saniyede tekrar açarsın? Bir yol, istenen sesi yapmak için davranışsal bir voltaj kaynağı kullanmak ve ardından bell_drum_cymbal_string.asc'de yapıldığı gibi, ses üreten voltajı sesi açıp kapatan başka bir voltajla çarparak açıp kapatmaktır. Aynı şeyi sesleri içeri ve dışarı kısmak için de yapabilirsiniz. Buradaki fikir, tekrar eden sesler oluşturmak ve ardından ek kaynak(lar) kullanarak bu sesleri istediğiniz zamanlarda voltajlarını ses voltajlarıyla çarparak kompozisyonunuza eklemektir. Nihai ses çıkışına istediğiniz kadar voltaj ekleyebilirsiniz, bunları çarpmaya devam edin (mantıksal "ve" ile aynı). Sesleri bir kerede başlatarak, beste boyunca mükemmel bir senkronizasyon içinde kalacaklar, böylece müzik zamanında asla erken veya geç olmayacaklar. Beste_1.asc'ye bakın. Her kanalda bir tane olmak üzere iki zil vardır. Puls_bell voltajları simülasyon boyunca çalışır ancak sesler yalnızca V(bell_r) ve V(bell_l) 0'a eşit olmadığında çıktıda görünür.

Adım 8: Üstel Rampa

Güncelleme 7/10- aşağıya kaydır Burada bir çift gürültü kaynağına uygulanan üstel bir rampa oluşturan bir devre var. V1 ve V2, 0'da başlayan ve prd_l ve prd_r periyotlarında X volta (sol kanal) ve Y volta (sağ kanal) yükselen lineer rampalar üretir. B1 ve B3, doğrusal rampaları maksimum 1V genlikli üstel rampalara dönüştürmek için bir formül kullanır. B2 ve B4, üstel rampalar ve amp_l ve amp_r parametreleri (basit seviye kontrolleri) tarafından genlik modülasyonu yapılan rastgele gürültü üretir. Sesi duyabilmeniz için bu devre tarafından oluşturulan bir mp3 dosyası ekledim. Dosyayı oynatmak için muhtemelen yeniden adlandırmanız gerekecek. X ve Y, doğrusal rampaların voltaj sınırlarını ayarlar. Sonunda her iki kanalın rampaları 1V'a ölçeklenir, ancak X ve Y'yi ayarlayarak üstel rampanın dikliğini kontrol edebilirsiniz. 1 gibi küçük bir sayı neredeyse doğrusal bir rampa verir ve 10 gibi büyük bir sayı çok dik bir üstel rampa verir. Rampa süreleri, prd_l ve prd_r parametreleri kullanılarak ayarlanır. Doğrusal rampa yükselme süresi prd_l veya prd_r değeri eksi 5 ms'ye ayarlanır ve düşme süresi 5 ms'ye ayarlanır. Uzun düşüş süresi, genlik sıfıra geri düştüğü için her rampanın sonunda tıklamayı önler.out_l ve out_r, zamana dayalı rastgele gürültü voltajlarının, üstel rampa voltajlarının ve amp_l ve amp_r parametrelerinin ürünleridir. Sağ kanal rastgele gürültü değerinin sol kanaldan farklı bir "tohum" kullandığına dikkat edin. Bu, her kanaldaki gürültüyü rastgele ve karşı kanaldan farklı tutar. Aynı çekirdeği kullanırsanız, aynı zaman değerinde aynı rastgele değeri alırsınız ve ses, her kanalda bir tane olmak üzere iki farklı kaynak olarak algılanmak yerine merkezde kalır. Bu, oynamak için ilginç bir etki olabilir… Güncelleme: dalga formunun 0V'dan bir miktar pozitif değere gittiğine dikkat edin. Gerilimin eşit pozitif ve negatif değerler arasında değişmesi daha iyidir. Bunu yapmak için şemayı elden geçirdim, ancak dalga biçimini tanımlayan denklemin karmaşıklığını biraz arttırdı. exponential_ramp_noise.asc dosyasını indirin (kaydettiğinizde Instructables sunucusunun adı ve uzantıyı değiştireceğini unutmayın).

Adım 9: Sinüs Dalgasına Uygulanan Üstel Rampa

Bu sayfa, bir sinüs kaynağını (aslında sinüs ve kosinüs) modüle etmek için önceki adımdaki üstel rampanın nasıl kullanılacağını gösterir. Davranışsal voltaj kaynağı, doğrusal bir rampayı modüle2 bileşeni üzerindeki FM girişini çalıştıran üstel bir rampaya dönüştürmek için kullanılır. Genlik, hem hızlı üstel bir rampa hem de yavaş bir sinüs dalgası tarafından modüle edilir. Örnek dosyayı dinleyin - kulağa oldukça garip geliyor.

Adım 10: Öneriler

1) Toplam simülasyon süresini değiştirebilirsiniz - bileşenlerle oynarken ve istediğiniz sesi aldığınızda kısa tutun, ardından simülatörü 30 dakika (1800 saniye) veya istediğiniz kadar çalışacak şekilde ayarlayın. Devreleri bir sayfadan diğerine kopyalayabilir ve alt devreler oluşturabilirsiniz, böylece küçük devre modüllerini gerçek bir synthesizer üzerinde bir patch board kullanır gibi birbirine bağlayabilirsiniz.2) Bir CD örnekleme hızı 44,1 kps'dir. Maksimum zaman adımını 20 us'a düşürürseniz, "temiz" bir çıktı alırsınız çünkü simülatörde her yeni örnek için kullanılabilir veri olacaktır. Daha küçük bir zaman adımı kullanırsanız, simülasyon yavaş olacaktır ve muhtemelen ses üzerinde herhangi bir etkisi olmayacaktır. Daha uzun bir zaman adımı kullanırsanız, hoşunuza gidebilecek veya hoşlanmayabileceğiniz bazı takma adlar duyabilirsiniz.3) şematik üzerinde.save iletişim kutusu ifadesini kullanın ve simülasyonu çalıştırdığınızda ve durumu korumak için voltaj veya akımlardan yalnızca birini seçin..raw dosyasının boyutu küçük. Eğer bir seçim yapmazsanız, TÜM voltaj ve akımlar kaydedilecek ve.raw dosyası ÇOK büyük olacaktır.4) daha yüksek frekansları modüle etmek için çok düşük frekansları kullanmayı deneyin5) daha düşük frekansları modüle etmek için daha yüksek frekansları kullanmayı deneyin.6) işleri ilginç hale getirmek için bazı düşük frekans kaynaklarından gelen çıkışları bazı yüksek frekans kaynaklarıyla birleştirin.7) ritim sağlamak için sinüs veya başka bir kaynağı modüle etmek için darbeli bir voltaj kaynağı kullanın.8) voltaj darbelerini istediğiniz bir şeye şekillendirmek için analog devreler kullanın.9) davranışsal bir voltaj kaynağının çıktısını tanımlamak için matematiksel ifadeler kullanın İyi eğlenceler!