«Générateur de sons» stéréo pour Linux?


14

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?


Vous pourrez peut-être le faire avec sox.
Renan

Réponses:


15

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 Generatemenu, 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.


Mais peut-il générer des sons "à partir de rien"? Et je n'ai pas l'intention d'enregistrer et de lire quoi que ce soit, il suffit de générer deux sons légèrement différents (un pour chaque canal) "pour l'éternité".
Baard Kopperud

1
@BaardKopperud Oui, j'ai mis à jour ma réponse pour clarifier.
j883376

8

Vous pourriez regarder speaker-testce que (sur une machine Arch) je trouve dans le paquet alsa-utils.

speaker-test -c2 -t sinecourir à 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.


1
speaker-test -c2 -t sine -f 440complétera votre exemple en donnant le paramètre de fréquence. Merci.
christian

4

Le siggenprogramme devrait faire l'affaire.

capture d'écran de siggen

Il a deux canaux avec des signaux indépendants et une phase entre eux. Chaque canal peut effectuer ces types de signaux:

  • sinus
  • cosinus
  • carré
  • Triangle
  • en dents de scie
  • impulsion
  • bruit

Vous pouvez l'exécuter en mode stéréo comme ceci:

$ siggen -2

Comme il /dev/dspest 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 le alsa-osspaquet et exécutez-le comme ceci:

$ aoss siggen -2

Vous pouvez également l'essayer avec le PulseAudio OSS Wrapper:

$ padsp siggen -2

J'obtiens: [siggen] Erreur d'entrée / sortie: / dev / dsp
Ole Tange

Hm. L'encapsuleur PulseAudio OSS est-il utile?
Nathaniel M. Beaver

Oui. Ça a marché.
Ole Tange

3

ffmpeg

ffmpeg peut le faire, comme d'habitude.

Créez un out.wavfichier audio sinusoïdal mono de 5 secondes à 1000 Hz :

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

Stéréo à la place:

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

Le fichier sera 2x plus volumineux, et ffprobedira qu'il a 2 channelsau lieu de 1 channel.

Lisez l'audio pendant 5 secondes sans créer de fichier:

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

Jouez pour toujours jusqu'à ce que vous deveniez fou:

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

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, marron
  • aevalsrc 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


1

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):

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

Les ts spécifient le temps, en secondes.

Les Ps 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, sinmais pas saw), est de régler la phase en utilisant des minuscules p. L'ajout p0.5dé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.25c'est le moyen de transformer le sinus en cosinus (ou p0.75pour un cosinus négatif).


Salut Joel. Bienvenue sur Unix et Linux . J'ai voté pour votre réponse car c'est un excellent premier post. Je pensais mentionner que si vous êtes un responsable ou un développeur d'un projet, il est courant de divulguer ces informations. Bien que ce ne soit pas vraiment un problème pour les logiciels GPL, il vaut la peine d'être au courant de unix.stackexchange.com/help/promotion Pour les logiciels gratuits / libres utiles, j'imagine que vous seriez plus susceptible d'être voté sur ce site si les utilisateurs le savent vous êtes l'un des développeurs du projet.
Anthony Geoghegan

0

Vous cherchez peut-être Gnaural .


3
Il serait préférable de modifier cette réponse pour inclure plus d'informations sur la façon dont ce programme fournit les fonctionnalités demandées - similaire aux autres réponses précédemment publiées.
Anthony Geoghegan

0

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 soxdes données brutes paplay.

Le pipeline est fastidieux alors j'ai créé un script:

$ 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

par exemple

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

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-remapau - paplaydessus; 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 .

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.