Jump to content
ITzTravelInTime

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

238 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

Share this post


Link to post
Share on other sites
Advertisement

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! 

Share this post


Link to post
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

Share this post


Link to post
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

Share this post


Link to post
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.

 

Share this post


Link to post
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

Share this post


Link to post
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

Share this post


Link to post
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!

 

 

Share this post


Link to post
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!

Share this post


Link to post
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);
    

 

Share this post


Link to post
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!

Share this post


Link to post
Share on other sites

i am trying to contact different expert mac os audio developers to try to add switching frequency and inputs support, i suggest to you to do that too

Share this post


Link to post
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".

Share this post


Link to post
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

Share this post


Link to post
Share on other sites
Posted (edited)

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

Edited by cinek6413

Share this post


Link to post
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

Share this post


Link to post
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.

Share this post


Link to post
Share on other sites
Posted (edited)

And also when you have to test an audio driver and you have to do it properly

 

 

 

 

 

 

 

 

 

 

.

Schermata 2018-04-25 alle 22.58.50.png

Edited by ITzTravelInTime

Share this post


Link to post
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

Share this post


Link to post
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

Share this post


Link to post
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.

Share this post


Link to post
Share on other sites
Posted (edited)
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

Share this post


Link to post
Share on other sites

That's awesome news!!

 

I have the audigy 2 zs... the same as yours won't help much but I can help in the testing if you want, Itz.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By Mieze
      Being asked to add support for Realtek's Fast Ethernet PCIe NICs to my RTL8111 driver I got tired of answering the same old question again and again so that I finally decided to write a separate driver for these chips and to make a few of you guys and gals happy.
       
      As of now the driver supports the following members the RTL810X Fast Ethernet family:
      RTL8101E RTL8102E RTL8103E RTL8401E RTL8105E RTL8402 RTL8106E RTL8106EUS RTL8107E Here is a list of the driver's basic features:
      Supports Sierra (maybe El Capitan). 64 bit architecture only. Support for multisegment packets relieving the network stack of unnecessary copy operations when assembling packets for transmission. No-copy receive and transmit. Only small packets are copied on reception because creating a copy is more efficient than allocating a new buffer. TCP, UDP and IPv4 checksum offload (receive and transmit). TCP segmentation offload under IPv4. Support for TCP/IPv6 and UDP/IPv6 checksum offload. Supports Wake on LAN. Support for Energy Efficient Ethernet (EEE) which can be disabled by setting enableEEE to NO in the drivers Info.plist without rebuild. The default is YES. The driver is published under GPLv2. Built using Xcode 4.6.3.  
      Changelog Version 2.0.1 (2018-05-10): Fixes a problem with retrieval of the permanent MAC address on some chips. Version 2.0.0 (2017-04-04): Uses Apple's private driver interface introduced with 10.8. Adds support for the RTL8107E. Supports packet scheduling with QFQ. Adds support for flow control and EEE. Version 1.0.0 (2014-05-24): First offical release.     Installation   Before you install the driver you have to remove any installed driver for RTL810X. Goto /S/L/E and delete the old driver. Recreate the kernel cache. Open System Preferences and delete the corresponding network interface, e. g. en0. If you forget this step you might experience strange problems with certain Apple domains, iTunes and iCloud later. Install the new driver and recreate the kernel cache. Reboot Open System Preferences again, select Network and check if the new network interface has been created automatically or create it manually now. Configure the interface.     Troubleshooting Make sure you have followed the installation instructions especially when you have issues with certain domains while the others are working fine. Use the debug version to collect log data when trying to track down problems. The kernel log messages can be retrieved with "grep kernel /var/log/system.log" in Terminal. Starting from Sierra use "log show --predicate "processID == 0" --debug" in order to retrieve kernel logs. Include the log data when asking for support or giving feedback. I'm an engineer, not a clairvoyant. Don't copy and paste large amounts of log data to your post. Create an archive with the log data and attach it to your post. In case you don't want to make your log data publicly accessible, contact me via PM and I will provide you a mail address to send it directly to me.  Check your BIOS settings. You might want to disable Network Boot and the UEFI Network Stack as these can interfere with the driver. Double check that you have removed any other Realtek kext from your system because they could prevent the driver from working properly. Delete the following files: /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist /Library/Preferences/SystemConfiguration/preferences.plist Verify your bootloader configuration, in particular the kernel flags. Avoid using npci=0x2000 or npci=0x3000.  In Terminal run netstat -s in order to display network statistics. Carefully examine the data for any unusual activity like a high number of packets with bad IP header checksums, etc. In case auto-configuration of the link layer connection doesn't work it might be necessary to select the medium manually in System Preferences under Network for the interface. Use Wireshark to create a packet dump in order to collect diagnostic information. Keep in mind that there are many manufacturers of network equipment. Although Ethernet is an IEEE standard, different implementations may show different behavior causing incompatibilities. In case you are having trouble try a different switch or a different cable.  
      Getting the driver
      There is a prebuilt binary in the Download section of this site: http://www.insanelymac.com/forum/files/file/259-realtekrtl8100-binary/ The source code can be found on Github: https://github.com/Mieze/RealtekRTL8100   Mieze
    • By LarryKu
      Hi everyone,
      I am new, I hope I am posting in the correct forum.
      My specs:
      Processor: Core i5 6500 Skylake 3.2ghz
      Mobo: Gigabyte h170-d3h
      M2SSD: WD Black 256gb PCIe (Mac OSx)
      SSD: Samsung 860 Evo (WIndows 10)
      HDD: WD Blue 1TB
      GPU: Radeon RX 480
      Monitor: BenQ RL2460 24"


      I was able to install High Sierra on a new m2 drive, that I added to the above configuration with windows 10 already installed.
      I had a few issues during install, including the monitor turning off at boot screen.

      Unfortunately, this persists even now. It turns off at about 60% of the progress bar, and to turn it on again I have to unplug/plug back my hdmi.
      Additionally, while all of the usb ports worked during install and while running it out of the clover I had on the usb stick, only the rear ones appear to work now.
      The audio doesn't work either, though I added the correct patch according to my mobo

      Lastly, my other drives are not recognized in the bios anymore. They run fine from boot override but they don't show up in the boot priority (while multiple entries of mac OS do, and they seem to increase in number at every reboot)

      Thanks in advance for the help
    • By ITzTravelInTime
      This driver is a mod of the popular kx audio driver for mac os x, the project goal is to still maintaining it for the future releases of mac os and to include as much cards as possible and to get all the features of the cards to work.
       
      Currently the only features not supported are audio inputs and integrated midi and synth capabilitues of the cards, and some minor things like creative remote controllers or software controlled volume gears on creative external drives and bays)
       
      It supports most the sound blaster live! series cards, the sound blaster PCI 512, most of the audigy (emu 10k2 based) series, audigy 1, audigy 2, audigy 2 zs, audigy 4 (SB0610), audigy 4 pro, audigy 5 and audigy rx (sb1550) and some e-mu edsp audio cards with all the recent versions of mac os, tested to work with mac os yosemite, el capitan, sierra and high sierra on intel based machines from socket 775 to 1151 (including enthusiast platforms like x58, x79, x99, x299) and also confirmed to work on mac pros.
       
      reference topic:
       
      Kx audio driver mod [sound blaster live!, audigy 1/2/4/RX emu edsp]
×