Existe-t-il quelque chose comme un générateur de sons stéréo (canaux gauche et droit séparés) pour Linux? Où vous pouvez régler le volume et la tonalité / hauteur pour chaque canal, et de préférence également définir la forme d'onde (sinus, carré, en dents de scie, ...) et inverser un canal (par opposition à l'autre).
Sinon, des idées de bons endroits pour commencer à en faire un? Je suppose que le plus simple serait d'adapter des programmes existants comme des synthés ... Mais si cela fonctionne mal, existe-t-il des bibliothèques (comme SDL?) Qui peuvent être utilisées comme bases pour un tel programme?
Réponses:
Il semble que vous recherchiez Audacity, un éditeur audio open source multiplateforme. L'une de ses fonctionnalités est de vous permettre de générer des tonalités. Il s'agit d'un éditeur audio multipiste, vous pouvez donc facilement créer un son stéréo.
Dans le
Generate
menu, vous pouvez créer des tons de forme d'onde sinusoïdale, en dents de scie et carrée de fréquence, d'amplitude et de longueur arbitraires sans avoir besoin d'enregistrer ou d'avoir besoin de fichiers d'entrée supplémentaires.la source
Vous pourriez regarder
speaker-test
ce que (sur une machine Arch) je trouve dans le paquet alsa-utils.speaker-test -c2 -t sine
courir à partir d'un xterm, m'a donné une onde sinusoïdale de 440 Hz pendant environ 6 secondes chacun, en alternant les haut-parleurs gauche et droit. Dans le xterm, il a donné des informations sur l'orateur qu'il pensait utiliser.Selon la page de manuel, il peut produire des ondes sinusoïdales de fréquence arbitraire et du bruit rose.
la source
speaker-test -c2 -t sine -f 440
complétera votre exemple en donnant le paramètre de fréquence. Merci.Le
siggen
programme devrait faire l'affaire.Il a deux canaux avec des signaux indépendants et une phase entre eux. Chaque canal peut effectuer ces types de signaux:
Vous pouvez l'exécuter en mode stéréo comme ceci:
Comme il
/dev/dsp
est obsolète dans la plupart des distributions Linux modernes, vous devrez probablement installer une bibliothèque de compatibilité. Sur les distributions basées sur Debian , installez lealsa-oss
paquet et exécutez-le comme ceci:Vous pouvez également l'essayer avec le PulseAudio OSS Wrapper:
la source
ffmpeg
ffmpeg peut le faire, comme d'habitude.
Créez un
out.wav
fichier audio sinusoïdal mono de 5 secondes à 1000 Hz :Stéréo à la place:
Le fichier sera 2x plus volumineux, et
ffprobe
dira qu'il a2 channels
au lieu de1 channel
.Lisez l'audio pendant 5 secondes sans créer de fichier:
Jouez pour toujours jusqu'à ce que vous deveniez fou:
Documentation:
L'autre section sunder Audio sources documente d'autres algorithmes de génération de sons utiles en plus
sine
, par exemple:anoisesrc
: bruits de plusieurs couleurs, par exemple blanc, rose, marronaevalsrc
prend des expressions mathématiques arbitraires, et devrait donc être capable de produire des formes d'onde triangulaires (expression TODO)Bibliographie:
Testé dans Ubuntu 18.04, ffmpeg 3.4.6.
Exemple de génération audio C minimale sans bibliothèques supplémentaires
Juste pour le plaisir: /programming/732699/how-is-audio-represented-with-numbers-in-computers/36510894#36510894
la source
Le programme saugns peut également le faire. (Il s'agit d'un générateur audio en ligne de commande (actuellement) prenant en charge 8 types d'onde et les techniques de modulation FM / PM / AM.)
Pour générer deux ondes 100 Hz séparées stéréo, une sinusoïdale et une triangle, et une avec une amplitude inversée, le script suivant peut être collé dans un fichier et exécuté à travers le programme (comme dans
./saugns filename
):Les
t
s spécifient le temps, en secondes.Les
P
s sont pour le panoramique par voix (0,0 = gauche, 1,0 = droite). Cela peut être changé pour autre chose queP
dans les versions futures; le fichier README décrit la syntaxe actuelle.Edit: je suis en effet le développeur du programme.
De plus, une autre manière de retourner l'amplitude (pour certains types d'ondes, par exemple,
sin
mais passaw
), est de régler la phase en utilisant des minusculesp
. L'ajoutp0.5
définit la phase à 50% du cycle d'onde (moitié négative). De plus, comme il n'y a pas de type de cosinus nommé,p0.25
c'est le moyen de transformer le sinus en cosinus (oup0.75
pour un cosinus négatif).la source
Vous cherchez peut-être Gnaural .
la source
Vous pouvez facilement synthétiser des sons avec SoX. Il y avait quelques pierres d'achoppement mais j'ai finalement pu le comprendre.
J'ai eu du mal à interfacer SoX avec PulseAudio, donc je ne fais que transférer
sox
des données brutespaplay
.Le pipeline est fastidieux alors j'ai créé un script:
par exemple
le
remix
effet est juste utilisé pour envoyer le résultat à un canal spécifique. Il est beaucoup plus puissant mais nous n'utilisons ici que les fonctionnalités de base. Dans cet exemple, nous avons un appareil à six canaux et nous envoyons une tonalité au troisième canal.À l'origine, j'ai créé un périphérique ALSA enveloppant le périphérique PulseAudio, mais j'ai constaté qu'il était impossible de contrôler le mappage des canaux à l'aide d'ALSA, et donc les canaux aléatoires se mélangeaient en fonction de la différence entre ma carte des canaux personnalisée et la valeur par défaut ALSA. Voilà pourquoi j'ai
--no-remix --no-remap
au -paplay
dessus; Je veux juste l'ordre des canaux bruts pour la commande sox.Je souhaite en quelque sorte que les contenus audio sous Linux aient une meilleure documentation et un meilleur rapport d'erreurs.
Vous pouvez être intéressé par une réponse que j'ai publiée récemment et qui montre comment configurer l'égaliseur PulseAudio à partir de la ligne de commande .
la source