Multiple Channels with Firewire Input

I posted this in the podcasting forum, and it occurred to me I might have better luck getting a response here. Apologies if you've seen this one before! I quote:
I have a feeling this is a stupid question, but I'd hate to go without asking, so... I'm using a Behringer Eurorack UB1202 with a Behringer F-Control firewire interface to record a podcast with 3 (sometimes 4) microphones. Is there a way I could use that setup to split the audio onto 3 (or four) separate tracks? I'm assuming the answer is "no," since it ultimately dumps into one firewire input and therefore (I guess) one signal. I imagine I might be able to split off left and right channels, yes? But with 3 mics, that would put one on one track and two on another? (I'm using an iBook, by the way, so I've only got one firewire port to work with...)
Thanks for any advice!
Quicksilver G4 | G3 iBook   Mac OS X (10.4.4)  

..just because all the signals go
into my computer through one cord, that doesn't
necessarily mean that they can't be divided
out again, with the right equipment?
Yes exactly right. They make firewire audio devices that accept multiple analog inputs and have many analog outputs and it keeps it all straight.
Firewire is MANY times faster than a digital audio stream so the data can be "multiplexed". In other words, it only takes a few microseconds to send a few milliseconds of audio data so it sends some data from each channel, one channel at a time and then maybe some data to/from the disk(s) all on the same cable. Same goes for USB and Ethernet. Kind of like a hiway - every car does not need it's own road.
Figure that audio sampled at 96K is about 2MB/Sec and firewire can handle 400MB/sec Even 16 audio channels is only 32MB/Sec, well within Firewire's ability (but maybe your disk drive could not handle that rate?)

Similar Messages

  • How  to use multiple channels with one remoteObject .

    hi,
    I have an application which is accessed through HPPS some
    times , also it can be access on server with http service.
    so I want to know how to configure config files or add
    runtime channels which will support either channel depending on
    the server it is accessed over.
    Is there any one who can help me to solve this...i need it
    soon.
    thank you...

    Hi,
    Please visit the URL below for details on adding channel sets
    at runtime. Add multiple channels to the channel set so that the
    fall back mechanism works.
    http://livedocs.adobe.com/blazeds/1/blazeds_devguide/runtimeconfig_5.html#194376
    Hope this helps.

  • Multiple parameters with pipeline input?

    Hello,
    The answer to this may just be that this is not a case for using pipeline input.. 
    I have a function that takes two parameters, one is an object (the result of a third party web services call) and the second parameter is a string. To simply explain what the function does you can think of the object parameter like a table definition and
    the string parameter like the name of one of the fields... you supply the table and a fieldname and the function returns the 'ID' of that fieldname... I have this written as a normal function right now but I'm wondering if it's possible to change it to accept
    pipeline input... the other function I've designed as 'advanced functions' that take pipeline input typically only have one parameter.
    how would I do this with my case? two params, one an object and one a simple type (string)?
    1. I know I *could* make it take one object input param, and bundle that web service returned object and the other string value into a custom object and do property name binding... however that feels to me like forcing something that should not be.. I think
    I would put that in the 'not a case for pipeline input' bucket... but I'm unsure.
    2. how could I pass these two parameters pipeline style, without doing the one custom input object approach?
    I can see it for one set of them, like:
    $objectParam, $stringParam | MyFunction
    but how would I specify multiple sets of those two params?
    $objectParam1, $stringParam1, $objectParam2, $stringParam2 | MyFunction
    each iteration within the PROCESS block would work on a pair of params at a time...
    maybe I'm just thinking about this all wrong... which is why I'm posting.. maybe this just is not where I should be doing pipeline input?
    any input would be appreciated, thanks

    Hi DJC,
    I’m writing to just check in to see if the suggestions were
    helpful. If you need further help, please feel free to reply this post directly so we will be notified to follow it up.
    If you have any
    feedback on our support, please click here.
    Best Regards,
    Anna
    TechNet Community Support

  • Multiple Channels with Single Digital Edge Trigger

    I have a simple vi where two analog channels are read in and recorded simultaneously to a lvm file and plotted on a waveform graph. I need a digital edge to post trigger the data acquisition for both channels. 
    I can get this vi to work with one analog channel and the digital edge trigger just fine.
    When I remove the digital edge trigger, I can get the vi to work with both analog channels. Both signals plot on a waveform graph, and record nicely in the lvm file.
    The issue is how I am setting up the digital trigger (see attached).  The program is never entering the while loop. Where am I going wrong?
    Chassis:cDAQ-9172
    Analog Card:NI 9205 (Trigger Source PFI0)
    LabView: 8.6
    OS: Windows XP
    Solved!
    Go to Solution.
    Attachments:
    Analog Input with Digital Edge Trigger.vi ‏52 KB

    Gardma,
     I am going to take a quick guess (I'm lazy and haven't actually tested the code ), but, since it works without the trigger and given that you have it so that the read never times out (i.e. = -1), there is something going on such that the trigger is never generated on the source pin.  Just a thought.
    Cheers, Matt
    Matt Richardson
    Certified LabVIEW Developer
    MSR Consulting, LLC

  • Offset compensati​on on multiple modules with different input limits

    I want to acquire different value voltage signals from SCXI 1122 modules. I can this signals group in two ranges, and connect them to different modules, but I can have signals differing 1:100 on a single module as well. How can I do the offset compensation for each channel and each module?

    Hi James,
    May be this is not the optimal choice the HW but an existing one. I shall coock with existing species. The Labview manual states, that in such cases the LV chooses the highes possible gain in the SCXI module, and then applies different gains to different channels on the DAQ board. But I suppose, the offset of the full signal path depends not only on the gain of the SCXI module, so it means, for all gains I would need separate offset value. Principally I can supply an array of offset values to the Scaling constant tuner VI, but these constants is determined on a channel named ....calgnd. In this case the Acquire and average VI accepts only the first member of the input limits array, and I get only one offset for this limits. Is it enough for all
    different gains of the DAQ?

  • How do I acquire multiple channels with NIDAQmxBase?

    Sorry for the double post, I just thought my previous message subject looked more like a tutorial rather than a question.
    My question is the same, I am looking to acquire more than 2 channels worth of data using C++ and NIDAQmxBase. I have tried initializing with and without the timer. Without the timer I will get an actual response, with it the program stalls. I don't know if I am splitting up the data correctly...not sure how the DAQmx_Val_GroupByChannel works or whether I should use GroupByScanNumber.
    Here's my code (snippets from my prog):
    char Dev1_joint1_channels[] = "Dev1/ai0:1";
    char Dev1_joint2_channels[] = "Dev1/ai2:3";//the only reason I split this is to test with and without
    //buffersize is 500
    uInt64 samplesPerChan = bufferSize/4;
    // Data read parameters
    float64 data[bufferSize];
    int32 pointsToRead = bufferSize;
    /---------Initialize the task--------------------/
    DAQmxErrChk (DAQmxBaseCreateTask("",&taskHandle));
    DAQmxErrChk (DAQmxBaseCreateAIVoltageChan(taskHandle,Dev1_joint1_channels,"",DAQmx_Val_Diff,min,max,DAQmx_Val_Volts,NULL));
    DAQmxErrChk (DAQmxBaseCreateAIVoltageChan(taskHandle3,Dev1_joint2_channels,"",DAQmx_Val_Diff,min,max,DAQmx_Val_Volts,NULL));
    DAQmxErrChk (DAQmxBaseStartTask(taskHandle));
    WHILE LOOP
    /---------Acquire data--------------------------/
    DAQmxErrChk (DAQmxBaseReadAnalogF64(taskHandle,pointsToRead,timeout,DAQmx_Val_GroupByChannel,data,samplesPerChan,&pointsRead,NULL));
    /---------Assign to variables after averaging---/
    joint1_chanA = arrayAverage(data,0,pointsToRead/4);
    joint1_chanB = arrayAverage(data,pointsToRead/4,pointsToRead/4);
    joint2_chanA = arrayAverage(data,pointsToRead/2,pointsToRead/4);
    joint2_chanB = arrayAverage(data,pointsToRead*3/4,pointsToRead/4);
    }//END WHILE LOOP
    This works perfectly for just 2 channels, without even using the timer. I tried to stick the timer in, but the acquisition would not even go at that point. With 2 channels, I simply average the first half of data and assign it to the appropriate variable and then do the same for the second half. This works very well for just 2 channels, it's when i get into 4 channels that the data is messy.
    Help is appreciated!
    Thank you!
    Nathan
    [email protected]

    >I tried to stick the timer in, but the acquisition would not even go at that point.
    What timer? There's no timer in your code. Since putting in the timer makes it stop, that would seem to be the problem, and you're going to have to show it to us.
    A quick and not-very-careful read of your code seems to be OK, assuming the variables whose definitions and initialization you have left out are OK.
    >not sure how the DAQmx_Val_GroupByChannel works or whether I should use GroupByScanNumber
    The way you're doing the averaging requires DAQmx_Val_GroupByChannel.
    John Weeks
    WaveMetrics, Inc.
    Phone (503) 620-3001
    Fax (503) 620-6754
    www.wavemetrics.com

  • Multiple channels with multiple callbacks

    Dear sir,
    I have recently purchased NI-DAQ 6034E. I have met some problems while programming my application.
    I tried running scanning two analog channels and which will trigger my two different callback functions.
    My application shows error 10698-Cannot use this combination of scan and sample clock timebase for this board.
    Please Advise.
    Yours sincerely
    C.J

    CJ,
    The error 10698 specifies the following reason for the error: "You cannot use this combination of scan and sample clock timebases for this board." From this error, it sounds like you are attempting to manual configure clocks of your device for values that conflict with each other or are not allowed based on the specifications of your device.
    For the application that you are performing, I would recommend looking through the shipping examples (location will depend on what you are programming this in and other details not included in your post) as well as searching through the examples online at http://www.ni.com/support. I would take a look at how they configure the timing of their devices to make sure that you are specifying these settings correctly in the
    configuration of your 6034E.
    Also keep in mind that the sample and scan clock refer to the clock that controls when a scan begins. For multi channel scanning, a convert (channel) clock is used to determine when each channel in a single scan is sampled. Be sure that you are not mixing Traditional and NI-DAQmx functions.
    If you have any more questions then please include more information on your application, API, and details as to when the error occurs.
    Regards,
    Michael H
    Applications Engineer
    National Instruments

  • Multiple channel data with different time stamp logging

    I have peaks and valleys from multiple channels with different time stamp but I am not able to log to a single file. Any idea on how to do this?
    Attachments:
    Single Point Peak Valley Log.vi ‏53 KB

    Hi Dennis,
    Sorry for that I have modified the VI.
    Because the peak and valley of every channel will occur at different time and I want to log the peak/valley with the time stamp.
    How can I log them on the same file.
    Attachments:
    Single Point Peak Valley Log_Mod.vi ‏53 KB

  • How do set up multiple devices with multiple graphs in labview

    Hello,
    I am new at LabView, and we are trying to setup a test rig to measure voltage, pressure and flow rates. We are currently using a NI-6009USB box and Labview version 8.2.  Our problem lies in setting up the actual measurements on separate graphs. How do i go about setting up the daq-assistant to measure mulitple devices, and graph them on their own graphs?  We also need to know how to program in when measuring flow, how to convert it from square wave form to a calibrated curve?
    Any help would be greatly appreciated!
    Nate

    When you configure the DAQ Assistant, you will be first asked to select the measurement type. Assuming that you have voltage sensors because you have the 6009, you select Analog Input>Voltage. You then get a list of devices. Since you only have one, it should be listed as Dev1. Expand that and then pick the channels you have connected to the sensors. Just like it says at the bottom of the of the channel window, you can select multiple channels with  <CTL> or <SHIFT> click. After you've done that, the next window is where you select your sample rate, number of samples, etc. You can also select a custom scale for each channel. This is where you would enter any formula you have from the sensor vendor in order to convert a voltage reading to scaled units.
    The output of the DAQ Assistant is a dynamic data type. You can wire this to a single graph to display all readings together or use the Split Signals function to break out individual channels for separate graphs.
    Message Edited by Dennis Knutson on 02-22-2007 03:33 PM
    Attachments:
    Split Signals.PNG ‏4 KB

  • Several DAQmx Channels with Start and Clear Task VI's

    Hi,
    I'm trying to read in several DAQmx channels in a while loop. When I just place the channels within the while loop and connect them directly to the read VI's, everything is fine. But I read in the help, that this will slow down my system, because it's opening and closing the task each cycle. So I used Start Task and Clear Task VI's to open and clear them before and after the loop. But now it's only reading one of my channels in, although I wired all of them in exactly the same manner. Anyone has an idea, what I did wrong?
    Thanks,
    Miclas
    Attachments:
    Save&Stop DAQ.JPG ‏87 KB

    You would have seen the error if you had wired up and error indicator.
    You cannot run multiple tasks of the same type (i.e. an analog input) at the same time. What you read about stopping and closing tasks is correct but it was the only way your program could work. What you don't realize is that you can have multiple channels with a single task. If you used a physical channel constant, it would be something like 'dev1/ai0:2' if you had consecutive channels or 'dev1/ai0, dev1/ai2' for non-consecutive. Global channels are done in a similar fashion. You would have 'FSR1, FSR2, Knee Angle', etc.

  • Is there a way to acquire a set number of points from multiple channels?

    I had set up a VI to use AI ONE POINT.VI for multiple channels. Getting one data point for me is useless. I need, say, 100 data points from multiple channels at once. Is there a way to do that? Is there an example program I'm not seeing that already does that?
    Thanks!
    p.s. I have Labview 6.1

    Hello,
    Thank you for contacting National Instruments.
    As Dennis had mentioned, there are many example programs that ship with LabVIEW that demonstrate how to take measurements from multiple channels with either a finite or continuous amount of data to be acquired. In LabVIEW 6.1 you can find these examples by going to Help >> Find Examples >> Hardware Input and Output >> DAQ >> Analog Input >> General.
    In these examples, if you would like to sample multiple channels, you simply need to add the physical channels separated by a comma for example: 1,3,5 would sample channels one, three, and five. You can also use a colon to sample a sequence of channels for example: 4:6 would sample channels four, five, and six. This makes it easy for you to choose the chann
    els that you would like to sample without having to make any modifications to your code.
    Regards,
    Bill B.
    Applications Engineer
    National Instruments

  • Sme device multiple channel different bridge

    Hi
    I am using NI 9219
    I have input from three different channel configured in different bridge mode with internal excitation.
    I am able to acquire signal from each channel individually,
    But I am not able to acquire data from all channel from a single vi an display them in a single graph.
    Please help ASAP
    Thnx
    Ravinedr

    Hi Revinedr,
    It sounds like you are probably trying to run multiple analog input tasks at the same time. You can only run one of these tasks at a time. You can set up your task to include multiple channels with different bridge configurations, just set them up sequentially with the Create Virtual Channel VI.
    Message Edited by PBear on 06-20-2008 12:53 PM
    PBear
    NI RF
    Attachments:
    multiplechannelbridges.gif ‏5 KB

  • Select multiple channels for one task - control and shift keys don't work

    Hi,
    Following advice from several other posts, I'm trying to select multiple physical channels  from the dropdown list so that I can then use the "unflatten channel string" function later on. It looks like if I hold down either shift or cntrl I should be able to select multiple channels from the list, however, this doesn't work for me. I tried going into the "key navigations" property for the task channel control but it doesn't have any associations listed. Has anyone else come across this and found a fix?  I have previously got around this by stating multiple channels with a colon (eg. ai1:3) but this doesn't work for the unflatten function.
    Thanks, 
    Claire.
    Solved!
    Go to Solution.

    Thanks for your reply Dennis, I see what you mean, unfortunately that doesn't solve my problem so I'm missing something else. I've attached my VIs. I expected that the output from the unflattenstring block would be an array of either the channel references or the names I had given them, and that therefore the "array size" in the 4th pane would be "9" (equal to the number of channels).  Instead the output is a an "unnamed task#(some number)" when I look at it with a probe. Perhaps I'm misunderstanding how the task naming works?
    THanks, 
    Claire.
    Attachments:
    Analog SW Trigger_v3.vi ‏33 KB
    Cont Acq&Graph Voltage-Analog SW Trigger_cfjv3.vi ‏64 KB

  • How to write to one channel of a task with multiple channels? (plus other things...)

    So I have a USB-6009 DAQ.  It has 12 digital output lines.  I want one channel that is "Dev0\line0:10" which represents an address bus in my application.  And a second channel "Dev0\line11" which represents a program enable line in my application.
    I have tried creating two different tasks and adding one channel to one task and the other channel to the other task.  The only task that worked was the task with "Dev0\line0:10".  It was always the task containing that channel, regardless of the order of creation.  So then I moved on to a different method.  (I read somewhere that I should only create one task of each type.  like only 1 DO task only 1 AO task etc...  However I am also using the two analog ouputs to and have a task for each AO and they work just fine.)
    I tried add both channels to one task.  But when I needed to control only the address bus, I had to have some information for the other channel as well.  This was a little trying, but I could configure it that way.  But it turned out to be easier for me to just make one channel with all the lines and OR in the data for line11 with each write.
    I just wondered if it was possible to write to one particular channel of a task and not the other channel?  That would really be the ideal solution for me.  especially if I could write multiple samples to the one channel while I left the other channel alone.  Which brings up another complaint... Why does WriteMultiSamplePort only work if I use a DigitalMultiChannelWriter, and not if I use a DigitalSingleChannel writer even though my task only has one channel (and by the way I set up the channel as one channel for all lines)?  A perplexing issue to be sure.
    And no I can't just load all my samples into an array and write them all at once because I also have to manipulate the two analog outputs in between the various digital writes.
    I am using NI DAQmx 7.5 and C#.  I am trying to use the DAQ to program a digital switch, which has proven to be a real challenge.  In push-pull mode there is too much ringing for the switches programming port to tolerate.  But the switches interface is LVTTL, so I needed the 3.3V.  When I changed to open-collector I had to use voltage dividers to drop down to 3.3V.  But the rise time using open-collector is too slow for me the program the switch in serial mode, so I had to change to parallel.  The switch has an 11 bit multi-plexed ADDR/DATA bus.  So the DAQ I had chosen to use which had plenty of lines for the serial programming, now is strained to it's absolute limits by the parrallel interface.   ARGH.  The only output I am not currently using is the counter, and I'm going to need it if I ever want to read back from the switch.  But first I have to seperate the ADDR/DATA bus from the CS line on the DIO lines of the DAQ.  And I don't know for sure what I'm going to do about the voltage level translation when I have to go bi-directional.  Maybe I can filter out the ringing in push-pull mode?  Any thoughts on that?

    Hi Saikey,
    In most cases, you are exactly right: you can only use one task for one type of operation (i.e. only one analog input task in the same program). With the USB 6009, you can have multiple digital output tasks running at the same time. I was able to run a digital output program with two different digital output tasks configured for a USB-6009.
    However, you stated that it would be better if you had everything in a single task for your application and write data to only some of the channels. The easiest way to do this is to modify your array of output data so that only the data to that one channel is changing. So, for example, if you keep writing a 0 to the channels that do not need new data nothing will change.
    If you have to change your analog outputs during this program, you could create an event structure that would stop and restart the analog output tasks without changing the digital output data. I hope that you find this information helpful.
    Regards,
    Hal L.

  • What is the recommended way to do multiple channel, single point sampling for control with an NI PCI-6255 in RLP?

    Hello,
    I am writing a driver for the M-series NI PCI-6255 for QNX. I have downloaded the MHDDK and have all the examples working. I have also enhanced the examples to do interrupt handling (e.g. on AI_FIFO interrupt or DMA Ring Buffer interrupt). My ultimate goal is to write a driver that I can use for closed-loop control at 500 Hz using all 80 channels of the NI PCI-6255. I may also need to synchronize each scan with a NI PCIe-7841R card for which I've already written a driver. I want an interrupt-driven solution (be it programmed I/O on an interrupt or DMA that generates an interrupt) so that the CPU is available to other threads while the 80 analog inputs are being read (since it takes quite a while). I also want to minimize the number of interrupts. Basically, I will need to collect one sample from all 80 channels every 2 milliseconds.
    There are many different options available to do so, but what is the recommended technique for the NI PCI-6255 card? I tried using the AI FIFO interrupt without DMA, but it seems to interrupt as soon as any data is in the AI FIFO (i.e. not empty condition), rather than when all 80 channels are in the FIFO, so more interrupts are generated than necessary. I tried using DMA in Ring Buffer mode to collect a single sample of 80 channels and interrupting on the DMA Ring Buffer interrupt, which appears to work better except that this technique runs into problems if I cannot copy all the data out of the DMA buffer before the next AI scan begins (because the DMA will start overwriting the buffer as it is in ring buffer mode). If the DMA is not in ring buffer mode or I make the ring buffer larger than one 80-channel sample then I don't have a way to generate an interrupt when one sample has been acquired (which I need, because I'm doing control).
    I saw something in the documentation about a DMA Continue mode in which it looks like you can switch between two different buffers (by programming the Base Count/Address with a different address than the current address) automatically and thereby double-buffer the DMA but there is no real documentation or examples on this capability. However, I think it would work better than the Ring Buffer because I could interrupt on the DMA CONT flag presumably and be copying data out of one buffer while it is filling the other buffer.
    Another option would be DMA chaining, but again, I cannot find any information on these features specific to the NI DAQs.
    I tried interrupting on AI STOP figuring that I could get a single interrupt for each scan, but that doesn't appear to work as expected.
    I know that DAQmx on Windows has the ability to do such single sample, multiple channel tasks at a fixed rate so the hardware must support it.
    Any suggestions would be appreciated.
    Thanks.
    Daniel Madill

    Hello,
    The interrupt that will happen nearest the times that you need is the AI_Start_Interrupt in the Interrupt_A group. This interrupt will occur with each sample clock. By the second time this interrupt fires, the AI FIFO should have the samples from the first conversion. If it is easier to use programmed IO, you can read the samples out of the FIFO until you get all 80.
    Additionally, you can set the DMA to send samples as soon as the FIFO is no longer empty...instead of waiting for half full or full. This change will reduce latency for your control loop. You can set AI_FIFO_Mode in AI_Mode_3_Register to 0. By the second time this interrupt fires, you should be able to check how much data is in the DMA ring buffer and read the 80 samples when they are available. You can make the ring buffer larger than 80 samples if you see data getting overwritten.
    There is no interrupt associated with 80 samples being available in the FIFO or 80 samples being available/transferred by DMA to the host. X Series has much more flexibility with these interrupts.
    I hope this helps!
    Steven T.

Maybe you are looking for

  • Configuration Status of an order

    Hi All,   Does anybody have an idea where does configuration status of an order gets stored(Table) ??

  • Problem adding permanent ARP entry

    I tried to add permanent ARP entry but without success. Alway expires after 30 sec. Does anyone have idea what to do/check. >sudo arp -S 192.168.1.254 0:f:94:25:ea:41 ifscope en1 >arp -axn Neighbor                Linklayer Address Expire(O) Expire(I)

  • BAPI_MATERIAL_SAVEDATA for updating Profit center giving an error message.

    Hi All,        I have a requirement to update Profit Center in storage view of Material Master. So for updating Profit Center I used ‘BAPI_MATERIAL_SAVEDATA’. In this BAPI we will pass Material number, Plant and New Profit center. When I used this it

  • Upgrade 4.6C to ECC 6.0 - IDoc structure?

    Hi All, what has to be considered in regards to standard idocs (structure) when upgrading from 4.6 to ECC 6.0. Which IDocs are changing during upgrade and to what extent? Are all Idocs downward compatible and will work as usual after upgrade? Thanks

  • Converting iPad publication for Android

    I've developed iPad versions of digital magazines but now we want to make them available to the Android market. I know Viewer Builder will create the Android app, but in terms of screen size/aspect ratio, how does that work? With different tablets ha