Linux için stereo “ton üreteci”?


14

Linux için stereo (ayrı sol ve sağ kanal) ton üreteci gibi bir şey var mı? Her kanal için ses ve ton / perde ayarlayabileceğiniz ve tercihen ayrıca dalga formunu (sinüs, kare, testere dişi, ...) ayarlayabilir ve bir kanalı ters çevirebilirsiniz (diğerinin aksine).

Değilse, iyi bir yer yapmak için herhangi bir fikir? Sanırım en basit synths gibi mevcut programları uyarlamak olacaktır ... Ama bu kötü çalışır, böyle bir program için üs olarak kullanılabilecek herhangi bir kütüphane (SDL gibi?) Var mı?


Sox ile halledebilirsiniz.
Renan

Yanıtlar:


15

Platformlar arası açık kaynaklı bir ses editörü olan Audacity'yi aradığınız anlaşılıyor . Özelliklerinden biri tonlar oluşturmanıza izin vermektir. Çok kanallı bir ses editörüdür, böylece kolayca bir stereo tonu oluşturabilirsiniz.

GenerateMenünün altında, ek giriş dosyalarına gerek duymadan veya kaydetmeye gerek kalmadan rastgele frekans, genlik ve uzunluktaki Sinüs, Testere Dişi ve Kare dalga formu tonları oluşturabilirsiniz.


Ama "hiçlikten" tonlar üretebilir mi? Ve ben hiçbir şey kaydetmek ve çalmak niyetinde değilim, sadece "sonsuzluk için" iki farklı ton (her kanal için bir) üretmek.
Baard Kopperud

1
@BaardKopperud Evet, açıklığa kavuşturmak için cevabımı güncelledim.
j883376

8

speaker-testAlsa-utils paketinde (Arch makinesinde) bulduğum şeye bakabilirsiniz .

speaker-test -c2 -t sineBir xterm'den koştum, her biri yaklaşık 6 saniye boyunca 440 Hz sinüs dalgası verdi, sol ve sağ hoparlörleri değiştirdi. Xterm'de hangi hoparlörü kullandığını düşündüğü hakkında bazı bilgiler verdi.

Man sayfasına göre, keyfi frekans ve pembe gürültü sinüs dalgaları yapabilir.


1
speaker-test -c2 -t sine -f 440frekans parametresini vererek örneğinizi tamamlayacaktır. Teşekkür ederim.
christian

4

siggenProgram hile yapmak gerekir.

siggen ekran görüntüsü

Bağımsız sinyalleri olan iki kanal ve aralarında bir faz vardır. Her kanal şu ​​sinyal tiplerini yapabilir:

  • sinüs
  • kosinüs
  • Meydan
  • üçgen
  • testere dişi
  • nabız
  • gürültü, ses

Stereo modda şu şekilde çalıştırabilirsiniz:

$ siggen -2

Yana /dev/dspen modern Linux dağıtımları önerilmiyor, muhtemelen bir uyumluluk kütüphane kurmak gerekir. Debian tabanlı dağıtımlardaalsa-oss paketi yükleyin ve şu şekilde çalıştırın:

$ aoss siggen -2

PulseAudio OSS Wrapper ile de deneyebilirsiniz:

$ padsp siggen -2

Anladım: [siggen] Giriş / çıkış hatası: / dev / dsp
Ole Tange

Hm. PulseAudio OSS sarmalayıcısı hiç yardımcı oluyor mu?
Nathaniel M. Beaver

Evet. İşe yaradı.
Ole Tange

4

ffmpeg

ffmpeg her zamanki gibi yapabilir.

5 saniye mono 1000Hz sinüzoidal out.wavses dosyası oluşturun:

sudo apt-get install ffmpeg
ffmpeg -f lavfi -i "sine=frequency=1000:duration=5" out.wav

Bunun yerine stereo:

ffmpeg -f lavfi -i "sine=frequency=1000:duration=5" -ac 2 out.wav

Dosya 2 kat daha büyük ffprobeolacak ve onun 2 channelsyerine olduğunu söyleyecektir 1 channel.

Dosya oluşturmadan sesi 5 saniye çalın:

ffplay -f lavfi -i "sine=frequency=1000:duration=5" -autoexit -nodisp

Deli oluncaya kadar sonsuza kadar oynayın:

ffplay -f lavfi -i "sine=frequency=1000" -nodisp

Belgeler:

Diğer bölümde, Ses kaynakları diğer yararlı ses üretme algoritmalarına ek olarak sine, örneğin:

  • anoisesrc: çeşitli renklerin sesleri, örneğin beyaz, pembe, kahverengi
  • aevalsrc gelişigüzel matematiksel ifadeler alır ve bu nedenle üçgen dalga formları (TODO ifadesi) üretebilmelidir.

Kaynakça:

Ubuntu 18.04, ffmpeg 3.4.6'da test edilmiştir.

Ek kütüphaneler olmadan minimal C ses üretimi örneği

Sadece eğlence için: /programming/732699/how-is-audio-represented-with-numbers-in-computers/36510894#36510894


1

Saugns programı da bunu yapabilir. (8 dalga tipini ve FM / PM / AM modülasyon tekniklerini destekleyen bir komut satırı ses üretecidir (şu anda).)

Biri sinüs ve biri üçgen, diğeri ters genliğe sahip iki stereo ayrılmış 100 Hz dalga üretmek için aşağıdaki komut dosyası bir dosyaya yapıştırılabilir ve program boyunca çalıştırılabilir (olduğu gibi ./saugns filename):

Osin f100 a0.5 t2 P0
Otri f100 a(-0.5) t2 P1

tLer saniye cinsinden belirtin.

PS (0,0 =, 1.0 = sağa sola) başına ses kaydırma içindir. Bu, Pgelecekteki sürümlerden başka bir şeyle değiştirilebilir ; README dosyası geçerli sözdizimini açıklar.

Edit: Gerçekten programın geliştiricisiyim.

Ayrıca, genliği çevirmenin alternatif bir yolu (örneğin, bazı dalga türleri için, örneğin, sinancak değil saw), fazı bir küçük harf kullanarak ayarlamaktır p. Ekleme p0.5, fazı dalga döngüsünün% 50'sine ayarlar (negatif yarı). Ayrıca, adlandırılmış kosinüs tipi olmadığından, p0.25sinüsü kosinüse dönüştürmenin (veya p0.75negatif kosinüsün) yoludur .


Merhaba Joel. Unix ve Linux'a hoş geldiniz . Harika bir ilk gönderi olduğu için cevabınızı iptal ettim. Bir projenin bakımcısı veya geliştiricisiyseniz, bu bilgileri açıklamanın standart bir uygulama olduğunu belirteceğim. GPL yazılımı için gerçekten bir sorun olmasa da, unix.stackexchange.com/help/promotion'un farkında olmanız Yararlı Free / Libre yazılımı için, kullanıcılar bilirse bu sitede yükselme olasılığınızın daha yüksek olacağını hayal ediyorum. projenin arkasındaki geliştiricilerden birisiniz.
Anthony Geoghegan


0

SoX ile tonları kolayca sentezleyebilirsiniz. Bazı tökezleyen bloklar vardı ama sonunda anlayabildim.

SoX'u PulseAudio ile arabirimlemede sorun yaşadım, bu yüzden sadece soxham verileri aktarıyorum paplay.

Boru hattı sıkıcı olduğundan bir senaryo oluşturdum:

$ cat sox-paplay
#!/bin/bash
: ${HZ:=44100}
: ${NCHAN:=6}
: ${SINK:=mysink}
sox -c $NCHAN -n -t raw -r $HZ -L -b 16 - "$@" | paplay --no-remix --no-remap --raw -v -p --rate $HZ -d $SINK --channels $NCHAN

Örneğin

sox-paplay synth sine 1000 gain -5 remix -m 0 0 1 0 0 0

remixEtkisi sadece belirli bir kanala sonucu göndermek için kullanılır. Çok daha güçlü ancak burada sadece temel işlevleri kullanıyoruz. Bu örnekte altı kanallı bir cihazımız var ve üçüncü kanala bir ton gönderiyoruz.

Başlangıçta PulseAudio cihazını saran bir ALSA cihazı oluşturdum, ancak daha sonra kanal eşlemesini ALSA kullanarak kontrol etmenin imkansız olduğunu buldum ve bu nedenle rastgele kanallar, özel kanal haritamın ALSA varsayılanından nasıl farklı olduğuna göre karıştırılıyor. Ben İşte bu yüzden --no-remix --no-remapde paplayyukarıda; Ben sadece sox komutu için ham kanal sipariş istiyorum.

Linux'taki ses dosyalarının daha iyi dokümantasyon ve hata raporlaması olmasını isterdim.

Son zamanlarda PulseAudio Ekolayzır'ı komut satırından nasıl ayarlayacağımı gösteren bir cevapla ilgilenebilirsiniz .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.