Je suis nouveau pour les pilotes audio alors s'il vous plaît nu avec moi.Comment contrôler une carte son par programme?
Je joue avec pyaudio
sur un mac en utilisant une carte son Saffire Pro 40. Actuellement, j'ai deux entrées branché et je voudrais contrôler les niveaux du deuxième canal d'entrée par programmation. (Cela fonctionne bien en utilisant le logiciel de contrôle de mixage de la carte son).
J'ai parcouru les docs pyaudio
, mais je n'ai rien trouvé de flagrant sur ce problème jusqu'à présent. Quelle est la manière la plus simple de faire essentiellement ce que le logiciel de contrôle de mélange fait (contrôler le volume par canal) par programmation? (Une API Python serait bien, mais pas indispensable)
Pour simplifier: il semble qu'il soit possible de lire manuellement les flux à partir des canaux que je veux contrôler, les mettre à l'échelle en utilisant numpy, les écrire en sortie, mais je J'espère qu'il existe une méthode pour simplement envoyer une valeur normalisée par canal pour le contrôler.
Ainsi, au lieu de quelque chose comme ceci:
stream1 = pyaudioInstance.open(format = FORMAT,
channels = CHANNELS,
rate = RATE,
input = True,
output = True,
input_device_index = 0,
frames_per_buffer = CHUNK
)
stream2 = pyaudioInstance.open(format = FORMAT,
channels = CHANNELS,
rate = RATE,
input = True,
input_device_index = 1,
frames_per_buffer = CHUNK
)
while processingAudio:
# manually fetch each channel
data1In = stream1.read(CHUNK)
data2In = stream2.read(CHUNK)
# convert to numpy to easy scale the arrays
decodeddata1 = numpy.fromstring(data1In, numpy.int16)
decodeddata2 = numpy.fromstring(data2In, numpy.int16)
newdata = (decodeddata1 * 0.5 + decodeddata2* 0.1).astype(numpy.int16)
# finally write the processed data
stream1.write(result.tostring())
Ceci est un peu trompeur mais je besoin de mélanger des canaux séparés du même indice de dispositif d'entrée. Mais ce que j'espère est quelque chose comme:
someSoundCardAPI.channels[0].setVolume(0.2)
Avoir un regard sur le Channel Maps example se sent plus proche de ce que je suis après. Pour le moment, je trouve la partie host_api_specific de l'API un peu déroutante et j'espérais que quelqu'un avait déjà une certaine expérience avec succès.
J'utilise OSX 10,10
Alors voulez-vous un moyen de contrôler à distance votre logiciel de mixage ou voulez-vous écrire une application qui manipule d'une manière ou d'une autre l'entrée audio et écrit le résultat sur les sorties de la carte son? Vous devriez être un peu plus précis. Et vous devriez probablement mentionner le système d'exploitation que vous utilisez. – Matthias
Toutes très bonnes questions, merci! J'ai mis à jour la question ci-dessus. Si je pouvais contrôler à distance le logiciel de mixage, ou puiser dans ses fonctionnalités à partir du code, ce serait génial! Mon approche jusqu'ici est de manipuler l'audio et de réécrire le résultat, mais j'espère qu'il y a un moyen sans avoir besoin de faire cela. J'utilise OSX 10.10 –