AVX based FIR VST, crossover / EQ / DRC and delay

Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.
Your route is doubtlessly the most elegant one but requires very deep knowledge of several technologies. IMO the most simple and least expensive way is to use any 7.1 card based on Envy24 (Revolution 7.1, Prodigy7.1, etc.) and tap the I2S lines of ICE1724. Multiple clock crystals, clock logic, PCI logic, drivers for all major OSes, datasheet, all is there ready to use and the price on ebay is negligible.
That's what I am doing at the moment.
Envy24HT I2S from the resistors next to the chip to AK4396 Dac board.
My other boards will arrive next week I hope. Then I will evaluate
the sound to my QA550 SD player. If this solution holds up, then three AK4396 boards will be connected.
I also got LVDS chips from TI to evaluate differecial I2S over a longer distance.
I will report back when I am done.

Klaus
 
KOON3876, nice work....this looks awesome!

How does this setup handle sample rate changes? I.e., going from 16/44.1 material to 24/192 material (.flac files) in Foobar?
-Jim

Hi Jim
Now I'm converting my own SACD to ISO format.
By foo_input_sacd, I can play it with 88.2 on sub small speaker.
So I need sample rate changes to be implemented. Now I'm testing.
Also I added one more parameter bar, to change TAPS 1024/2048/4096/8192.
After some test I will post new version.
:eek: maybe I can not use 8192TAPS/192/4Way until 2015.
 
Mi Mike
I modified value-to-Freq routine,
more accurate. Please note that Filter curve = about 20dB/20Hz.

if (ret < 75.0f) return 70;
if (ret < 85.0f) return 80;
if (ret < 95.0f) return 90;
if (ret < 105.0f) return 100;
if (ret < 115.0f) return 110;
if (ret < 125.0f) return 120;
if (ret < 135.0f) return 130;
if (ret < 145.0f) return 140;
if (ret < 155.0f) return 150;
if (ret < 165.0f) return 160;
if (ret < 175.0f) return 170;
if (ret < 185.0f) return 180;
if (ret < 195.0f) return 190;
if (ret < 205.0f) return 200;
if (ret < 215.0f) return 210;
if (ret < 225.0f) return 220;
if (ret < 235.0f) return 230;
if (ret < 250.0f) return 240;
if (ret < 270.0f) return 260;
if (ret < 290.0f) return 280;
if (ret < 310.0f) return 300;
if (ret < 330.0f) return 320;
if (ret < 350.0f) return 340;
if (ret < 370.0f) return 360;
 

Attachments

  • VST_SSEFIR.cpp.txt
    15.6 KB · Views: 46
  • VST_SSEFIR.zip
    10.7 KB · Views: 46
Hi Koon
I found and example , does this parts of VST_SSEFIR.cpp latest version and previous are comments ?

Latest :
//debug
//FILE * f;
//_wfopen_s(&f, L"C:\\VST\\FreqGain.txt", L"w");
//for (int i = 0 ; i < DEFTAPS/2; i++)
//{
// fprintf(f, "i %d freq %7.2lf Gain %3.5lf\n", i, (float)(SampleFreq * (i + 1)/DEFTAPS), Gain);
//}
//fclose(f);

Previous :
//debug
FILE * f;
_wfopen_s(&f, L"C:\\VST\\FreqGain.txt", L"w");
for (int i = 0 ; i < DEFTAPS/2; i++)
{
fprintf(f, "i %d freq %7.2lf Gain %3.5lf\n", i, (float)(SampleFreq * (i + 1)/DEFTAPS), Gain);
}
fclose(f);
 
Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.