1 pièce(s) jointe(s)
Nouvelle API Audio pour Windows
Ce message s'adresse à ceux qui font du traitement du signal audio numérique et qui cherchent des alternatives ou des solutions plus simples et plus puissantes que ce que proposent les API Audio Microsoft.
Voicemeeter (notre table de mixage virtuelle sur PC Windows) propose maintenant une API audio pour traiter le son à l’intérieur de Voicemeeter.
L’intérêt pour une application cliente est de profiter de tout ce que fait Voicemeeter :
- la gestion des périphériques audio et leur agrégation/synchronisation ;
- l’interconnexion avec des applications ;
- la prise en charge de toutes les interfaces audio (y compris ASIO) ;
- les I/O virtuelles (incluant les drivers ASIO virtuels) ;
- le protocole VBAN pour envoyer/recevoir du son sur le réseau local.
Très facilement avec quatre fonctions, l’API Voicemeeter permet de mettre en place une Callback pour traiter le son de ses différents canaux internes.
Voicemeeter propose trois Callbacks différentes (qui peuvent être utilisées par trois applications différentes)
Pièce jointe 208068
Les liens pour la nouvelle version de Voicemeeter , et du SDK Voicemeeter remote API :
http://vbaudio.jcedeveloppement.com/....php?f=6&t=389
Voicemeeter Remote API Documentation :
http://vbaudio.jcedeveloppement.com/...rRemoteAPI.pdf
Si cela vous intéresse, n’hésitez pas à nous contacter, s’inscrire sur nos forums, nous assurerons un suivi très assidu pendant les deux mois qui viennent.
Cordialement
Vincent Burel
www.vb-audio.com
www.mt128.com
www.vb-cable.com
www.voicemeeter.com
https://www.facebook.com/vbaudiosoftware
https://plus.google.com/110557338955940627490
https://twitter.com/VB_Audio
1 pièce(s) jointe(s)
8x8 Gain Matrix for Voicemeeter Output BUS
Comme premier exemple concret d’utilisation de l’API Audio fourni par Voicemeeter. Nous avons fait une sorte d’APO fonctionnant comme un application classique, qui vient s’insérer sur les sorties bus de voicemeeter (pre master section – CALLBACK 2) pour faire un traitement de sortie bien connue dans le monde du home-cinema :une simple matrice 8x8 de gain.
Pièce jointe 210960
Un matrice 8x8 de gain permet de faire des "UP MIX" ou "DOWN MIX" pour redistribuer les possibles 8 canaux d’un DVD sur un système quelconque mono, stéréo, 5.1, 7.1…
Vous trouverez cette application dans le nouveau SDK (Voicemeeter Remote API) sous forme de source code ou d’exécutable: http://vbaudio.jcedeveloppement.com/...x8x8_v1000.zip.
Je rappelle que L’API Audio de Voicemeeter a été conçu pour simplifier le développment de traitement audio sous Windows. Le code source de l’application 8x8 gain matrix tient dans un seul fichier ‘C’ et la partie traitement Audio se limite à l’implémentation d’une callback :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
long __stdcall PROCESSING_MyCallback(void * lpUser, long nCommand, void * lpData, long nnn)
{
float gain,fzero=0.0f;
float * lpBufferIn;
float * lpBufferOut;
float signal;
int nuChannel,nbs, nuIn, nuOut;
LPT_APP_CONTEXT lpapp;
LPT_AUDIODSDPCTX lpctx;
VBVMR_LPT_AUDIOINFO pinfo;
VBVMR_LPT_AUDIOBUFFER lpa;
lpapp = (LPT_APP_CONTEXT)lpUser;
lpctx = &(lpapp->dsp);
switch(nCommand)
{
//--------------------------------------
// Init/End your object and allocate your memory
//--------------------------------------
case VBVMR_CBCOMMAND_STARTING:
pinfo = (VBVMR_LPT_AUDIOINFO)lpData;
break;
case VBVMR_CBCOMMAND_ENDING:
pinfo = (VBVMR_LPT_AUDIOINFO)lpData;
break;
case VBVMR_CBCOMMAND_CHANGE:
pinfo = (VBVMR_LPT_AUDIOINFO)lpData;
PostMessage(lpapp->hwnd_MainWindow,WM_COMMAND, IDM_RESTART,0);
break;
//--------------------------------------
// process buffer for Output INSERT
//--------------------------------------
case VBVMR_CBCOMMAND_BUFFER_OUT:
lpa =(VBVMR_LPT_AUDIOBUFFER)lpData;
nuChannel = lpctx->nuBusSelected * 8;
if ((nuChannel+8) > (lpa->audiobuffer_nbi-1)) break; //check that the given channels are existing
for (nuOut=0;nuOut<8;nuOut++)
{
//get pointer on output related to channel nuChannel
lpBufferOut = lpa->audiobuffer_w[nuChannel+nuOut];
//reset output bus
for (nbs=0;nbs < lpa->audiobuffer_nbs; nbs++) lpBufferOut[nbs]=fzero;
//compute bus from 8 input according gain matrix
for (nuIn=0;nuIn<8;nuIn++)
{
gain = lpctx->matrix_gain[nuOut][nuIn];
lpBufferIn = lpa->audiobuffer_r[nuChannel+nuIn]; //get pointer on input related to channel nuChannel
for (nbs=0;nbs < lpa->audiobuffer_nbs; nbs++)
{
signal= lpBufferIn[nbs] * gain; //apply gain to sample
lpBufferOut[nbs] +=signal; //accumulate in bus
}
}
}
//copy other channels (otherwise there will be no sound in other busses.
for (nuOut =0; nuOut < lpa->audiobuffer_nbi; nuOut++)
{
if ((nuOut < nuChannel) || (nuOut >= (nuChannel+8)))
{
lpBufferIn = lpa->audiobuffer_r[nuOut];
lpBufferOut = lpa->audiobuffer_w[nuOut];
for (nbs=0;nbs < lpa->audiobuffer_nbs; nbs++) lpBufferOut[nbs]=lpBufferIn[nbs];
}
}
break;
}
return 0;
} |
1 pièce(s) jointe(s)
Voicemeeter Remote API OCT 2020
je mets à jour ce thread et les liens qui vont avec:
Le SDK Voicemeeter Remote API est sur notre forum ici:
https://forum.vb-audio.com/viewtopic.php?f=8&t=346
il vient d'être mis à jour avec les dernières versions de Voicemeeter (OCT 2020)
Pièce jointe 582170