Mélangeur audio côté serveur. Qu'est-ce qui est disponible? (Csound peut-il le faire?)

StackOverflow https://stackoverflow.com/questions/1803131

  •  05-07-2019
  •  | 
  •  

Question

Je souhaiterais savoir s'il existe un programme ou une bibliothèque capable d'effectuer la tâche suivante et qui conviendrait pour une exécution dans le cadre d'un processus côté serveur sur un site Web. (Ce n'est pas grave si cela prend plus de temps que le maximum de 200 millisecondes qui est raisonnable pour une requête de page unique. Je peux l'exécuter en tant que processus asynchrone.)

La tâche est la suivante: j'ai en entrée un ensemble de fichiers audio et des données sur le moment où chaque fichier audio doit commencer à être lu dans une timeline. Le programme doit générer un fichier audio combinant l'audio d'entrée, combiné aux données de la timeline. C’est-à-dire que je veux un mélangeur audio qui fonctionne en mode de traitement par lots , et non en temps réel.

J'ai effectué quelques recherches sur Google, mais je suis un peu frustré car je ne sais pas exactement ce que je devrais rechercher. La plupart des mixeurs audio semblent destinés aux applications en temps réel telles que les jeux, et je ne suis pas sûr de savoir comment trouver quelque chose qui remplit cette tâche comme un utilitaire de ligne de commande - prenant uniquement des entrées et produisant une sortie aussi rapidement que possible.

J'espère que cette question a du sens.

Modifier: une personne a commenté Csound , puis l'a supprimée. Qu'est-ce que Csound? Est-il relativement simple de faire ce que je demande? N'oubliez pas que mes fichiers audio en entrée peuvent durer entre 10 et 50 secondes et que la distorsion de la hauteur ne m'intéresse pas.

Comment y arriveriez-vous dans Csound?

Y a-t-il autre chose que Csound qui peut faire ce genre de chose?

Était-ce utile?

La solution

Vous pouvez certainement utiliser Csound pour cela, et il pourrait être implémenté de différentes manières. Malheureusement, mon étude encore relativement récente de Csound a été plus impliquée dans la synthèse audio et la composition algorithmique que dans l'échantillonnage et le traitement. Je ne peux donc pas proposer de mise en œuvre robuste.

Cependant, je suppose que le fichier orchestre de votre projet (la partie d’un programme Csound contenant des informations de synthèse et de traitement audio, contenus dans des modules appelés instruments ) impliquerait: l'opcode soundin , qui lit un fichier audio, puis modifie l'amplitude de divers flux et les mélange avant de passer à la sortie.

La timeline serait probablement gérée dans le fichier de partition (la partie d'un programme Csound qui gère l'initialisation des instruments et des tables de fonctions), qui traduirait les données de votre timeline en temps de lecture.

Vous pouvez également rechercher la sous-routine GEN01 de Csound, qui lit les données audio d'un fichier dans une table de fonctions.

Autres conseils

Si vous êtes prêt à envisager l'exécution de scripts de commandes dans le cadre de ce processus, SoX peut être utile. . Son "mélangeur" et " remix " Les commandes semblent pouvoir être utiles, bien que vous deviez éventuellement créer un espace vide au début des fichiers audio pour gérer les décalages.

Vous devriez consulter SuperCollider . Peut-être que cela ferait l'affaire pour vous.

Quelque chose comme les liaisons OpenAL de PHP?

Vous pouvez consulter la bibliothèque audio BASS . Je ne peux pas voir s'il peut mélanger plus rapidement qu'en temps réel, car il est bloqué par le pare-feu, mais je l'ai trouvé convivial à utiliser par le passé.

Vous recevez probablement beaucoup de suggestions concernant des solutions audio en temps réel en raison de la formulation de votre question:

  

Le programme doit générer une sortie audio.   fichier qui est un mélange de l'entrée   audio, combiné à l'aide de la chronologie   données.

" Entrée audio " est très vague. Pour moi, cela ressemble à un flux d'entrée en direct (comme un microphone). Si vous n'avez pas du tout affaire à des flux d'E / S en direct, alors oui, Csound serait un candidat probable. De nombreux didacticiels Csound sont en ligne.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top