สเตอริโอ“ tone-generator” สำหรับ linux?


14

มีเครื่องกำเนิดเสียงแบบสเตอริโอ (แยกซ้าย - ขวา - แชนแนล) สำหรับ Linux หรือไม่? ที่ซึ่งคุณสามารถตั้งค่าระดับเสียงและโทนเสียง / ระดับเสียงสำหรับแต่ละช่องและควรตั้งค่ารูปแบบคลื่น (ไซน์, สแควร์, ฟันเลื่อย, ... ) และกลับด้านหนึ่งช่องสัญญาณ (ตรงกันข้ามกับช่องอื่น)

ถ้าไม่ความคิดใด ๆ สำหรับสถานที่ที่ดีที่จะเริ่มทำ ฉันเดาว่าวิธีที่ง่ายที่สุดคือการปรับโปรแกรมที่มีอยู่เช่น synths ... แต่ถ้ามันทำงานได้ไม่ดีมีห้องสมุดใด ๆ (เช่น SDL?) ที่สามารถใช้เป็นฐานสำหรับโปรแกรมดังกล่าวได้หรือไม่?


คุณอาจสามารถจัดการกับ sox ได้
Renan

ที่เกี่ยวข้อง: unix.stackexchange.com/questions/245897/ …
Nathaniel M. Beaver

คำตอบ:


15

ดูเหมือนว่าคุณกำลังมองหาAudacityซึ่งเป็นโปรแกรมแก้ไขเสียงโอเพ่นซอร์สข้ามแพลตฟอร์ม หนึ่งในคุณสมบัติของมันคือการอนุญาตให้คุณสร้างเสียง มันเป็นโปรแกรมแก้ไขเสียงแบบหลายแทร็กดังนั้นคุณสามารถสร้างเสียงสเตอริโอได้อย่างง่ายดาย

ใต้Generateเมนูคุณสามารถสร้างสัญญาณรูปแบบ Sine, Sawtooth และ Square ของความถี่โดยพลการแอมพลิจูดและความยาวโดยไม่จำเป็นต้องบันทึกหรือต้องการไฟล์อินพุตเพิ่มเติม


แต่มันสามารถสร้างเสียง "จากอะไร"? และฉันไม่ได้ตั้งใจที่จะบันทึกและเล่นสิ่งใด ๆ เพียงแค่สร้างสองโทนที่แตกต่างกันเล็กน้อย (หนึ่งสำหรับแต่ละช่องทาง) "สำหรับนิรันดร์"
Baard Kopperud

1
@BaardKopperud ใช่ฉันได้อัปเดตคำตอบเพื่อชี้แจง
j883376

8

คุณอาจดูspeaker-testซึ่งฉันพบในแพ็คเกจ alsa-utils

speaker-test -c2 -t sineวิ่งจาก xterm ส่งคลื่นไซน์ 440 Hz ให้ฉันประมาณ 6 วินาทีต่อครั้งสลับลำโพงซ้ายและขวา ใน xterm ให้ข้อมูลเกี่ยวกับผู้พูดที่คิดว่าใช้อยู่

ตามหน้าคนสามารถทำคลื่นไซน์ของความถี่โดยพลการและเสียงสีชมพู


1
speaker-test -c2 -t sine -f 440จะเติมเต็มตัวอย่างของคุณโดยให้พารามิเตอร์ความถี่ ขอบคุณ.
คริสเตียน

4

siggenโปรแกรมควรทำเคล็ดลับ

สกรีนช็อตของ siggen

มีสองช่องสัญญาณอิสระและระยะระหว่างพวกเขา แต่ละช่องสามารถทำสัญญาณประเภทนี้:

  • ซายน์
  • โคไซน์
  • สี่เหลี่ยม
  • สามเหลี่ยม
  • ฟันเลื่อย
  • ชีพจร
  • สัญญาณรบกวน

คุณสามารถเรียกใช้ในโหมดสเตอริโอดังนี้:

$ siggen -2

เนื่องจาก/dev/dspเลิกใช้แล้วใน Linux distros ที่ทันสมัยคุณอาจต้องติดตั้งไลบรารีความเข้ากันได้ บน Distros ที่ใช้ Debianให้ติดตั้งalsa-ossแพ็กเกจและรันดังนี้:

$ aoss siggen -2

คุณสามารถลองใช้ด้วย PulseAudio OSS Wrapper:

$ padsp siggen -2

ฉันได้รับ: [siggen] ข้อผิดพลาดของอินพุต / เอาต์พุต: / dev / dsp
Ole Tange

ฮึ่ม wrapper PulseAudio OSS ช่วยอะไรบ้าง?
นาธาเนียลเอ็มบีเวอร์

อ๋อ มันได้ผล
Ole Tange

4

ffmpeg

ffmpeg สามารถทำได้ตามปกติ

สร้างout.wavไฟล์เสียงซายน์แบบไซน์ 1000Hz แบบโมโนโมโน:

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

สเตอริโอแทน:

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

ไฟล์จะ 2x ที่มีขนาดใหญ่และffprobeจะบอกว่ามันมีแทน2 channels1 channel

เล่นเสียงเป็นเวลา 5 วินาทีโดยไม่สร้างไฟล์:

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

เล่นตลอดไปจนกว่าคุณจะโกรธ:

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

เอกสารอ้างอิง:

ส่วน Sunder อื่น ๆแหล่งที่มาของเสียงเอกสารขั้นตอนวิธีการสร้างเสียงที่มีประโยชน์อื่น ๆ นอกเหนือไปsineเช่น:

  • anoisesrc: เสียงหลายสีเช่นสีขาว, ชมพู, น้ำตาล
  • aevalsrc ใช้นิพจน์ทางคณิตศาสตร์ตามอำเภอใจดังนั้นจึงควรสร้างรูปคลื่นรูปสามเหลี่ยม (การแสดงออก TODO)

บรรณานุกรม:

ทดสอบใน Ubuntu 18.04, ffmpeg 3.4.6

ตัวอย่างการสร้างเสียง C น้อยที่สุดโดยไม่มีไลบรารีเพิ่มเติม

เพื่อความสนุกสนาน: /programming/732699/how-is-audio-represented-with-numbers-in-computers/36510894#36510894


1

saugnsโปรแกรมยังสามารถทำมันได้ (เป็นเครื่องกำเนิดเสียงบรรทัดคำสั่ง (ปัจจุบัน) รองรับ 8 ประเภทคลื่นและเทคนิคการปรับ FM / PM / AM)

ในการสร้างคลื่น 100 Hz ที่คั่นด้วยสเตอริโอสองอันหนึ่งอันหนึ่งและหนึ่งสามเหลี่ยมและอีกอันที่มีแอมพลิจูดกลับหัวสคริปต์ต่อไปนี้สามารถวางลงในไฟล์และวิ่งผ่านโปรแกรม (ตาม./saugns filename):

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

ts ระบุเวลาในไม่กี่วินาที

Ps มีการต่อเสียงปรากฎ (0.0 = ซ้าย, 1.0 = ขวา) สิ่งนี้อาจเปลี่ยนเป็นสิ่งอื่นนอกเหนือจากPในอนาคต ไฟล์ README อธิบายถึงไวยากรณ์ปัจจุบัน

แก้ไข: ฉันเป็นผู้พัฒนาโปรแกรมจริงๆ

นอกจากนี้ทางเลือกของการพลิกความกว้าง (ชนิดคลื่นบางอย่างเช่นsinแต่ไม่saw) pคือการกำหนดขั้นตอนการใช้ตัวพิมพ์เล็ก การเพิ่มการp0.5ตั้งค่าเฟสเป็น 50% ของวัฏจักรคลื่น (ลบครึ่ง) นอกจากนี้เนื่องจากไม่มีชื่อประเภทโคไซน์p0.25เป็นวิธีที่จะเปลี่ยนไซน์เป็นโคไซน์ (หรือp0.75สำหรับโคไซน์เชิงลบ)


สวัสดีโจเอล ยินดีต้อนรับสู่Unix และ Linux ฉันยกระดับคำตอบของคุณเนื่องจากเป็นโพสต์แรกที่ยอดเยี่ยม ฉันคิดว่าฉันจะพูดถึงว่าถ้าคุณเป็นผู้ดูแลหรือพัฒนาโครงการมันเป็นวิธีปฏิบัติมาตรฐานในการเปิดเผยข้อมูลนี้ แม้ว่าจะไม่ใช่ปัญหาสำหรับซอฟต์แวร์ GPL แต่ก็ควรระวังที่จะทราบunix.stackexchange.com/help/promotionสำหรับซอฟต์แวร์ฟรี / Libre ที่มีประโยชน์ฉันคิดว่าคุณมีแนวโน้มที่จะได้รับ upvoted บนไซต์นี้มากขึ้นหากผู้ใช้ทราบ คุณเป็นหนึ่งในนักพัฒนาที่อยู่เบื้องหลังโครงการ
Anthony Geoghegan

0

คุณอาจจะมองหาGnaural


3
ควรแก้ไขคำตอบนี้ให้ดีที่สุดเพื่อรวมข้อมูลเพิ่มเติมเกี่ยวกับวิธีที่โปรแกรมนี้ให้คุณสมบัติที่ถูกถามเกี่ยวกับ - คล้ายกับคำตอบอื่น ๆ ที่โพสต์ไว้ก่อนหน้านี้
Anthony Geoghegan

0

คุณสามารถสังเคราะห์เสียงได้อย่างง่ายดายด้วย SoX มีบางสิ่งที่ทำให้สะดุด แต่ในที่สุดฉันก็สามารถจินตนาการได้

ฉันมีปัญหาในการเชื่อมต่อ SoX กับ PulseAudio ดังนั้นฉันเพียงแค่ดึงsoxข้อมูลดิบเข้าpaplayมา

ไปป์ไลน์น่าเบื่อดังนั้นฉันจึงสร้างสคริปต์:

$ 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

เช่น

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

เอremixฟเฟกต์นี้ใช้เพื่อส่งผลลัพธ์ไปยังช่องทางเฉพาะ มันมีประสิทธิภาพมากกว่า แต่เราใช้ฟังก์ชั่นพื้นฐานที่นี่เท่านั้น ในตัวอย่างนี้เรามีอุปกรณ์หกช่องสัญญาณและเรากำลังส่งสัญญาณเสียงไปยังช่องที่สาม

ตอนแรกฉันสร้างอุปกรณ์ ALSA ที่ห่ออุปกรณ์ PulseAudio แต่แล้วฉันก็พบว่ามันเป็นไปไม่ได้ที่จะควบคุมการแมปช่องทางโดยใช้ ALSA และช่องทางสุ่มนั้นได้รับการผสมเข้าด้วยกันตามวิธีแผนที่ช่องทางที่กำหนดเองของฉัน นี่คือเหตุผลที่ฉันมี--no-remix --no-remapอยู่ในpaplayข้างต้น ฉันแค่ต้องการให้ช่องสัญญาณดิบสั่งสำหรับคำสั่ง sox

ฉันหวังว่าไฟล์เสียงบน Linux จะมีเอกสารและการรายงานข้อผิดพลาดที่ดีกว่า

คุณอาจจะสนใจในคำตอบที่ผมโพสต์เมื่อเร็ว ๆ นี้แสดงให้เห็นถึงวิธีการตั้งค่า PulseAudio ควอไลเซอร์จากบรรทัดคำสั่ง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.