Apakah ada sesuatu seperti generator nada stereo (saluran kiri dan kanan terpisah) untuk Linux? Di mana Anda dapat mengatur volume dan nada / nada untuk setiap saluran, dan lebih disukai juga mengatur bentuk gelombang (sinus, persegi, gigi gergaji, ...) dan membalikkan satu saluran (berlawanan dengan yang lain).
Jika tidak, ada ide untuk memulai tempat yang bagus? Saya kira yang paling sederhana adalah dengan mengadaptasi program yang ada seperti synths ... Tetapi jika itu bekerja dengan buruk, apakah ada perpustakaan (seperti SDL?) Yang dapat digunakan sebagai basis untuk program seperti itu?
Jawaban:
Sepertinya Anda mencari Audacity yang merupakan editor audio open source lintas platform. Salah satu fiturnya adalah untuk memungkinkan Anda menghasilkan nada. Ini adalah editor audio multi-track, sehingga Anda dapat dengan mudah membuat nada stereo.
Di bawah
Generate
menu, Anda dapat membuat nada gelombang Sine, Sawtooth, dan Square dengan frekuensi acak, amplitudo, dan panjang tanpa perlu merekam atau memerlukan file input tambahan.sumber
Anda mungkin melihat
speaker-test
, yang (pada mesin Arch) saya temukan dalam paket alsa-utils.speaker-test -c2 -t sine
lari dari xterm, memberi saya gelombang sinus 440 Hz untuk masing-masing sekitar 6 detik, bergantian speaker kiri dan kanan. Dalam xterm, ia memberikan beberapa informasi tentang pembicara mana yang ia pikir ia gunakan.Menurut halaman manual, itu dapat melakukan gelombang sinus frekuensi acak dan noise pink.
sumber
speaker-test -c2 -t sine -f 440
akan melengkapi contoh Anda dengan memberikan parameter frekuensi. Terima kasih.The
siggen
Program harus melakukan trik.Ini memiliki dua saluran dengan sinyal independen dan fase di antara mereka. Setiap saluran dapat melakukan jenis sinyal ini:
Anda dapat menjalankannya dalam mode stereo seperti ini:
Karena
/dev/dsp
sudah usang di sebagian besar distro Linux modern, Anda mungkin perlu menginstal pustaka kompatibilitas. Pada distro berbasis Debian , instalalsa-oss
paket dan jalankan seperti ini:Anda juga dapat mencobanya dengan PulseAudio OSS Wrapper:
sumber
ffmpeg
ffmpeg dapat melakukannya, seperti biasa.
Buat
out.wav
file suara sinusoidal mono 1000Hz 5 detik :Stereo sebagai gantinya:
File akan menjadi 2x lebih besar, dan
ffprobe
akan mengatakan itu2 channels
bukan1 channel
.Putar audio selama 5 detik tanpa membuat file:
Mainkan selamanya sampai Anda menjadi gila:
Dokumentasi:
Bagian lain di bawah sumber Audio mendokumentasikan algoritma generasi suara lain yang berguna selain
sine
, misalnya:anoisesrc
: suara beberapa warna, misalnya putih, merah muda, coklataevalsrc
mengambil ekspresi matematika sewenang-wenang, dan karena itu harus dapat menghasilkan bentuk gelombang segitiga (ekspresi TODO)Bibliografi:
Diuji di Ubuntu 18.04, ffmpeg 3.4.6.
Contoh generasi audio C minimal tanpa perpustakaan tambahan
Hanya untuk bersenang-senang: /programming/732699/how-is-audio-represented-with-numbers-in-computers/36510894#36510894
sumber
Program saugns juga dapat melakukannya. (Ini adalah generator audio baris perintah (saat ini) mendukung 8 jenis gelombang dan teknik modulasi FM / PM / AM.)
Untuk menghasilkan dua gelombang 100 Hz yang dipisahkan stereo, satu a sinus dan satu a segitiga, dan satu dengan amplitudo terbalik, skrip berikut dapat disisipkan ke dalam file dan dijalankan melalui program (seperti pada
./saugns filename
):The
t
s menentukan waktu, dalam detik.The
P
s adalah untuk panning per-suara (0,0 = kiri, 1,0 = kanan). Ini dapat diubah menjadi sesuatu selain dariP
versi yang akan datang; file README menjelaskan sintaksis saat ini.Sunting: Saya memang pengembang program.
Juga, cara alternatif membalik amplitudo (untuk beberapa jenis gelombang, misalnya
sin
tetapi tidaksaw
), adalah mengatur fase menggunakan huruf kecilp
. Menambahkanp0.5
fase set ke 50% dari siklus gelombang (setengah negatif). Lebih lanjut, karena tidak ada tipe cosinus bernama,p0.25
adalah cara untuk mengubah sinus menjadi cosinus (ataup0.75
untuk cosinus negatif).sumber
Anda mungkin mencari Gnaural .
sumber
Anda dapat dengan mudah mensintesis nada dengan SoX. Ada beberapa batu sandungan tetapi saya akhirnya bisa mengetahuinya.
Saya mengalami kesulitan menghubungkan SoX dengan PulseAudio jadi saya hanya menyalurkan
sox
data mentah kepaplay
.Pipanya membosankan, jadi saya membuat skrip:
misalnya
The
remix
efek hanya digunakan untuk mengirim hasilnya ke saluran tertentu. Ini jauh lebih kuat tetapi kami hanya menggunakan fungsionalitas dasar di sini. Dalam contoh ini kami memiliki perangkat enam saluran dan kami mengirim nada ke saluran ketiga.Saya awalnya membuat perangkat ALSA yang membungkus perangkat PulseAudio, tetapi kemudian saya menemukan bahwa tidak mungkin untuk mengontrol pemetaan saluran menggunakan ALSA, dan karenanya saluran acak digabungkan bersama-sama sesuai dengan bagaimana peta saluran kustom saya berbeda dari standar ALSA. Inilah sebabnya saya punya
--no-remix --no-remap
dipaplay
atas; Saya hanya ingin memesan saluran mentah untuk perintah sox.Saya agak berharap barang audio di Linux memiliki dokumentasi dan pelaporan kesalahan yang lebih baik.
Anda mungkin tertarik dengan jawaban yang saya posting baru-baru ini yang menunjukkan cara mengatur PulseAudio Equalizer dari baris perintah .
sumber