Journal Enregistrer le /dev/dsp en wav

Posté par  .
Étiquettes :
0
10
août
2003
Si j'écris ce journal, c'est pour plusieurs questions.


Bon je sais déjà capturer le son d'une appli avec vsound ce qui m'arrange pour les flux real.
Ce que je voudrai maintenant, c'est capturer tous les sons sortant par /dev/dsp.
J'ai essayé en faisant:
$ cat /dev/dsp > essai.raw
$ sox -t .raw essai.raw -t .wav essai.wav
marche pas,
je continue en faisant:
$ sox -t raw -r 22000 -w essai.raw -t wav essai.wav
et j'obtiens ce message d'erreur: "sox: bad input format for file essai.raw: data encoding was not specified" et donc je ne comprends pas car je ne vois pas d'autres formats

en faisant avec sox en prenant directement le son à la source:
$ sox -t ossdsp -w -s -r 44100 -c 2 /dev/dsp -t .wav essai.wav
j'obtiens un fichier wav, certes mais vide

je tiens à préciser que j'ait ces tests avec xmms avec /dev/spd comme sortie ou avec realplayer qui sort en /dev/dsp puisque vsound peut capturer le son


L'autre problème serait de savoir si je pouvais me débroullier pour enregistrer ainsi le son d'un appareil externe sur mon ordi. Je m'explique: j'ai de nombreuses cassettes audio assez vieilles et comme vous le savez, le son est de plus en plus mauvais. Ce que je voudrai faire, c'est relier mon poste ou ma chaîne Hi-fi à ma carte son pour se débrouiller afin que je puisse utiliser ma sortie son que je pourrai capturer avec la méthode que je cherche à trouver plus haut. Cela me permettra ainsi de sauver ainsi mes vieilles cassettes ou plutôt leur contenu. Est-ce possible?


Le dernier problème qui est mineur, je préfère me concentrer sur les deux précédents, c'est que lorsque je fais:
$ cat fichier-wav-normal.wav > /dev/dsp
j'obtiens d'horribles grésillements...

Merci d'avance de votre aide.
  • # Re: Enregistrer le /dev/dsp en wav

    Posté par  (site web personnel) . Évalué à 3.

    http://linuxfr.org/~remat/860.html(...) , ca peut peut-etre t'aider...
  • # Re: Enregistrer le /dev/dsp en wav

    Posté par  (site web personnel) . Évalué à 6.


    Le dernier problème qui est mineur, je préfère me concentrer sur les deux précédents, c'est que lorsque je fais:
    $ cat fichier-wav-normal.wav > /dev/dsp
    j'obtiens d'horribles grésillements...



    Si tu fais ça :

    sox fichier-wav-normal.wav -t ossdsp /dev/dsp

    Ça marche normalement... par contre si je faiscat fichier-wav-normal.wav > /dev/dsp alors j'ai le même effet que toi...
    • [^] # Re: Enregistrer le /dev/dsp en wav

      Posté par  . Évalué à 3.

      En effet, ça marche, merci. Voilà au moins quelque chose que j'ai compris.
    • [^] # Re: Enregistrer le /dev/dsp en wav

      Posté par  (site web personnel) . Évalué à 6.

      Ça marche normalement... par contre si je fais cat fichier-wav-normal.wav > /dev/dsp alors j'ai le même effet que toi...

      ioctl... je m'explique : /dev/dsp n'est pas magique, il ne devine pas tous seul le format des données (8, 16, 24 bits, échantillonage 44.1kHz, 48 kHz, 96kHz) sans parler de little et big endian, codage direct ou log. Sans parler de l'entête. C'est pour ça que vous avez de la neige dans les oreilles ;-)

      Il faut configurer /dev/dsp puis lui envoyer les données qui vont bien vis-à-vis de la config que l'on vient de lui appliquer.
      Cette étape de config se fait avec l'appel système générique ioctl et les docs qui vont bien (cf kernel et google).
      • [^] # Re: Enregistrer le /dev/dsp en wav

        Posté par  . Évalué à 1.

        Merci de tes explications. Par contre je voudrai savoir, c'est qu'elle est le format de sortie de /dev/dsp pour que je puisse le convertir avec sox.
        • [^] # Re: Enregistrer le /dev/dsp en wav

          Posté par  (site web personnel) . Évalué à 5.

          Même motif, même punition, l'acquisition se configure... avec ioctl
          google : http://www.google.com/search?hl=en&ie=UTF-8&oe=UTF-8&q=(...)

          parmi les premiers résultats celui-là à attirer mon attention :
          http://www.oreilly.de/catalog/multilinux/excerpt/ch14-05.htm(...)

          Maintenant : je ne sais pas si ce que tu veux faire est possible (lire /dev/dsp en espérant lire ce qui y est écrit). L'écriture va sur les enceintes, la lecture vient du micro ou de line-in. C'est le schéma de base. Peut-être est-il possible de remapper au niveau de la carte son (amha c'est dépendant du driver) les flux audios mais... si tu y arrives, fais le moi savoir ou fais un howto.

          Sinon, autre piste, recherche voir si ce ne serait pas possible en utilisant un
          [pause, avant de raconter une connerie, je vais voir comment fonctionne vsound]
          .
          .
          .
          [fin de pause, reprise du programme]
          module noyau qui se substitue à ton module son.
          En effet vsound marche par programme (ça a l'air d'être une lib en preload (man ld.so) ou qqch dans ce goût-là (je ne suis pas allé plus loins que la première page que j'ai trouvé)) or si tu veux capturer tous les programmes, ce n'est pas à la source (le pgm) qu'il faut agir, mais à la cible : le driver derrière /dev/dsp.
      • [^] # Re: Enregistrer le /dev/dsp en wav

        Posté par  (site web personnel) . Évalué à 2.

        Puis mais pourquoi alors un "cat /dev/dsp > myfile" ne fonctionne pas... le résultat n'est pas lisible ? pourtant l'application cliente qui a ouvert /dev/dsp l'a configuré avant non ?
        • [^] # Re: Enregistrer le /dev/dsp en wav

          Posté par  (site web personnel) . Évalué à 3.

          parce qu'il y a une config distincte pour la lecture et l'écriture et qu'une application qui joue un son ne va pas configurer l'acquisition (cf lien donné plus haut : http://www.oreilly.de/catalog/multilinux/excerpt/ch14-05.htm(...) )

          ensuite, je maintiens que par défaut ce (in&out) sont deux flux séparés et que lire /dev/dsp c'est enregistrer ce qui vient du micro et pas ce qui vient (ou est en train) d'être envoyé sur les enceintes. (/dev/dsp ne se comporte pas comme un pipe nommé)




          Addendum au poste plus haut : j'ai cherché rapidement, pas de module loopback mais un module dummy chez ALSA qu'il doit être possible de modifier à peu de frais pour que l'entrée de /dev/dsp soit pipée sur la sortie.
          • [^] # Re: Enregistrer le /dev/dsp en wav

            Posté par  (site web personnel) . Évalué à 2.

            C'est pour ça que je pouvais entendre ce qui passait sur les enceintes mais avec un effet de souffle énorme et un volume bas... c'est simplement ce qui venait de l'entrée micro...

            Merci pour l'info :-)
            • [^] # Re: Enregistrer le /dev/dsp en wav

              Posté par  . Évalué à 1.

              Je commence à y voir un peu plus clair. Je ne pourrai pas malheureusement travailler dessus. Je pars demain et je ne reverrai mon pingouin qu'à la fin du mois.
              Je vous remercie de l'aide que vous m'avez grandement apporté.
  • # Re: Enregistrer le /dev/dsp en wav

    Posté par  (site web personnel) . Évalué à 1.

    Suite à la recherche Google "enregistrer /dev/dsp" en francais (http://www.google.fr/search?hl=fr&ie=UTF-8&oe=UTF-8&q=e(...)), j'ai trouvé la ligne de commande suivante (pas encore testée) sur la page http://gcu-squad.org/?viewtip+&tip_id=63(...) :
    "sox -t ossdsp -c 2 -r 44100 -w -s /dev/dsp -t wav -| gogo stdin out.mp3"

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.