|
|||||||
![]() |
|
|
Thread Tools |
|
|
#1 |
|
HardwareHeaven Senior Member
Join Date: Jan 2004
Location: St. Cloud, MN
Posts: 492
Rep Power: 0 ![]() |
Room EQ effect
I want to look into making some sort of Room EQ effect, basically you can calculate out resonances of a room by measuring the distance between two paralell walls, multiplying that by two, and then dividing the speed of sound by your result. this gives you a resonant frequency of a pair of walls (you have three decibles of gain at this frequency, assuming there are only two walls with this distance apart). I think it would be nice for people to enter the distance between two walls and have a plugin calculate out what the resonances are (and subtract them from the output signal) sound like a good idea? also, i would need the 3538 sdk if it is available to do this
__________________
COMP: Dual Intel PIII 733 Mhz; GeForce 4 Ti 4600; 1.128 Gb RAM; SB0350 (Audigy 2 ZS Platnium) STEREO(I UPGRADED):Crown Audio K1 and K2 amplifiers (4000 watts at .1% THD ), JL 13w7 Subwoofer (6.5 CF) (2) 18" PR's, Klipsch SB-1's, some cement blocks for speaker stands...
|
|
|
|
|
|
#2 |
|
kX user
Join Date: Apr 2004
Posts: 851
Rep Power: 0 ![]() |
Yes, this is easily achievable (the calculation itself), but do you have an algorithm for the dsp implementation of the effect?
__________________
Miss you, Steve... |
|
|
|
|
|
|
|
HardwareHeaven Senior Member
Join Date: Jan 2004
Location: St. Cloud, MN
Posts: 492
Rep Power: 0 ![]() |
no, otherwise i would have posted the finished plugin
its basically a peaking EQ filter, I am not sure how I could calculate the "width" of the plugin based on room characteristsics though... any ideas?
__________________
COMP: Dual Intel PIII 733 Mhz; GeForce 4 Ti 4600; 1.128 Gb RAM; SB0350 (Audigy 2 ZS Platnium) STEREO(I UPGRADED):Crown Audio K1 and K2 amplifiers (4000 watts at .1% THD ), JL 13w7 Subwoofer (6.5 CF) (2) 18" PR's, Klipsch SB-1's, some cement blocks for speaker stands...
|
|
|
|
|
|
#4 |
|
kX user
Join Date: Apr 2004
Posts: 851
Rep Power: 0 ![]() |
Ok, you can use the biquadratic df1 peaking eq supplied with kX. You have the formula for calculating the frequency, there should be one for the width (most probably in octaves, not in q), but if not I think that it should be pretty narrow, since you don't want to suppress a whole bunch of frequencies, which will inevitably affect the sound badly, rather just a narrow band to remove the negative resonance artifacts of the sound.
__________________
Miss you, Steve... |
|
|
|
|
|
#5 |
|
DriverHeaven Newbie
Join Date: Oct 2005
Posts: 2
Rep Power: 0 ![]() |
linkage between kX driver and Room EQ Wizard
I've been talking with the Room EQ Wizard developer and he is very interested in creating a linkage between the kX Driver and his RoomEQWizard.
http://homepage.ntlworld.com/john.mulcahy/roomeq/ The idea is that RoomEQwiz would do a sweep and then adjust filter settings in kX so that the room effects were compensated (remove peaks/nulls in the amplitude response and correct timing errors) What I know so far: 1. kX includes both an equalizer and a parametric filter (peak and notch). Based on igor_levicki's comment in thread 71062, it sounds like the parametric filters would be better for this application than the equilizer. Note that many would be need per channel, so for a 5.1 setup dozens would be utilized. 2. for room equalization, both magnitude (amplitude) and phase (time) corrections are needed. Amplitude corrections just involve adding frequency filters across the band (as in#1). RoomEQwiz calculates these filter parameters already, although we'd have to add kX's filter functions to RoomEQwiz so that the precise functions would agree. 3. to get good tweeter alignment, phase (time) alignment is required and so a delay module is needed in kX. According to thread 26281, a delay is fairly simple and it seems to have appeared and then disappeared in later releases. Since the speed of sound is around 1131 feet/second (at 72 degrees), this means that 1 foot = 0.9 milliseconds. So the resolution of the delay would probably need to be of this order (this is a guess on my part, see #C below) 4. RoomEQwiz would like to *drive* kX. The idea being that RoomEQwiz would do a sweep, calculate the parameters, update the kX filter parameters, then resweep to check the results. RoomEQwiz currently uses JavaSound to communicate with driver parameters. Is that the way to go with kX? Or perhaps an API call? What is needed: A. people to load RoomEQwiz, and use the soundcard debug option in the soundcard menu to see what controls are currently exposed. Then post those results here for a couple of different cards (and the kX version number). B. I assume that the parametric equalizer in #1 is Max's ufx parametric eq. Is there a limit on the number of them that can be utilized? C. acoustically, what delay resolution is required for high frequency tweeter alignment. Is 1 foot (0.9 ms) good enough? The half wavelength at 20 kHz for destructive interference is 0.028 feet, but people's heads bobble around more than that. So shooting for 0.028 foot resolution (0.025ms) may be overkill. Is measuring the distance with a tape measure from the speaker(s) to the primary listening position sufficient? Or should RoomEQwiz use an impulse from the speaker to time the distance? D. which kX module contains the interfacing routines (if any) ? E. where are the parametric eq filter functions? F. lots of advice I would do #A myself, but I recently upgraded (laugh) from an Audigy2 to an Audigy4 and am waiting on kX's A4 implementation. I'm a pretty good Windows and C++ programmer and so I should be able to #D. Thanks, Scott Last edited by 645824; Oct 22, 2005 at 02:19 AM. |
|
|
|
|
|
#6 |
|
S-3D enthusiast
|
645824, I'll try to answer you as best as I can.
1. If your are talking about Max's ufx parametric eq, it's not available in the driver version 3538. 2. I think that all the code for the EQ available in kX are in the SDK. 3. A delay filter is easy to do. The smallest delay using iTram is 2 samples (I noticed problems if I use a delay of 1 with iTram) and one sample if using registers. Two samples is plenty. 2 samples = .041 ms at 340 m/s it's 14 mm or 0.551 inches 4. Plugin parameters can be automated using midi. What parameter can be automated is decided in the c++ code of the plugin. I have no idea how you use kX automation. I have no personnal experience with it. Better ask Lemury or others kX users. That is probably the best way for something external to change plugins parameters. A. I'll test it and post the results below. B. If this is what you use, that will make this application unusable for many persons like me who can't load it. The plugin has to be rewritten for the new version of the driver and it may never happen. C. 0.041 ms (2 samples) is the best you can do using iTram. You can calculate the delay using the speed of sound and the distance. You can calculate the speed of sound using temperature as a parameter available to the user. I have done this in the plugin called TimeBalanceV2 found here in the forums. Measuring tape is not perfect but it gives better results than no delay at all. D. I have no idea. If looking at midi automation, some users here have experience with it and I know that Lemury has programming experience with it. He may be able to give you some valuable information. E. This plugin is not part of the 3538 SDK. I have no idea if it's in the prior versions of the plugins. You should ask the author of the code if he wants to share his code or if he plans to develop a 3538 version. |
|
|
|
|
|
#7 |
|
S-3D enthusiast
|
I have a soundblaster live model detected as CT4832.
I also have a sounblaster pci 128 in the computer but that's not compatible with the kX drivers. soundcard_debug.txt : http://pages.globetrotter.net/samaus...card_debug.txt It was too big to post in the forum in a single post. |
|
|
|
|
|
#8 |
|
DriverHeaven Newbie
Join Date: Oct 2005
Posts: 2
Rep Power: 0 ![]() |
Thanks Tril for the comprehensive reply and also for the debug.txtfile. So I will start looking into the kX DSK to see whatmechanisms are available.
|
|
|
|
![]() |
| Thread Tools | |
|
|