คุณสามารถสังเคราะห์เสียงได้อย่างง่ายดายด้วย 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 ควอไลเซอร์จากบรรทัดคำสั่ง