Home AMX User Forum NetLinx Studio

Data_Event String double picking up string from Nexia Biamp

I just installed a Nexia Biamp TC to one of my systems, via TCP/IP control. Commands to the unit work fine. But it appears to be sending back it's responses twice, instead of once.

I have the same code picking up all the IP device strings, and discreetly adding the received string to the device buffer. This works correctly for every other IP device (all my projectors, etc.), but it picks up the response from the Nexia twice. Complicating matters is the fact that, despite being an IP device, the Nexia usually sends just a single character at a time. It's been awhile since I worked with Biamps, I forgot why I despise them so much. Talk about a PITA to configure them and use the software... But, I digress.

When I telnet directly into the device from a command line, I do not get double responses. The only time the response appears twice is when the STRING {} picks it up.

I'm perplexed. Any help from the crowd out there?

Comments

  • AMXJeffAMXJeff Posts: 450
    I just installed a Nexia Biamp TC to one of my systems, via TCP/IP control. Commands to the unit work fine. But it appears to be sending back it's responses twice, instead of once.

    I have the same code picking up all the IP device strings, and discreetly adding the received string to the device buffer. This works correctly for every other IP device (all my projectors, etc.), but it picks up the response from the Nexia twice. Complicating matters is the fact that, despite being an IP device, the Nexia usually sends just a single character at a time. It's been awhile since I worked with Biamps, I forgot why I despise them so much. Talk about a PITA to configure them and use the software... But, I digress.

    When I telnet directly into the device from a command line, I do not get double responses. The only time the response appears twice is when the STRING {} picks it up.

    I'm perplexed. Any help from the crowd out there?

    Are you getting two responses, or an echo of the message that you are sending?
  • I'm pretty sure it's not an echo, because I get a double +OK$0A$0D - the response from the biamp that doesn't get sent to it - as well as a double characters in the regurgitation of the original command.
  • ....and, I just realized I just got shipped units with 3 year old firmware. Slap me for thinking that a brand new device I just received, apparently drop-shipped directly from the MFG, would have current firmware. Updating system now...
  • WAIT, NO... I feel like I'm stumbling blind through a briar patch! The Nexia firmware *file* number is 1.780, but I've done this several times now, and it actually installs firmware *version* 1.201-xxxx. Just one more reason to despise Biamp, but... I digress.

    Still have the problem after upgrading the firmware. And it gives me the double-character even on initial connection where it outputs "WELCOME TO BIAMP".

    Here are a couple snippets from the code...
    dvaudio_248  = 0:15:0 
    
    data_event[d_all] { 
       string { 
          call 'debug' ("'Data from device:',data.text") 
       }
    }
    

    and what I get back is garbage like this:
    Data from device:W
    Data from device:W
    Data from device:E
    Data from device:E
    Data from device:L
    Data from device:L
    Data from device:CO
    Data from device:CO
    

    ...you get the idea. The most characters I've seen come across in one data.device event is 4. 95% of the time it's just one, 4% of the time it's two, and once in a great while it will get 3 or 4 in.

    The "d_all" device is an array of all my IP devices: 4 projectors, the new Biamp, and another switch and serial audio controller being driven through a MOXA IP-Serial box. None of the other devices give me the double-event from incoming data. Only the biamp does.

    But of course, again, if I telnet into the device, I don't get any double characters sent back.

    It seems, for all intents and purposes, that the communications back from the Biamp is so F'ing slow the controller picks up a single data string twice. Never seen that before.

    I have another one of these back at the shop. I'll fire it up and set up the simplest single-device IP setup and see what I get.
  • viningvining Posts: 4,368
    The Moxa buffers incoming data too so I would look at that port's settings. Does the biamp have any delimiter? Most serial servers allow you do adjust the buffering time and allow you to trigger the data relay if a specified delimter is received prior to the buffering time period setting. I take it you can't temporarily connect directly to the master.
  • I'm not having trouble with any devices connected to the MOXA. I'm having trouble with a direct Telnet connection to a Biamp Nexia.
  • viningvining Posts: 4,368
    I thought you said earlier direcet telnet was OK and I knew the other devs were/are working through Moxa but they're probably much faster so if the BiAmp is as slow as you indicated the Moxa buffering might be a problem for the biamp but not a problem for the faster devs.
  • AuserAuser Posts: 506
    I've had very few dramas working with Biamps - they've been solid workhorses for a long time. Unfortunately the Nexia/Audia series are a bit lacking in DSP power compared to some of the other platforms out there these days, but I digress.
    dvaudio_248  = 0:15:0 
    
    data_event[d_all] { 
       string { 
          call 'debug' ("'Data from device:',data.text") 
       }
    }
    

    Can you please post the code where you define d_all?

    Also, have you read the section regarding telnet control in the Nexia/Audia manuals?
    Manual wrote:
    Nexia supports standard Telnet Echo Negotiation. By default, the Telnet server will echo characters sent to it, one by one.

    To turn echo OFF during a session:

    Send byte sequence 0xFF 0xFE 0x01.
    Receive 3 byte response from server (0xFF 0xFC 0x01 = echo OFF).
    Send desired commands.

    To turn echo back ON during a session:

    Send byte sequence 0xFF 0xFD 0x01.
    Receive 3 byte response from server (0xFF 0xFB 0x01 = echo ON).
    Send desired commands.
  • regallionregallion Posts: 95
    Hehe Auser beat me to it.

    My driver sends 0xFF 0xFE 0x01 in the ONLINE event after connecting to it.
  • viningvining Posts: 4,368
    Those are standard telnet session commands: command, don't, echo.
    //$FF = IAC (interpret as command) or extended options list
    //$FE = DON'T
    //$FD = DO
    //$FC = WON'T
    //$FB = WILL
    //$FA = START SUB NEGOTIATIONS
    //$F0 = END OF SUB NEGOTIATIONS
    //$F9 = GO AHEAD SIGNAL
    //$F3 = NVT BREAK CHARACTER BRK
    //$F2 = DATA MARK
    //$F1 = NOP NO OPERATIONS
    //$1  = ECHO
    //$3  = SUPPRES GO AHEAD
    //$18 = TERMINAL TYPE
    //$1F = NEGOTIATE WINDOW SIZE
    (*
    Commands     Dec Hex        Description 
    ----------------------------------------------------------------
    data                     All terminal input/output data. 
    End subNeg    240 FO     End of option subnegotiation command. 
    No Operation  241 F1     No operation command. 
    Data Mark     242 F2     End of urgent data stream. 
    Break         243 F3     Operator pressed the Break key or the
    			 Attention key. 
    Int process   244 F4     Interrupt current process. 
    Abort output  245 F5     Cancel output from current process. 
    You there?    246 F6     Request acknowledgment. 
    Erase char    247 F7     Request that operator erase the previous
    			 character. 
    Erase line    248 F8     Request that operator erase the previous
    			 line. 
    Go ahead!     249 F9     End of input for half-duplex connections.
    SubNegotiate  250 FA     Begin option subnegotiation. 
    Will Use      251 FB     Agreement to use the specified option. 
    Won’t Use     252 FC     Reject the proposed option. 
    Start use     253 FD     Request to start using specified option. 
    Stop Use      254 FE     Demand to stop using specified option. 
    IAC           255 FF     Interpret as command. 
    *)
    
  • @vining: Sorry, I worded that very poorly. I'm using IP_Client_Open using port 23 in the controller code, and getting the double-event in the data_event string{} area; to test, I'm using the TELNET command in a command line, and not seeing any double-characters when testing that way.

    @Auser: A night's sleep, and your question, led me to finding my problem. When I changed the audio device definition from a serial device (MVC 121) to an IP device (Biamp), I copied and pasted the last IP device I had on 0:15:0, and apparently forgot to increment the number (actually, I think I did that at first, but then got a little crazy with CTRL-Z after mis-pasting the next bit of code and didn't catch the fact that I un-did the number increment).

    So, I had 2 devices defined on 0:15:0. The other one isn't actually active yet, so it was less obvious than it should have been. D'oh!

    Anyway, crisis averted. Thanks for the help!
  • HedbergHedberg Posts: 671
    Glad you found the problem. I was thinking about it as I read through this thread and didn't see how it could be an echo problem as the 'welcome' message is not an echo but is entirely Biamp generated.

    As for Biamps in general, their erector set sort of program structure is not my favorite particularly because it depends on the guy who programs the Biamp to be consistent with how he snaps it all together if you want to have pretty much reusable code. There are a number of little things that can be snapped together in different ways and it sometimes comes out looking like "the exciting game without any rules." I much prefer the control protocol of the ClearOne (Gentner) units or the older Polycom stuff (eg: EF2211) or even Lectrosonics. But, we've never had anything with the Biamps that couldn't be worked out pretty easily so I don't hate on them all that much.
  • AuserAuser Posts: 506
    So, I had 2 devices defined on 0:15:0.

    Thought you might have - it was fairly obvious to me that the data event was firing twice when you got the welcome message. Glad you found the problem.
  • @Harold: I don't have enough commonality of application for audio systems to be worried much about the way a system is actually put together. I've got the Unit, BlockID, and ChannelID defined as part of the audio system structure, so it's not a big deal to plug that data into the NetLinx program after the audio DSP is configured.

    My frustration is centered more around how clunky it is to set up the IP configurations in the program, as well as the system configurations and maintenance stuff. And, silly stuff like the way the firmware files are numbered vs. the firmware number in the unit itself. I find the Polycom Soundstructures to be about the easiest to set up and configure as far as DSP's. But, I haven't done anything with the ClearOne units.

    One thing that gets me about the Nexia units is the actual sound quality. I replaced a $350 Extron MVC-121 with a $2,000 Nexia TC because I needed AEC for videoconferencing. But for everything except the AEC, that little MVC-121 sounds way better than the Nexia. The MVC's have much richer, fuller, cleaner mic gain and response, have way less problems with local feedback, and no digital buzzing, popping, or other artifacts. A $1K TOA DSP sounds much better too, and it's got a 120 watt 70V amp built in as well.

    But when you need AEC, you gotta have it. Does anyone have any recommendations for other audio DSP's that do AEC for videoconferencing?
  • @Auser: Yeah, I knew it had to be something screwy in my programming; in 6 years, it's only been a problem with the controller once. I can't believe it took me so long to spot the problem, either. I looked at that device definition a dozen times, but was completely blind to the mistake. It probably didn't help that when I first got the thing all hooked up and noticed the problem, was about the time the client came in and started pestering me and distracting me from what I was doing.

    Oh well, all better now, except for the fact that the next time the client came in, I was in the middle of testing the boundaries of the room audio, and was getting really bad feedback on the mic to find out where the worst resonant frequencies were. Now he's convinced the new DSP is the wrong equipment and we need to install something else.

    The problem is the room, not the audio DSP. It's got a bare concrete ceiling with roughly 6x6x3 ft "cells" sunken upward. And of course asbestos coated, so we can't touch it or put in a drop ceiling without major $$ and time which the client doesn't have. The echo in that room even without any PA reinforcement is awful. The sad part is, a cheap little MVC-121 sounded way better and had far less mic feedback than the Biamp Nexia.

    I hate audio, especally PA reinforcement. It's by far the hardest part of any job to get right, and it's the part of my job I really know the least about.
  • AuserAuser Posts: 506
    A couple of cents worth.

    With your feedback issue, if you really can't get any wall or ceiling treatments in, do the following:

    - EQ the mics and speakers
    - Drop a feedback suppressor into the design along with a PEQ downstream of it
    - Let the mics ring out so the feedback suppressor can grab the resonant frequencies
    - Copy the DSP data from the feedback suppressor into the PEQ
    - Delete the feedback suppressor to free up DSP power if required, or leave it in the system to clean up the acoustics if the mics are likely to move within the room

    Feedback suppressors are very costly from a DSP point of view. Most of the time copying the filters they create into a PEQ is a better approach, particularly in the Nexia series which have less DSP horsepower than the Audias. If multiple PEQs are included in the system, a single feedback suppressor can be used to learn resonant peaks and then copy them to individual PEQs to provide many bands of feedback suppression.

    IMHO fixed architecture DSPs like the Clearones and Polycoms are great (so long as you are aware of their inherent capability limitations) - right up until you need more complexity in a system than a single unit can provide. Having to buss audio between units with fixed architectures and large central matrices becomes diabolical very, very quickly. If there's a requirement to link more than two units, go straight for a free architecture DSP. I say this with a large amount of experience behind me.

    Biamp has instance tags; arbitrary text names which can be used in place of instance ID's when controlling the units. It makes sense to use them to make the control more logical and human readable when debugging and more consistent between systems - unfortunately nobody ever seems to use them.

    The BSS London Blue series give the Biamps a hiding in terms of DSP power at the moment (until the Tesira range hit the market anyway). Unfortunately the control is diabolical and debugging near impossible. The code blocks available on the AMX and BSS websites are ... crap. They do the job very well from an acoustic standpoint if you're willing to invest the time in being able to control them however.
  • Auser wrote: »
    - EQ the mics and speakers
    - Drop a feedback suppressor into the design along with a PEQ downstream of it
    - Let the mics ring out so the feedback suppressor can grab the resonant frequencies
    - Copy the DSP data from the feedback suppressor into the PEQ
    - Delete the feedback suppressor to free up DSP power if required, or leave it in the system to clean up the acoustics if the mics are likely to move within the room

    Yes, this is pretty much exactly what I'm doing. Unfortunately, the feedback suppressor punches out almost everything between 100-450hz, plus a more up higher, and it would punch out more lower if not for the high pass filter. In other words, the frequencies the feedback eliminator finds, when punched out, pretty much kill voice quality anyway. We did get *some* wall treatment, but it's less than 5% of total solid-wall area, and this is still one nasty, nasty sounding room.

    A drop ceiling and ceiling mics would solve the problem, but that's not happening any time soon. Working in EDU with squirrelly grant money restrictions is the bane of my existence. Fortunately this situation is a bit of an outlier; one of the worst rooms acoustically, one of the poorer budgets, one of the shortest timeframes (grant money must be spent by X), and one of the worst clients intelligence-wise. If I were private enterprise, I'd walk away from this job.
  • AuserAuser Posts: 506
    Ouch. One of those jobs. Good luck!
  • Hedberg wrote: »
    Glad you found the problem. I was thinking about it as I read through this thread and didn't see how it could be an echo problem as the 'welcome' message is not an echo but is entirely Biamp generated.

    As for Biamps in general, their erector set sort of program structure is not my favorite particularly because it depends on the guy who programs the Biamp to be consistent with how he snaps it all together if you want to have pretty much reusable code. There are a number of little things that can be snapped together in different ways and it sometimes comes out looking like "the exciting game without any rules." I much prefer the control protocol of the ClearOne (Gentner) units or the older Polycom stuff (eg: EF2211) or even Lectrosonics. But, we've never had anything with the Biamps that couldn't be worked out pretty easily so I don't hate on them all that much.

    One trick to use with Biamp that'll make your code more reusable is to have whoever makes the DSP file use the instance ID tag for the blocks. This is a logical name that takes the place of the instance ID in the command, so for instance you would have SET 1 FDRMUTE MasterVolume 1 0 instead of SET 1 FDRMUTE 23 1 0. You can use a standard set of tags so that, as long as the DSP programmer has them in the right place, will react the same way every time, no matter how the DSP is built. This also keeps you from having to change the program when someone decides to check the box that redistributes the instance IDs in the DSP file.
  • rfletcherrfletcher Posts: 217
    @Harold: I don't have enough commonality of application for audio systems to be worried much about the way a system is actually put together. I've got the Unit, BlockID, and ChannelID defined as part of the audio system structure, so it's not a big deal to plug that data into the NetLinx program after the audio DSP is configured.

    My frustration is centered more around how clunky it is to set up the IP configurations in the program, as well as the system configurations and maintenance stuff. And, silly stuff like the way the firmware files are numbered vs. the firmware number in the unit itself. I find the Polycom Soundstructures to be about the easiest to set up and configure as far as DSP's. But, I haven't done anything with the ClearOne units.

    One thing that gets me about the Nexia units is the actual sound quality. I replaced a $350 Extron MVC-121 with a $2,000 Nexia TC because I needed AEC for videoconferencing. But for everything except the AEC, that little MVC-121 sounds way better than the Nexia. The MVC's have much richer, fuller, cleaner mic gain and response, have way less problems with local feedback, and no digital buzzing, popping, or other artifacts. A $1K TOA DSP sounds much better too, and it's got a 120 watt 70V amp built in as well.

    But when you need AEC, you gotta have it. Does anyone have any recommendations for other audio DSP's that do AEC for videoconferencing?

    Huh, can't say I've ever noticed buzzing or popping with the nexia units. Nexia/audia are currently our dsp's of choice for jobs with AEC. I will agree that Biamp's ip configuration in their software is a bit clunky though.

    We used to use the ClearOne ConvergePro boxes a bunch, and they're not bad. However the AEC is a bit more difficult to get working perfectly in complicated systems/difficult rooms IMO. I've also worked with the ClearOne InteractPro boxes, and while they work (with the same note about the AEC as the ConvergePros) I loathe the config software for them.

    I've never really played with Polycom SoundStructure so I can't comment on that, but I'd rather shove an ice pick through my eye then ever deal with another Polycom Vortex system again. Their AEC sucks, the rest of their DSP sucks, and the config software both sucks and blows. Not to mention their power supplys WILL explode at some point. Every one we've ever sold has had it's power supply replaced once, and most of them have been replaced many times.

    -Ryan
  • AuserAuser Posts: 506
    rfletcher wrote: »
    I've never really played with Polycom SoundStructure so I can't comment on that, but I'd rather shove an ice pick through my eye then ever deal with another Polycom Vortex system again. [...] Not to mention their power supplys WILL explode at some point. Every one we've ever sold has had it's power supply replaced once, and most of them have been replaced many times.

    +1 - I've never installed them myself, but I've replaced countless units installed by other contractors where the power supply has gone.
  • I haven't had any power supply problems with the soundstructure units, but I had a VSX 7000 crap out recently. For the record, as much as I've trashed AMX about support issues on the other thread, I've got 10 times the ire for Polycom support, and all their vendors to boot. At least it's *always* been that bad, so I didn't see a change from good to bad.

    And yes, I am working towards eliminating deployment of expensive, proprietary teleconferencing systems like Polycom on our campus, too.

    For the Biamp systems popping and buzzing, I can definitely hear it, but I'm willing to blame myself for implementing less than "best practice" configurations. The most glaring and reproducible problem is that every time I've ever tried to put a noise gate into one of the systems, it basically craps it's pants and gives me nothing but intermittent popping on that input. Biamp tech support has even told me, "yeah, they do that." It's my understanding that most of the sound quality issues stem from the digital gain vs. most systems that have analog gain before digitizing the signal.

    But I'd still like to try to work through the problems I'm having with the systems, and for now Biamp tech support seems easy to reach and fairly attentive to my needs. Overall, they do what I need and are the least expensive decent AEC option. I just need to get used to working around their limitations. Unlike AMX, there's no realistic way I can abstract AEC audio DSP's in virtual servers on my production floor.

    Thanks for all the tips - this has been very helpful!
Sign In or Register to comment.