Closed olof29 closed 5 years ago
savoir comment creer ces sorties audio
Il y a moyen d'aboutir à ça mais y a des petites complications. C'est surtout la bilbliothèque RtAudio sur laquelle le logiciel est bâtie. Je t'explique. Cette biblio est un support générique de toutes les interfaces audio (Jack, aussi Alsa et les autres) Elle a moins de capacités que Jack en propose.
Voila comment tu peux faire. (sinon, faire directement du jack est une solution)
RTAUDIO_JACK_DONT_CONNECT
Ensuite pour le mixage ça se passe ici. Tu peux voir que ça itère, sur tous les clouds et ça les écrit dans la sortie en stéréo entrelacé. Faudra modifier ce code afin de pouvoir travailler en N-canaux, N > 2.
EDIT correction
je ne cherche pas vraiment à travailler en n canaux, mais à envoyer la meme chose sur les deux canaux principaux et sur deux canaux dediés à chaque cloud
et utiliser jack qui permet ça à la place de rtaudio ? ça serait faisable, il y aurait des inconvenients ?
On peut utiliser jack à la place de rtAudio. Avantage : c'est une bibliothèque facile à utiliser, un peu plus riche. Inconvénient : ça ne sera pas compatible avec un usage normal d'utilisateur windows ou mac, ou même linuxien qui n'est pas un utilisateur de jack. alors, ce serait le mieux d'avoir accès aux 2 choix, par exemple à l'aide d'une compilation conditionnelle.
avec jack tu auras une possibilité de créer un port dynamique lorsque tu fais un nouveau cloud (cf jack_port_register
/jack_port_unregister
)
alors, ce serait le mieux d'avoir accès aux 2 choix, par exemple à l'aide d'une compilation conditionnelle.
Encore mieux, un fanion de démarrage en CLI, comme ça, on peut choisir soit l'un, soit l'autre à l'exécution et on est pas dépendant des mainteneurs de distributions/paquets qui seraient obligés de faire un choix Cornélien ici. :nerd_face:
mais pour que borderlands fonctionne sous linux, il faut imperativement que jack soit lancé, non ?
je reviens sur ce fil, pour discuter de nouveau du choix à faire ici. je m'explique :
il est impossible de faire tourner Frontieres actuellement sous linux sans lancer jack. je me trompe ?
Pas tout à fait. En RtAudio il faut activer une compilation conditionnelle des interfaces supplémentaires à l'aide d'un define
.
Il est vrai que j'ai seulement activé jack dans le fichier de projet, tu peux ajouter les autres.
(par ailleurs c'est possible d'exprimer une condition en qmake sur l'os utilisé, de sorte à activer aussi windows et mac)
Frontieres.pro
DEFINES += __LINUX_ALSASEQ__ # MIDI ALSA
DEFINES += __UNIX_JACK__ # audio Jack
##DEFINES += __LINUX_ALSA__ # audio ALSA
##DEFINES += __LINUX_PULSE__ # audio Pulse
Je pourrai poser les bases d'une variante en jack, ça n'a rien de compliqué. Mais de préférence pas avant de fusionner les quelques trucs en chantier actuellement, ce qui risquerait de déclencher des conflits à tout va.
il serait bon, de toute façon , de pouvoir choisir, à la maniere de hydrogen, par exemple, si on veut utiliser des sorties separees ou non, depuis l'interieur du logiciel.
il serait suffisant, je pense, d'ajouter un parametre canal audio aux clouds, et de creer 16 canaux audio stereo au lieu d'un, dans l'optique de l'utilisation midi. cela permettrait deja en utilisation midi de permettre d'envoyer chaque combinaison (canal midi) vers une sortie différente, et d'y appliquer à l'extérieur de Frontieres, les effets qui nous conviennent, d'enregistrer séparément...
(voir Pilotage MIDI #5)
si j'ai bien compris, cela ne serait pas trop compliqué ?
je pense qu'on peut considérer maintenant cette fonctionnalité comme implantée, depuis l'autoconnect et le choix du nombre de sorties passés en paramètres
dans le but de pouvoir appliquer des traitements separes sur chaque nuage, je voudrais creer une sortie audio stereo unique pour chaque nouveau nuage, qui serait une copie conforme de ce que ce nuage envoit au master. mes besoins : savoir comment creer ces sorties audio, ou les creer, et comment y assigner la production sonore du nuage