Jump to content

Kx audio driver mod [Sound blaster live!, audigy 1/2/4/RX emu edsp]


ITzTravelInTime
 Share

591 posts in this topic

Recommended Posts

4 hours ago, zixiang5288 said:

if you like i can create my own branch in my own profile and then commit changes to it, i do not want to touch the original driver's repository

Link to comment
Share on other sites

Hi ITzTravelInTime.

I am new to hackintosh world. I have a Sound Blaster Audigy SE SB0570. I tried your driver and it is not working, as expected.

I would like to help you in some way, I am a developer. Please fell free to ask me for tests or anything.

Thanks for your effort! 

  • Like 2
Link to comment
Share on other sites

28 minutes ago, jubarim said:

Hi ITzTravelInTime.

I am new to hackintosh world. I have a Sound Blaster Audigy SE SB0570. I tried your driver and it is not working, as expected.

I would like to help you in some way, I am a developer. Please fell free to ask me for tests or anything.

Thanks for your effort! 

the sb0570 is the audigy se which is not compatible with this driver, you have to own sound cards based on the 10k1 or 10k2 or similar chipsets to work with this driver, yours uses a totally different architecture, but if you want to test it, compatible sound cards like sopund blaster live are cheap to get and compatible, for pcie you can use the sound blaster audigy rx

  • Like 2
Link to comment
Share on other sites

regurding driver source code, i have seen that new commits of the original kx audio driover have been made, but nothig that will change the mac os side, the only this is a minor change in a buffer size, that i have applied to mine branch, and also from testing i have seen tat the driver boots up and seems to work with the 44.1 khz sample rate, so now i have only to figure out how to change the sample rate from the driver side, maybe i can make as a default  frequency 44,1 khz, you can try this with the latest source of the driver, just go into audio engine file and change the value of the sampling_rate variable in the init function, note that the value is in hz and not khz, so 44,1 is 44100

  • Like 1
Link to comment
Share on other sites

3 hours ago, ITzTravelInTime said:

the sb0570 is the audigy se which is not compatible with this driver, you have to own sound cards based on the 10k1 or 10k2 or similar chipsets to work with this driver, yours uses a totally different architecture, but if you want to test it, compatible sound cards like sopund blaster live are cheap to get and compatible, for pcie you can use the sound blaster audigy rx

Oh I see. Well, thanks for the reply. I have a P8Z77-V PRO motherboard and the Realtek onboard is not working, so I bought a cheap sb0570. But I will try to change for a compatible one, like the pcie SB Audigy Rx.

 

  • Like 1
Link to comment
Share on other sites

for the sample rate stuff i can make the driver to work at 44.1 khz as default frequency but i am figuring out how to change sample rate whithout rebooting, as i have seen in the perform format change event i have to change the buffer of my audio stream or to rebuild it to work at a different frequency

  • Like 1
Link to comment
Share on other sites

ok, i have been trying for 2 days to implement the frequency switching, but at the end nothing worked, so now i can release a version of the kx audio driver with 44,1 khz as default frequency and then if you want to use a different one, you need use a boot arg and also rebooting.

To mod the driver, do you know someone who can help me? like one of the famous hackintosh developers for audio or someone from the kx audio driver project?

i will try to contact some of the developers of the kx audio dirver and i will also try to commit my audigy rx improved compatibility for the original driver, because it lacks support for all the i/o of the audigy rx, which can be added using a very simle mod to the existing code

  • Like 1
Link to comment
Share on other sites

Hi ITzTravelInTime!

One more question for you: if one board name is on the big switch

switch(subsys)

is it enough for the card to work?

I found some cheap "Sound Blaster Audigy 2 Z5 - Sb0350" for here and they are in the switch case.

Thanks!

 

 

Link to comment
Share on other sites

8 hours ago, jubarim said:

Hi ITzTravelInTime!

One more question for you: if one board name is on the big switch


switch(subsys)

is it enough for the card to work?

I found some cheap "Sound Blaster Audigy 2 Z5 - Sb0350" for here and they are in the switch case.

Thanks!

 

 

the drivers uses exactly a switch for that, but i have used a more complex naming system for the sound cards, becuase it can be from 2 different brands, and instead of rewriting sound blaster i used an enum and the object of the struct which represents the soiund cards has a property which tells if it's a sound blaster or an e-mu or an unknown card, and then which model is it, but you sound blaster audigy 2 zs will work with the driver, i have one and works great!

  • Thanks 1
Link to comment
Share on other sites

here is also some code to show you how the model detect system works

    int ret=0;
    lack_ac97=0;
    have_ac97=0; // autodetect
    
    if(device==0x00041102) // 10k2
        is_10k2=1;
    
    if(device==0x00041102 && chiprev==4)  // a2
        is_a2=1;
    
    if(device==0x00081102) // a2value, ... with p17v
    {
        is_10k2=1;
        is_a2=1;
        is_k8=1;
        
        // this is assumed:
        // if((subsys&0xf0000000)==0x10000000) // any ca0108
        // is_k8=1;
        
        if((subsys&0xf0000000)==0x20000000) // any zsnb
            is_cardbus=1;
        
        if((subsys&0xf0000000)==0x40000000) // any e-dsp v2
            is_edsp=1;
        
        if((subsys&0xff000000)==0x42000000) // any e-dsp v2 cardbus
            is_cardbus=1;
    }
    
    if(is_edsp)
        lack_ac97=1;
    
    if(is_10k2)
        is_51=1; // assume 10k2 is always at least '5.1'
    
    busName=CardBus(0);
    
    busName=PCI;
    
    Products productName = SoundBlaster;
    
    switch(subsys)
    {
        case 0x40011102:
            productName = EMU;
            if(is_10k2==0) // [1]
            {
                strncpy(tmp_str,"EMUAPS",KX_MAX_STRING);
                is_aps=1;
                lack_ac97=1;
            }
            else
            {
                strncpy(tmp_str,"EM8810",KX_MAX_STRING); // [110] - 1010 v1
                is_edsp=1;
                lack_ac97=1;
            }
            break;
            
        case 0x00201102: // [2]
            strncpy(tmp_str,"live! CT4670",KX_MAX_STRING); // live! value
            break;
        case 0x00211102: // [3]
            strncpy(tmp_str,"live! CT4620",KX_MAX_STRING); // live! standard
            break;
        case 0x80221102: // [4]
            strncpy(tmp_str,"live! CT4780",KX_MAX_STRING); // value digital
            break;
        case 0x80231102: // [5]
            strncpy(tmp_str,"PCI 512 CT4790",KX_MAX_STRING); // 512
            break;
        case 0x80251102: // sb0040 ? too // [6]
            strncpy(tmp_str,"live! CT1140",KX_MAX_STRING); // MB
            break;
        case 0x80261102: // [7]
            strncpy(tmp_str,"live! CT4830",KX_MAX_STRING); // value digital
            break;
        case 0x80271102: // [8]
            strncpy(tmp_str,"live! CT483X",KX_MAX_STRING); // value digital
            break;
        case 0x80281102: // [9]
            strncpy(tmp_str,"live! CT4870",KX_MAX_STRING); // value
            break;
        case 0x80291102: // [10]
            strncpy(tmp_str,"live! CT4872",KX_MAX_STRING); // value
            break;
        case 0x802a1102: // [11]
            strncpy(tmp_str,"live! CT4890",KX_MAX_STRING); // k256
            break;
        case 0x802b1102: // [12]
            strncpy(tmp_str,"PCI 256 CT4891",KX_MAX_STRING); // 256
            break;
        case 0x002F1102: // M002/M003 // [13]
            strncpy(tmp_str,"live! CTM002",KX_MAX_STRING); // MB
            break;
        case 0x80311102: // [14]
            strncpy(tmp_str,"live! CT4831",KX_MAX_STRING); // value
            break;
        case 0x80321102: // [15]
            strncpy(tmp_str,"live! CT4871",KX_MAX_STRING); // value
            break;
        case 0x80331102: // [16]
            strncpy(tmp_str,"live! CT4893",KX_MAX_STRING); // k256
            break;
        case 0x80351102: // [17]
            strncpy(tmp_str,"live! CT0060",KX_MAX_STRING);
            is_51=1;
            has_surdac=1;
            break;
        case 0x80401102: // [18]
            strncpy(tmp_str,"live! CT4760",KX_MAX_STRING); // live digital entertainment/platinum
            break;
            
        case 0x80501102: // [19]
            strncpy(tmp_str,"live! CT4750",KX_MAX_STRING); // was 4820?! k512
            break;
        case 0x80511102: // [20]
            strncpy(tmp_str,"live! CT4850",KX_MAX_STRING);
            break;
            
        case 0x80611102: // [21]
            strncpy(tmp_str,"live! 5.1 SB0060",KX_MAX_STRING);  // live 5.1
            is_51=1;
            has_surdac=1;
            break;
        case 0x80621102: // [22]
            strncpy(tmp_str,"live! 5.1 SB0100",KX_MAX_STRING);  // live 5.1
            is_51=1;
            has_surdac=1;
            break;
        case 0x80631102: // [23]
            productName = Generic;
            strncpy(tmp_str,"DXW MB",KX_MAX_STRING);
            break;
        case 0x80641102: // [24]
            strncpy(tmp_str,"live! 5.1 SB0102",KX_MAX_STRING);  // live 5.1
            is_51=1;
            has_surdac=1;
            break;
        case 0x80651102: // [25]
            strncpy(tmp_str,"live! 5.1 Digital SB022X",KX_MAX_STRING);
            is_51=1;
            has_surdac=1;
            break;
        case 0x80661102: // [33]
            strncpy(tmp_str,"live! 5.1 SB0228",KX_MAX_STRING); // Russ's
            is_51=1;
            has_surdac=1;
            break;
        case 0x100a1102:
            if(!is_10k2)
            {
                if(chiprev==0xa)
                    strncpy(tmp_str,"live! 5.1 SB0229",KX_MAX_STRING); // [34] - LS
                else
                    strncpy(tmp_str,"live! 5.1 SB022b",KX_MAX_STRING); // [33]
                
                is_51=1;
                has_surdac=1;
            }
            else
            {
                strncpy(tmp_str,"Audigy 2 SB0246",KX_MAX_STRING); // Audigy2 gateway oem [88]
            }
            break;
        case 0x80671102: // [32]
            strncpy(tmp_str,"ive! 5.1 Digital SB0220",KX_MAX_STRING);
            is_51=1;
            has_surdac=1;
            break;
        case 0x80681102: // [26]
            strncpy(tmp_str,"live! 5.1 CT0061",KX_MAX_STRING);
            is_51=1;
            has_surdac=1;
            break;
        case 0x80691102: // [27]
            strncpy(tmp_str,"live! 5.1 SB0101",KX_MAX_STRING); // value
            is_51=1;
            has_surdac=1;
            break;
        case 0x806a1102: // [28]
            strncpy(tmp_str,"live! 5.1 SB0103",KX_MAX_STRING);
            is_51=1;
            has_surdac=1;
            break;
        case 0x806b1102: // [29]
            strncpy(tmp_str,"live! 5.1 SB0105",KX_MAX_STRING);
            is_51=1;
            has_surdac=1;
            break;
        case 0x806C1102: // [30]
            strncpy(tmp_str,"live! 5.1 Digital SB0221",KX_MAX_STRING);
            is_51=1;
            has_surdac=1;
            break;
        case 0x80711102: // [31]
            strncpy(tmp_str,"PCI 512 SB0150",KX_MAX_STRING); // PCI512
            is_51=1;
            has_surdac=1;
            break;
            
        case 0x00401102: // ?.. dead audigy [50]
            strncpy(tmp_str,"Audigy SB0090",KX_MAX_STRING); // audigy
            break;
        case 0x00411102:
            strncpy(tmp_str,"CT4820",KX_MAX_STRING); // [51]
            break;
        case 0x00421102:
            strncpy(tmp_str,"CT0070",KX_MAX_STRING); // [52]
            break;
        case 0x00431102:
            strncpy(tmp_str,"CT007X",KX_MAX_STRING); // ct0073? // [53]
            break;
        case 0x00511102: // [54]
            strncpy(tmp_str,"Audigy SB0090",KX_MAX_STRING); // audigy with golden connectors
            break;
        case 0x00521102: // [55]
            strncpy(tmp_str,"Audigy SB016X",KX_MAX_STRING); // audigy: plastic + gameport (no 1394)
            // unknown: sb0162 -- audigy w/midi jack + plastic jacks
            break;
        case 0x00531102: // [56]
            strncpy(tmp_str,"Audigy SB0092",KX_MAX_STRING); // audigy OEM / Player SB0092
            break;
        case 0x00541102: // [57]
            strncpy(tmp_str,"Audigy SB0161",KX_MAX_STRING); // audigy
            break;
        case 0x00551102: // [58]
            strncpy(tmp_str,"Audigy SB0192",KX_MAX_STRING); // audigy
            break;
        case 0x00561102: // [59]
            strncpy(tmp_str,"Audigy SB0191",KX_MAX_STRING); // audigy
            break;
        case 0x00571102: // [60]
            strncpy(tmp_str,"Audigy (OEM) SB0091",KX_MAX_STRING); // audigy
            break;
        case 0x00581102: // [61]
            strncpy(tmp_str,"Audigy (OEM) SB0095",KX_MAX_STRING); // audigy
            break;
        case 0x00591102: // [62]
            strncpy(tmp_str,"Audigy SB0230",KX_MAX_STRING); // audigy
            break;
        case 0x005A1102: // [63]
            strncpy(tmp_str,"Audigy SB0231",KX_MAX_STRING); // audigy
            break;
        case 0x005B1102: // [64]
            strncpy(tmp_str,"Audigy SB0232",KX_MAX_STRING); // audigy
            break;
        case 0x005C1102: // [65]
            strncpy(tmp_str,"Audigy SB0238",KX_MAX_STRING); // audigy
            break;
            
        case 0x10021102: // [80]
            strncpy(tmp_str,"Audigy 2 SB0240",KX_MAX_STRING); // Audigy2
            break;
        case 0x10031102: // [81]
            strncpy(tmp_str,"Audigy 2 SB0243",KX_MAX_STRING); // Audigy2
            break;
        case 0x10041102: // [82]
            strncpy(tmp_str,"Audigy 2 SB0242",KX_MAX_STRING); // Audigy2
            break;
        case 0x10051102: // [83]
            strncpy(tmp_str,"Audigy 2 Platinum EX SB0280",KX_MAX_STRING); // Audigy2 Platinum Ex; sb244, sb250, sb290
            is_a2ex=1;
            lack_ac97=1;
            break;
        case 0x10061102: // [86]
            strncpy(tmp_str,"Audigy 2 (OEM) SB0245",KX_MAX_STRING); // audigy2 gateway oem
            break;
        case 0x10071102: // [84]
            strncpy(tmp_str,"Audigy 2 (OEM) SB0244",KX_MAX_STRING); // audigy2 oem [riva's]
            break;
        case 0x10081102: // [85]
            strncpy(tmp_str,"Audigy 2 Platinum EX SB0320",KX_MAX_STRING); // Audigy2 Platinum Ex (with ac97 codec!) + sb290
            is_a2ex=1;
            break;
        case 0x10091102: // [87]
            strncpy(tmp_str,"Audigy 2 SB0249",KX_MAX_STRING); // Audigy2 unk
            break;
            
        case 0x20011102: // [101]
            if(is_k8)
            {
                strncpy(tmp_str,"Audigy 2 ZS Mobile SB0530",KX_MAX_STRING); // audigy2 ZS Notebook
                is_zsnb=1;
                is_cardbus=1;
                lack_ac97=1;
                busName=CardBus(3);
                busName=NoteBook;
            }
            else // [90]
            {
                strncpy(tmp_str,"Audigy 2 ZS Platium Pro SB0360",KX_MAX_STRING); // audigy2 ZS Platinum Pro + sb290
                is_a2ex=1;
            }
            break;
        case 0x20211102: // [105]
            if(is_k8)
            {
                strncpy(tmp_str,"Audigy 2 ZS Mobile SB2021",KX_MAX_STRING); // audigy2 zs notebook [?]
                is_zsnb=1;
                is_cardbus=1;
                lack_ac97=1;
                busName=CardBus(3);
                busName=NoteBook;
            }
            break;
        case 0x20021102: // [91]
            strncpy(tmp_str,"Audigy 2 ZS SB0350",KX_MAX_STRING); // audigy2 ZS retail + sb250
            break;
        case 0x20031102: // [92]
            strncpy(tmp_str,"Audigy 2 ZS SB0352",KX_MAX_STRING); // audigy2 ZS ?
            break;
        case 0x20041102: // [95]
            strncpy(tmp_str,"Audigy 2 ZS SB035X",KX_MAX_STRING); // Audigy2 zs sb0350/sb0355 / Gateway OEM
            break;
        case 0x20051102: // [96]
            strncpy(tmp_str,"Audigy 2 ZS SB035X",KX_MAX_STRING); // Audigy2 zs SB0350/359
            break;
        case 0x20061102: // [94]
            strncpy(tmp_str,"Audigy 2 ZS SB035X",KX_MAX_STRING);
            break;
        case 0x20071102: // [93]
            strncpy(tmp_str,"Audigy 4 PRO SB0380",KX_MAX_STRING); // audigy4 PRO
            break;
            
        case 0x10001102: // [103]
            strncpy(tmp_str,"Audigy 2 SB1000",KX_MAX_STRING); // audigy2 value [?]
            break;
        case 0x10011102: // [100]
            strncpy(tmp_str,"Audigy 2 SB0400",KX_MAX_STRING); // audigy2 value
            // has ac97 codec
            break;
        case 0x10211102: // [102]
        {
            strncpy(tmp_str,"Audigy 4 SB0610",KX_MAX_STRING);
            is_a4=1;
            is_10k3 = 1;
            // has ac97
        }
            break;
            
            //FIXME find subsys id for audigy 4 and put them here
            /*
        case 0x10201102:
        {
            strncpy(tmp_str,"Sound Blaster Audigy 4 SB0660 10k2 CA10300",KX_MAX_STRING);
            is_a4=1;
        }*/
            
        case 0x10221102: // [104]
            strncpy(tmp_str,"Audigy 2 SB1022",KX_MAX_STRING); // Audigy2 value ?
            break;
        case 0x10241102:
            strncpy(tmp_str,"Audigy RX SB1550",KX_MAX_STRING); // audigy rx experimental
            // has ac97 codec
            is_10k3 = 1;
            is_10k2 = 1;
            is_a4=1;
            busName=CardBus(1);
            busName=PCIExpress;
            //ret=-1;
            break;
        case 0x11011102: // [106]
            strncpy(tmp_str,"Audigy SA SB1101",KX_MAX_STRING); // Audigy SA ??
            break;
            
        case 0x40021102:
            if(!is_k8)
                strncpy(tmp_str,"EMU E-0404",KX_MAX_STRING); // [111]
            else
                strncpy(tmp_str,"EMU E-0404",KX_MAX_STRING); // [120]
            
            is_edsp=1;
            lack_ac97=1;
            break;
        case 0x40031102:
            if(!is_k8)
                strncpy(tmp_str,"EMU E-1010",KX_MAX_STRING); // [112]
            else
                strncpy(tmp_str,"EMU E-1010",KX_MAX_STRING); // [121]
            
            is_edsp=1;
            lack_ac97=1;
            break;
        case 0x40041102: // [123]
            productName = EMU;
            
            if(is_k8)
            {
                strncpy(tmp_str,"EM8960",KX_MAX_STRING); // EM8960: 1010 PCI
                is_edsp=1;
                lack_ac97=1;
            }
            else
            {
                strncpy(tmp_str,"Un4004",KX_MAX_STRING); // ??
            }
            break;
        case 0x40051102:
            productName = EMU;
            if(is_k8)
            {
                strncpy(tmp_str,"EM8984",KX_MAX_STRING); // EM8984: 0404 PCIe
                is_edsp=1;
                lack_ac97=1;
                busName=CardBus(1);
                busName=PCIExpress;
            }
            else
            {
                strncpy(tmp_str,"Un4005",KX_MAX_STRING); // ??
            }
            break;
        case 0x40071102: // EM8982 - 1010 ('PCIe' series)
        {
            productName = EMU;
            if(is_k8)
            {
                strncpy(tmp_str,"EM8982",KX_MAX_STRING);
                is_edsp=1;
                lack_ac97=1;
            }
            else
                strncpy(tmp_str,"Un4007",KX_MAX_STRING);
        }
            busName=CardBus(1);
            busName=PCIExpress;
            break;
            
        case 0x42011102: // [122]
            productName = EMU;
            strncpy(tmp_str,"EM8950",KX_MAX_STRING); // 1616 CardBus v2
            is_edsp=1;
            lack_ac97=1;
            is_cardbus=1;
            break;
            
        default:
            productName = Generic;
            strncpy(tmp_str,"Generic card",KX_MAX_STRING);
            busName=CardBus(4);
            busName=other;
            ret=-1;
            break;
    }
    
    char tmp[KX_MAX_STRING];
    
    char product[KX_MAX_STRING];
    
    
    switch (productName) {
        case SoundBlaster:
            strncpy(product, "SB ", KX_MAX_STRING);
            break;
        case EMU:
            strncpy(product, "E-MU ", KX_MAX_STRING);
            break;
        default:
            strncpy(product, "KX Audio Driver ", KX_MAX_STRING);
            break;
    }
    
    strncpy(tmp, tmp_str, KX_MAX_STRING);
    
    //strncpy(tmp_str, "", KX_MAX_STRING);
    
    strncpy(tmp_str, product, KX_MAX_STRING);
    strncat(tmp_str, tmp, KX_MAX_STRING);
    

 

  • Like 1
Link to comment
Share on other sites

2 hours ago, ITzTravelInTime said:

the drivers uses exactly a switch for that, but i have used a more complex naming system for the sound cards, becuase it can be from 2 different brands, and instead of rewriting sound blaster i used an enum and the object of the struct which represents the soiund cards has a property which tells if it's a sound blaster or an e-mu or an unknown card, and then which model is it, but you sound blaster audigy 2 zs will work with the driver, i have one and works great!

Nice, thanks for the explanation! I will buy one for me!

  • Like 1
Link to comment
Share on other sites

Is it possible to set a fixed frequency of 192kHz for the Audigy 2 ZS card? I tried to compile kext with the above settings but the sound does not work. The highest value that I managed to achieve by compiling the kext is 176.4kHz and on these settings the card works without a problem :)Is this a problem with the size of the buffer? If so, how to increase it? From what I see, kext has limits on the maximum buffer size up to 8192. Above this value the console crashes messages "!! kXAudioEngine[%p]::getCurrentSampleFrame: hw = 0".

Link to comment
Share on other sites

1 minute ago, cinek6413 said:

Is it possible to set a fixed frequency of 192kHz for the Audigy 2 ZS card? I tried to compile kext with the above settings but the sound does not work. The highest value that I managed to achieve by compiling the kext is 176.4kHz and on these settings the card works without a problem :)Is this a problem with the size of the buffer? If so, how to increase it? From what I see, kext has limits on the maximum buffer size up to 8192. Above this value the console crashes messages "!! kXAudioEngine[%p]::getCurrentSampleFrame: hw = 0".

yes that does not works, but frequencyes up to 48 khz does works

Link to comment
Share on other sites

1 minute ago, cinek6413 said:

but 176.4kHz works well on recompiled kext :)

probably because it's the multiple of some frequencyes and it does work because the math of the driver could handle it

Link to comment
Share on other sites

i successfully got the switching frequencyes to work, i can't belive it!

 

now i have to test all the frequencyes to work with different cards and see which is the maximun working one for each card, but i can already say that sound blaster live! cards are limited up to 48khz, so the driver will support from 8khz up to 48 khz on this kind of cards, i prefer to keep using official supported sample rates, now i have to test it on the audigy 1st series, 2 series, audigy 2 zs cards and audiigy rx cards to see which is the max frequency thaty can support, but most of them are just limited to 96khz, but we will see in the tests, after the tests i can release both the drivers and the source code for it.

  • Like 1
Link to comment
Share on other sites

On 4/24/2018 at 7:54 PM, cinek6413 said:

but 176.4kHz works well on recompiled kext, but if this is actually a real frequency, I am unable to say :)

as documented here it is a sample rate standard and i have also tested it and i can confirm that it works with my audigy rx at least, i have to test it with other cards

 

https://github.com/audiojs/sample-rate

  • Like 1
Link to comment
Share on other sites

all the possible frequencyes i have added seems to work fine at the moment, i have added a lot of different frequencyes to support better all kinds of professional applications, inclunding strange sampling rates and goes from 8khz up to 176.4 khz, unfortunately 192 khz does not seems to work even on cards which should support it like the audigy rx, but other frequencyes just works fine and at the moment i have tested only the sound blaster audigy rx and the audigy sb0090 (1st gen audigy) and i can confirm that all the frequencyes from 8khz up to 176.4 khz does work on that card, so i think that such frequencyes should work on all the audigy 2, 2sz, 4 cards as well, tomorrow i will test with my sound blaster live! cards and i will let you know, but here are also some photos (pro tip: use cmd + alt/opton + 4 and then press space to make a screenshot of a single window):

Schermata 2018-04-26 alle 00.46.23.png

Schermata 2018-04-26 alle 00.46.32.png

Link to comment
Share on other sites

22 hours ago, ITzTravelInTime said:

all the possible frequencyes i have added seems to work fine at the moment, i have added a lot of different frequencyes to support better all kinds of professional applications, inclunding strange sampling rates and goes from 8khz up to 176.4 khz, unfortunately 192 khz does not seems to work even on cards which should support it like the audigy rx, but other frequencyes just works fine and at the moment i have tested only the sound blaster audigy rx and the audigy sb0090 (1st gen audigy) and i can confirm that all the frequencyes from 8khz up to 176.4 khz does work on that card, so i think that such frequencyes should work on all the audigy 2, 2sz, 4 cards as well, tomorrow i will test with my sound blaster live! cards and i will let you know, but here are also some photos (pro tip: use cmd + alt/opton + 4 and then press space to make a screenshot of a single window)

 

Great info! I would be interested in the source code :)I care very much about getting 192kHz, I could try to figure it out. I also have one more question: is the driver not really limited to only 24 bits? I'm asking because the Audirvana Plus application identifies the card as 32 bit, but the playback itself is only in 24 bits, and this program supports 32 bit audio playback.

Link to comment
Share on other sites

2 hours ago, cinek6413 said:

 

Great info! I would be interested in the source code :)I care very much about getting 192kHz, I could try to figure it out. I also have one more question: is the driver not really limited to only 24 bits? I'm asking because the Audirvana Plus application identifies the card as 32 bit, but the playback itself is only in 24 bits, and this program supports 32 bit audio playback.

 the driver for 10k2 cards like the supported sound balster audigy cards, works at 32 bit but physically i think that cards accepts only 24 bits, but i am not sure about that, for the 192 khz sampling rate i think that it can't work because the the math of the driver or the cards itself struggles to handle it (maybe beause it has been implememnted in a particular way and the whay the driver handles frequencyes is not correct to handle such implementation, i have seen that in the official windows drivers 192 khz are implemented only for the main output, but the kx audio dirver does change the frequency of all the outputs at the sane time, to let them to be in sync, so i ahve to try see if it can work maybe just using it for the main output only) and also do remember that sound blaster live and other 10k1 based cards are limited up to 48 khz and can work only at 16 bits, so higher frame rates can be used only on 10k2 based cards, i am testing those using my cards from the audigy series including the audigy 2 zs, but a driver limited to 176,4 khz can be released now, i just have to finish testing, change version and build numbers abd compile a version to distribute, today i have aklso done testing on my sound blaster live! cards and it's working fine on that cards too

Edited by ITzTravelInTime
Link to comment
Share on other sites

 Share

×
×
  • Create New...