A how to for a PC XO.

Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.
When you say sync problems, how are you going to sync those two boxes?

They each contain a free running quartz clock. Any two soundcards tend to be accurate to only around +/- 2 clock samples (reference floating around on the net). So that 44100Hz speed is really 44098 on one card and 44102 on the other. Roll that forward for a few seconds and see what you are left with...

Earlier in this thread we were talking about getting sample accurate crossovers and now we are trying to implement these with two devices which can each gain or loose perhaps 1-2 samples *EACH SECOND*.

Do you see the problem?

Additionally USB is not terribly deterministic, so it would be hard to send a USB command to each device to get it's current state and be *SURE* that the answer was accurate by the time it came back. Hence you could probably implement software resampling to keep the cards roughly aligned but you would be unlikely to be closer than 3-4 samples between cards
 
I currently use 2 esi Waveterminal 192X in one pc connected with the wordclock thus I do not have this problem.
I tested stream boy to extend my output from 12 channel to 18 with one 3rd card, it works, but you are right after a while there will be inevitably a problem of synchronization.
In this case, audio card should have wordclock I/O or maybe MIDI clock port

Avi
 
ewildgoose said:


Do you see the problem?

Additionally USB is not terribly deterministic, so it would be hard to send a USB command to each device to get it's current state and be *SURE* that the answer was accurate by the time it came back. Hence you could probably implement software resampling to keep the cards roughly aligned but you would be unlikely to be closer than 3-4 samples between cards

I see Ed, thanks for sharing.

Stefano
 
ewildgoose said:
When you say sync problems, how are you going to sync those two boxes?

They each contain a free running quartz clock...

Doesn't USB send out data in 1ms intervals, this frequency being derived from PC interrupt / OS? And since all USB devices connected to same host / controller share this interrupt, there will actually be no increasing time difference, as far as sending out digital data with multiple cards is concerned? There is still the problem with DA conversion of this data, but if we use some sort of asynchronous, reclocked reading (like in DDDAC Mk2), using SAME external clock for all DACs, we can actually have multichannel, synchronized USB solution? This would obviously be a DIY solution, but does this make any sense?
 
If you want to sync it, then your problem goes away!

The issues are quite straightforward:

1) You need to have all devices increasing their clock at the same speed. Note you don't have to use the same clock in each, just keeping them within a sample or so should be OK for most purposes. It's technically very hard to use a high speed shared clock signal for all devices

2) You need to *start* all devices playing at the same point. Consider that my impulse recorder app can be used to see simply if the simultaneous record and playback from *ONE* card start in sync (and often the answer is that they don't), then it's going to be highly unlikely that you will get multiple cards to start playing at exactly the same clock tick. As a result you will have each device misaligned by perhaps 10-50 samples, this is quite a lot of our intended needs and so you will have to find a way to figure out what the misalignment is and compensate for it each time you open the audio channel


Good luck
 
I have previously tried rather successfully to run BruteFIR under Linux for my M-Audio 1010LT soundcard. However, I have now installed Windows MCE as it is much less hassle.
I have been trying to buy a new Audiotrak Produgy 7.1LT, since I would like to use Console, but they are nowhere to be found. SME solutions do not sell them in the UK anymore. Can someone advice where I can buy this soundcard?

I really find the RME cards a bit too expensive.
Also, the Maya 1010 seems like a great alternative as it provides a breakout box and supports DirectWire.
 
Ninfendo said:
I have previously tried rather successfully to run BruteFIR under Linux for my M-Audio 1010LT soundcard. However, I have now installed Windows MCE as it is much less hassle.

Just for the record - I used to be a big Windows fan, but have moved largely to linux because "it is much less hassle". While it's obviously going to be down to the individual I have found that Windows does tend to let you get *started* more easily, and gives the perception therefore that you are more productive, however, once you factor in all the niggling little problems that you have to go around the houses to solve, then I personally think Linux is often *LESS* hassle...

Just my 2p, and FWIW I am writing this from a windows computer... However, the wretched thing keeps playing up and needing a reboot, so I just carry on working on the Linux desktop which is next to me and that one only gets rebooted every year or so...


I chose to use Mythtv because it was harder to get installed and working, but once that was solved it gave me much more flexibility to tweak things to the way I wanted. Novice users may obviously have a different opinion!
 
ewildgoose said:


Just for the record - I used to be a big Windows fan, but have moved largely to linux because "it is much less hassle". While it's obviously going to be down to the individual I have found that Windows does tend to let you get *started* more easily, and gives the perception therefore that you are more productive, however, once you factor in all the niggling little problems that you have to go around the houses to solve, then I personally think Linux is often *LESS* hassle...

Just my 2p, and FWIW I am writing this from a windows computer... However, the wretched thing keeps playing up and needing a reboot, so I just carry on working on the Linux desktop which is next to me and that one only gets rebooted every year or so...


I chose to use Mythtv because it was harder to get installed and working, but once that was solved it gave me much more flexibility to tweak things to the way I wanted. Novice users may obviously have a different opinion!

I do not disagree! The installation under Linux took a lot of time but once finished it ran wonderfully. The main reason for moving to Wondows is because I am buying an XBox360 which I will use as a media extender. With MythTV I would have had to get another PC running the MythTV client app.
 
Ninfendo said:


I do not disagree! The installation under Linux took a lot of time but once finished it ran wonderfully. The main reason for moving to Wondows is because I am buying an XBox360 which I will use as a media extender. With MythTV I would have had to get another PC running the MythTV client app.

It used to be possible to use the orig XBox as a Mythtv media extender. Presumably MS have seen the opportunities available and released the new XBox with a more open firmware that makes it easier for third parties to integrate support for their products....?

...If the answer is no, then perhaps you shouldn't buy an XBox and instead wait for the PS3 which comes with Linux support...

...vote with your feet (or pockets..)

Ed W
 
ewildgoose said:


It used to be possible to use the orig XBox as a Mythtv media extender. Presumably MS have seen the opportunities available and released the new XBox with a more open firmware that makes it easier for third parties to integrate support for their products....?

...If the answer is no, then perhaps you shouldn't buy an XBox and instead wait for the PS3 which comes with Linux support...

...vote with your feet (or pockets..)

Ed W

Indeed, it is possible to install Linux on the old XBox. The problem I have with Linux is that it takes so long to do things, the whole hacky aspects is really off putting. Just installing my Netgear wireless card took me a whole weekend. I don't want to spend days installing new stuff, so this is probably the main reason why I have gone for Windows.

Ed! can you give me some advice of where I can find an alternative to MAXO? If nothing else exists I could probably write a filter generation program myself. Where can I learn about PCM files?
 
Hi Ninfendo,

I'm using octave for filter generation. Octave can be used under windows installing cygwin.

Although I've not implemented arbitrary curve equalization, it could be possible to do a spline interpolation from a file in .frd format and generate the impulse response.

My scripts takes a measured impulse response from a driver, applies a minimum-phase correction equalization on a smoothed version of the magnitude response and then a high-slope crossover.

I've used bits of code from others, you can find some code in the DRC wiki site, and the octave scripts that comes with DRC.

In particular, managing PCM files in octave is taken from the loadpcm scripts in the DRC distribution. Thay are pretty simple, headerless row of 32 bits floating point values.

If you are interested in this approach I can attach the code. Anyhow, I plan to upload my files to the DRC wiki when everything gets matured.

Cheers,

Roberto
 
Roberto, would you please care to upload your scripts to http://www.duffroomcorrection.com and perhaps write a little about how they work? I had intended to write more about filter generation for a while - there is a partial article quoting some code to generate some other filters there already

The short answer to some of the prev questions:

- PCM files are basically just dumping out the contents of the data in raw float or int format. There is no header or descriptive info in the file so you need to remember what you did. Most common is to dump out float values which scale in range from 0..1, however, it really depends on the program

Generating a filter is theoretically quite easy. FFT is the name of the process which takes an impulse response and extracts it's freq response. So in fact what you do is draw out the freq response that you *want*, then do an inverse FFT and lo and behold you have an impulse response of the desired filter. Expect to spend 1-2 weeks getting your head around the details of this, but at that point onwards you will then be an expert and totally free to looking for little tools to help you...

Hope that gets you started? Roberto, please share and document your work, it sounds very useful

Good luck
 
ewildgoose said:
- PCM files are basically just dumping out the contents of the data in raw float or int format. There is no header or descriptive info in the file so you need to remember what you did. Most common is to dump out float values which scale in range from 0..1, however, it really depends on the program

Generating a filter is theoretically quite easy. FFT is the name of the process which takes an impulse response and extracts it's freq response. So in fact what you do is draw out the freq response that you *want*, then do an inverse FFT and lo and behold you have an impulse response of the desired filter. Expect to spend 1-2 weeks getting your head around the details of this, but at that point onwards you will then be an expert and totally free to looking for little tools to help you...

Hope that gets you started?

So the scripts Octave scripts just generates series of numbers in ASCII, how come the files generated by MAXO contain machine code? What's the difference between The Octave/Matlab output and MAXO?
 
PCM is the binary code. It's literally machine order binary dumps of the variables

Some programs spit the results out in ascii. This is not particularly advantageous unless your convolver reads in ascii only, or you need the results portable across machine architectures

Basically read in the PCM file 4 bytes at a time (usually) and stick those 4 bytes into a float datatype and view the result. This is how you parse a PCM file
 
Originally posted by ewildgoose Roberto, please share and document your work, it sounds very useful[/B]

Hi, I certainly will, and publish it in the wiki. I've found too much help there and I'd like to contribute as much as possible.

Just give me some time to document the scripts, as inline comments to user input are written in spanish, and it would be better to translate them.

Just a picture of what it does. The low end of the woofer would be better corrected against a user defined target function. Now it only makes a transition window to no correction, in order to avoid woofer overload.

Note the steep crossover at 4000 hz. It's a blackman windowed sinc, 16k samples long at 44100 Fs.
 

Attachments

  • woofer_24ppo.png
    woofer_24ppo.png
    8.7 KB · Views: 620
Using an X-Fi is possible.

It is indeed possible to use a Creative Soundblaster x-fi for PC XO's. I recently bought one for my main pc due mainly to the fact that I do a lot of gaming on the computer and it is hard to beat Creative's power for EAX and gaming.

In looking through the documentation I did find a workaround that enables you to use the X-Fi as a routable card for XOs. I wanted to play around with PC X0's to see if it was worth the time and expenditure in setting up another system for this dedicated task.

Anyway here goes for anyone wanting to use the X-Fi to test out this type of audio processing. Note: Maximum output channels will be limited to 6 with this workaround. I still feel there is a better way, and a possible way to utilize all 8 channels but it will take a little more "hacking". This is only good for 2 channel input so far. No multi-channel input.... yet.

First off I used a plugin console called energyXT (http://www.xt-hq.com/) in place of Console that everyone on here seems to use. I had downloaded a trial of Console before with my old sound card and the trial has since expired so I found energyXT as a replacement. There is a demo available on it, it seems rather easy to work with as well. The limitation of the demo is you can save your setups but will be unable to load them back until the demo is unlocked.

First thing you need to do is make sure the mode on the Creative mode switcher is in the "Audio Creation" Mode. Switching to different modes also changes the way ASIO works with the X-Fi. You will not have all of your inputs and outputs available in energyXT unless your mode is selected correctly.

Make sure your speaker selection is set to 7.1 speakers or you will not have all of the options needed to make this work. It does not matter what actual speaker config you are using as this will be sorted out in energyXT.

Open up the Audio Creation Mode Console and choose the Multi-Channel Wave Tab. Under the main Wave tab select the routing of the output to Side L/R. Make sure none of the other output tabs are selected.

Under the "Recorder" Box, from the drop down menu select "What U Hear". ASIO tab should be fine with everything left at it's default position.

Now on to energyXT:

I setup energyXT to use inputs 9 and 10 which are Mix RC or SL and Mix RC or SR. Outputs are as shown.

An externally hosted image should be here but it was not working when we last tested it.


Now from this point you should be able to route the signal through your plugins to the user specified outputs through energyXT.

Hope this helps anyone trying to test out a PCXO on a soundblaster X-Fi.

Ethan
 
There is still the problem with DA conversion of this data, but if we use some sort of asynchronous, reclocked reading (like in DDDAC Mk2), using SAME external clock for all DACs, we can actually have multichannel, synchronized USB solution? This would obviously be a DIY solution, but does this make any sense?

That's what I always wondered - it doesn't seem that hard to do, I mean, RAID hard drives do it! Buffering there is a little easier but they are moving a lot more data.

and I actually have written drivers before.

Still, if there's an innexpensive sound card that does external clocks I'd prefer that, it's just easier.

I need 14 or 15 channels - full 7.1 Theater. I guess if I just did the mains I coudl get by with 8 (fronts and center) in a 5.1 setup. That's still more than a 7.1 sound card.

So what's the cheapest sound card(s) I could get to do that?
 
Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.