Biamp Nexia Programming Help
nishadsyd
Posts: 7
Hii Guys ,
I am working onBiamp Nexia with 4 microphones input.I would like to minimise my code and I need your suggestions.
Here is sample Volume Up code
BUTTON_EVENT[dvTP1,6] // Mic Volume UP
{
PUSH:
{
IF(nMuteMic1)
{
OFF[nMuteMic1]
TO[dvTP1,6]
SEND_STRING dvNexia,"'SET 1 FDRMUTE ',cBiampMic1,'1 0',10" // cBiampMic1 is the ID value
}
ELSE
{
snVolMic1 = MIN_VALUE(snMaxVolMic,snVolMic1+cBiampIncrement) // max volume set as 8dB
SEND_STRING dvNexia,"'SET 1 FDRLVL ',cBiampMic1,'1',ITOA(snVolMic1),10"
}
}
HOLD[3,REPEAT]:
{
snVolMic1 = MIN_VALUE(snMaxVolMic,snVolMic1+cBiampIncrement)
SEND_STRING dvNexia,"'SET 1 FDRLVL ',cBiampMic1,'1',ITOA(snVolMic1),10"
}
}
My question is how do I use the same code for other 3 mics
Is it like
DEFINE CALL ?VOL UP?(Mutestatus ,source,Vol,MaxVol)
{
BUTTON_EVENT[dvTP1,6] // Mic Volume UP
{
PUSH:
{
IF(Mutestatus)
{
OFF[Mutestatus]
TO[dvTP1,button.input.channel]
SEND_STRING dvNexia,"'SET 1 FDRMUTE ',Source,'1 0',10"
}
ELSE
{
Vol = MIN_VALUE(MaxVol,Vol+1)
SEND_STRING dvNexia,"'SET 1 FDRLVL ',Source,'1',ITOA(Vol),10"
}
}
}
}
So when I press other Mic ,for example button 10 for mic 2 volume up
BUTTON_EVENT[dvTP1,10]
{
PUSH:
{
CALL ?VOL UP?(Mic2Mute,Mic2,Vol,1)
}
HOLD[3,REPEAT]:
{
CALL ?VOL UP?(Mic2Mute,Mic2,Vol,1) // Vol is the fedd back from Nexia(string function and SINTEGER) and 1 dB is the Max Volume
}
}
Is it correct?
Because the site is in remote area and I don?t have enough time to work onsite.any ideas?
I am working onBiamp Nexia with 4 microphones input.I would like to minimise my code and I need your suggestions.
Here is sample Volume Up code
BUTTON_EVENT[dvTP1,6] // Mic Volume UP
{
PUSH:
{
IF(nMuteMic1)
{
OFF[nMuteMic1]
TO[dvTP1,6]
SEND_STRING dvNexia,"'SET 1 FDRMUTE ',cBiampMic1,'1 0',10" // cBiampMic1 is the ID value
}
ELSE
{
snVolMic1 = MIN_VALUE(snMaxVolMic,snVolMic1+cBiampIncrement) // max volume set as 8dB
SEND_STRING dvNexia,"'SET 1 FDRLVL ',cBiampMic1,'1',ITOA(snVolMic1),10"
}
}
HOLD[3,REPEAT]:
{
snVolMic1 = MIN_VALUE(snMaxVolMic,snVolMic1+cBiampIncrement)
SEND_STRING dvNexia,"'SET 1 FDRLVL ',cBiampMic1,'1',ITOA(snVolMic1),10"
}
}
My question is how do I use the same code for other 3 mics
Is it like
DEFINE CALL ?VOL UP?(Mutestatus ,source,Vol,MaxVol)
{
BUTTON_EVENT[dvTP1,6] // Mic Volume UP
{
PUSH:
{
IF(Mutestatus)
{
OFF[Mutestatus]
TO[dvTP1,button.input.channel]
SEND_STRING dvNexia,"'SET 1 FDRMUTE ',Source,'1 0',10"
}
ELSE
{
Vol = MIN_VALUE(MaxVol,Vol+1)
SEND_STRING dvNexia,"'SET 1 FDRLVL ',Source,'1',ITOA(Vol),10"
}
}
}
}
So when I press other Mic ,for example button 10 for mic 2 volume up
BUTTON_EVENT[dvTP1,10]
{
PUSH:
{
CALL ?VOL UP?(Mic2Mute,Mic2,Vol,1)
}
HOLD[3,REPEAT]:
{
CALL ?VOL UP?(Mic2Mute,Mic2,Vol,1) // Vol is the fedd back from Nexia(string function and SINTEGER) and 1 dB is the Max Volume
}
}
Is it correct?
Because the site is in remote area and I don?t have enough time to work onsite.any ideas?
0
Comments
figure out which button is pressed last and send the correct string to the Nexia.
You can increment and decrement the nexia using the 'INC 1 FDRLVL' or 'DEV 1 FDRLVL' commands, or you can keep track of the volume yourself and send it out using the SET 1 FDRLVL command...
Good luck!
There is an AMX module that works quite well for the Nexia..
I have written a simple Biamp subroutine for volume as follows:
DEFINE_CALL 'SEND GAIN COMMAND'(integer nWhichVol, integer nLvl)
{
SEND_STRING dvAudio,"'SETL 1 FDRLVL ',InstID[nWhichVol],' 1 ',ITOA(nLvl*10),$0A"
SEND_STRING 0,"'TO BIAMP: SETL 1 FDRLVL ',InstID[nWhichVol],' 1 ',ITOA(nLvl*10),$0A"
}
My button event for the vol up is as follows - works for multiple buttons (edited for simplicity - hold event is identical to push) dcVolUpBtns is a devchan array with all of the volume up buttons
BUTTON_EVENT[dcVolUpBtns] // Vol Up
{
PUSH:
{
TO[BUTTON.INPUT]
nCurVol = GET_LAST(dcVolUpBtns)
IF(nVolLvl[nCurVol] < 100)
{
nVolLvl[nCurVol] = nVolLvl[nCurVol] + 1
CALL 'SEND GAIN COMMAND'(nCurVol,nVolLvl[nCurVol])
}
}
}
The biamp amp module only uses the functions you intialize with the 'AUDIOPROCADD-' commands, so it will get only as bloated as the functionality you require. As far as simple, it does not get more simple then this UI code...
code cut out
looks like a hot mess but you get the idea, I had this written long time ago for telnet control of biamp products with phonebook+speeddial+full keyboard support, and dont poll the biamp poll it on startup and shutdown thats it and use sinteger or a float to keep it in sinc they have a bit of hickups on polling too hard especially when you have multiple Audia devs.
We have a Nexia on one of our current installations and today I decided to risk it and try the AMX module. My results were not good:
1. It's big and fat even if you only use a couple functions.
2. The biamp has increment and decrement commands but the module, as far as I can tell, doesn't use them. The module seems to use discrete level setting commands and does not query the device for the current levels before issuing the commands--it ignores the currently set levels. So, when you turn on the channel to "ramp" the gain, it's likely to make a big jump one way or the other before it starts to ramp. This is very bad, particularly when the device has increment and decrement commands, the use of which would prevent this. The gain seems to be adjustable only in steps of 3 which is a touch coarse.
3. The Nexia telecon unit has a decent speed dial facility which is pretty intuitive and easy to use. The module's wrapper (called, inexplicably "PHONEBOOK") has a set of byzantine commands that I couldn't fathom. I could figure out how to modify a speed dial entry, but I couldn't figure out how to recall one. It looks to me as though the module is storing and manipulating the speed dial entries locally which makes absolutely no sense to me.
As is the case with most of the modules that I have tried to use recently, in order to evaluate the module it's necessary to become familiar with the Nexia's protocol to the extent that it's easier to write code in that protocol than it is to learn the module's protocol. Then, the performance of the module does not meet minimum standards and I end up chucking it and using the device protocol anyway.