VOGONS


Reply 300 of 1061, by doogie

User metadata
Rank Member
Rank
Member

You were not kidding - parcels are definitely taking quite a while to reach their destinations. No movement in the tracking from the 9th of October until just today when it reappeared in New Jersey. Well, it’s made it to the right country, anyhow! 😁

Reply 302 of 1061, by 640K!enough

User metadata
Rank Oldbie
Rank
Oldbie
darry wrote on 2020-11-01, 19:46:

FACEPALM!

EDIT : I am in newb mode since yesterday, it seems .

We all have these little episodes. A few days ago, I spent hours trying to figure out why the CS4237 seemed unable to do anything right. Register writes yielded incorrect values when read back, the card wouldn't switch modes, writes to one register caused unrelated changes, and UNISOUND was failing repeatedly, too. CWDINIT, on the other hand, seemed to consistently work perfectly. The solution to the mystery? I had another card at 534H to test another issue, and I forgot to remove it. CWDINIT was configured to use 608H, so worked fine; the others wanted 534H. 😠

That isn't to say that the CS4237 is bug-free, but that wasn't one of them.

Reply 303 of 1061, by TechieDude

User metadata
Rank Member
Rank
Member
keropi wrote on 2020-11-01, 20:14:

nice nice , good to see it resolved
please report everything even if it turns out to be a non-issue 😀

Indeed, that could serve as a mini-guide or FAQ.

Reply 304 of 1061, by Spazilton

User metadata
Rank Newbie
Rank
Newbie
keropi wrote on 2020-11-01, 21:10:
Spazilton wrote on 2020-11-01, 20:54:

I waited a few extra days and there is nothing in my email. I know you guys are beyond reputable, I'm just looking to get a tracking number when you can. Can I PM you the order details?

this is weird, sure PM me your name it will be enough!

Info received! Thanks guys. Looks like it has cleared customs here in the US and is on it's way should have it next week!

Reply 305 of 1061, by darry

User metadata
Rank l33t++
Rank
l33t++

I decided to try to redeem myself and have been poring through the CS4236B datasheet (could not find the CX4237B), the source code and docs of the Linux CS4236B driver and the output of RU.EXE running under Windows 98 SE.

Doing so, I have been able to find and to test a way to disable the waveblaster analogue input in DOS and get rid of the associated noise . The bad news is that it only works when the internal CX4237B OPL3 is activated . If the external one is activated, doing this step completely cuts off OPL3 output .

As mentioned before, when digital output (S/PDIF) is active, the SRS mute checkbox in the Windows mixer toggles the waveblaster header input .

This can be set in DOS by using RU.EXE by writing directly to I/O address once the card has been initialized using UniSound .

First, you need to set the index register at an offset of +3 from the control address of the card to 03h to address the proper Indirect Address Register (C3) which will accessible at an offset of +4 from the control address of the card .
Then you need to write 20h (enable digital serial out only) to Indirect Address Register C3 at an offset of +4 from the control address of the card . The default value is A0h (enable 3D AND digital serial out ) .

This Indirect Address Register is not documented in the datasheet that I found here https://datasheetspdf.com/pdf-file/1311727/Ci … Logic/CS4236B/1 , but was documented in the Linux driver docs https://elixir.bootlin.com/linux/v5.9.2/sourc … 3x/cs4236_lib.c , fortunately .

I was able to observe the register changing in RU.EXE while toggling the SRS mute checkbox in Windows and was then able to replicate the change in pure DOS using RU.EXE , but I do not know it some other register should be changed as well for optimal operation (though it does seem to work as is) and, as mentioned before, this breaks external OPL3 over S/PDIF , but I am hoping there may be either a way around this or another way to achieve the same goal (i.e. disabling the ADC completely).

I will keep on looking .

EDIT : If anybody wants to try this, a simple way to do it is to use debug.exe .
For example, if the control base address of your card is 120h, you could create the a file named mutewb.dbg in a text editor with the following content :

O123 3
O124 20
q

and run

debug < mutewb.dbg

If the control base address of your card is something else, you will need to change 123 to the value of your base address +3 (all in hexadecimal) and 124 to the value of your base address +4 (all in hexadecimal).

Running UniSound again or rebooting will revert the change (assuming UniSound runs at boot) . Reboot or setting back initial value required to revert

Last edited by darry on 2020-11-02, 02:19. Edited 1 time in total.

Reply 306 of 1061, by darry

User metadata
Rank l33t++
Rank
l33t++
darry wrote on 2020-11-01, 22:51:
I decided to try to redeem myself and have been poring through the CS4236B datasheet (could not find the CX4237B), the source co […]
Show full quote

I decided to try to redeem myself and have been poring through the CS4236B datasheet (could not find the CX4237B), the source code and docs of the Linux CS4236B driver and the output of RU.EXE running under Windows 98 SE.

Doing so, I have been able to find and to test a way to disable the waveblaster analogue input in DOS and get rid of the associated noise . The bad news is that it only works when the internal CX4237B OPL3 is activated . If the external one is activated, doing this step completely cuts off OPL3 output .

As mentioned before, when digital output (S/PDIF) is active, the SRS mute checkbox in the Windows mixer toggles the waveblaster header input .

This can be set in DOS by using RU.EXE by writing directly to I/O address once the card has been initialized using UniSound .

First, you need to set the index register at an offset of +3 from the control address of the card to 03h to address the proper Indirect Address Register (C3) which will accessible at an offset of +4 from the control address of the card .
Then you need to write 20h (enable digital serial out only) to Indirect Address Register C3 at an offset of +4 from the control address of the card . The default value is A0h (enable 3D AND digital serial out ) .

This Indirect Address Register is not documented in the datasheet that I found here https://datasheetspdf.com/pdf-file/1311727/Ci … Logic/CS4236B/1 , but was documented in the Linux driver docs https://elixir.bootlin.com/linux/v5.9.2/sourc … 3x/cs4236_lib.c , fortunately .

I was able to observe the register changing in RU.EXE while toggling the SRS mute checkbox in Windows and was then able to replicate the change in pure DOS using RU.EXE , but I do not know it some other register should be changed as well for optimal operation (though it does seem to work as is) and, as mentioned before, this breaks external OPL3 over S/PDIF , but I am hoping there may be either a way around this or another way to achieve the same goal (i.e. disabling the ADC completely).

I will keep on looking .

EDIT : If anybody wants to try this, a simple way to do it is to use debug.exe .
For example, if the control base address of your card is 120h, you could create the a file named mutewb.dbg in a text editor with the following content :

O123 3
O124 20
q

and run

debug < mutewb.dbg

If the control base address of your card is something else, you will need to change 123 to the value of your base address +3 (all in hexadecimal) and 124 to the value of your base address +4 (all in hexadecimal).

Running UniSound again or rebooting will revert the change (assuming UniSound runs at boot) .

Powering down the ADC by setting address 122h to 08h works with an external OPL3 , but obviously kills all analogue input .

For example, if the control base address of your card is 120h, and you could create the a file named muteadc.dbg in a text editor with the following content :

O122 8
q

and run

debug < muteadc.dbg

Again running UniSound again or rebooting will revert the change (assuming UniSound runs at boot) . Reboot or setting back initial value required to revert

Reply 307 of 1061, by 640K!enough

User metadata
Rank Oldbie
Rank
Oldbie
darry wrote on 2020-11-01, 22:51:

I decided to try to redeem myself and have been poring through the CS4236B datasheet (could not find the CX4237B), the source code and docs of the Linux CS4236B driver and the output of RU.EXE running under Windows 98 SE.

If you're enjoying the challenge, by all means, feel free. Otherwise, I'll have something to share in a few days that should go a long way toward solving many of these little annoyances.

Reply 308 of 1061, by darry

User metadata
Rank l33t++
Rank
l33t++
640K!enough wrote on 2020-11-02, 02:49:
darry wrote on 2020-11-01, 22:51:

I decided to try to redeem myself and have been poring through the CS4236B datasheet (could not find the CX4237B), the source code and docs of the Linux CS4236B driver and the output of RU.EXE running under Windows 98 SE.

If you're enjoying the challenge, by all means, feel free. Otherwise, I'll have something to share in a few days that should go a long way toward solving many of these little annoyances.

I know that people vastly more qualified at this (you included) than I am are working on it, but it still seems like fun to poke at things on my own, even if I do feel like I am taking the software equivalent of a hammer to it . Disabling the ADC bloc while the daughterboard is not in used makes the card beautifully quiet when running through my cheap external DAC . A higher quality (more expensive) DAC would probably be even better noise-wise, but this is already worlds better than what I used to have . As for my Dreamblaster X2, I am considering mounting it externally (already ordered the https://www.serdashop.com/CHiLL as the Chill and Phil adapter was unfortunately out of stock) as, for some reason, the waveblaster header on any card (including the Audiotrix 3D/XG) in my PC has always seemed noisier than it should be, even when no daughterboard is installed . Alternatively, if an update from you allows me to mute the waveblaster header without killing the ADC block (or if I get there on my own, in course of my fun (re-)learning experience), I will considering trying to pipe the X2's line out into the Orpheus' line-in as for some reason the line-in seems quieter than the waveblaster header .

Either way, I like having options and if I end up with an available extra waveblaster header, I might even pop-in my old Monster MIDI too .

EDIT: I think that I might be able to do what I want (disable the wavetable header input without affecting external OPL3 or other analogue inputs), by switching the chip to mode 3 (UniSound inits in mode 1, AFAICT by looking at the mode register) to gain more control, but all that re-mapping just confuses the hell out of me . Maybe staying in mode 1 and playing with LSS1-LSS0 could work .

EDIT2 : Then again, considering that I will never use the X2 at the same time as the OPL3, I could just toggle that SRS bit and disable OPL3 when using the X2 connected to line-in . And when I want OPL3, I re-enable the SRS bit and kill the ADC . All doable with batch files, but it feels like a kludge .

Reply 309 of 1061, by keropi

User metadata
Rank l33t++
Rank
l33t++

I am attaching a nice non-locked datasheet for CS4237 for your experiments darry , tinkering is half the fun 😀

Attachments

  • Filename
    CS4237B.pdf
    File size
    1.12 MiB
    Downloads
    92 downloads
    File license
    Public domain

🎵 🎧 PCMIDI MPU , OrpheusII , Action Rewind , Megacard and 🎶GoldLib soundcard website

Reply 310 of 1061, by darry

User metadata
Rank l33t++
Rank
l33t++
keropi wrote on 2020-11-02, 06:29:

I am attaching a nice non-locked datasheet for CS4237 for your experiments darry , tinkering is half the fun 😀

Thank you, very much appreciated !

Reply 311 of 1061, by darry

User metadata
Rank l33t++
Rank
l33t++

I think I understand a bit more now .

The register bit I was toggling (SRS / 3D Enable (C3) )to disable the waveblaster input actually disables line-in (tested) and probably all ADC input .
Actually from my understanding, by default (or at least as configured by UniSound and Windows drivers), in digital output mode, analogue audio passes through the ADC, into the digital mixer and then the SRS DSP (even when no SRS effect is applied). This because both 3DEN and 3DSO bits are enabled . Turning off 3DEN , but leaving 3DSO enabled, which is what I've been doing under DOS (and likely what the Windows driver does when "muting" SRS) actually seems to cut off the signal from the ADCs , because it is routed through the SRS DSP which is now effectively disabled .

a) One thing that I do not understand is why the internal OPL3 keeps working, but the external one does not, as their digital signals are both routed to the digital mixer and through the now disabled SRS DSP . I would have expected both of them to stop working . Wave audio seems to have a path direct to S/PDIF output, which explains why it still works and the schematic on page 1 of the datasheet suggest that there is a possible path from the ADC to S/PDIF as well (possibly by setting 3DSO to 0 ?).

b) How both wave audio and what comes through the ADC can go directly without going through some kind of digital mixer is another mystery to my (is there a second, non documented digital mixer?) .

Anyway, I still need to test what will happen if I set both 3DEN and 3DSO bits to 0 . Probably something to try after a little nap .

If anybody like they could explain a) or b) to me or point me to some docs/something that I may have missed in the datasheet, it would be much appreciated .

Reply 312 of 1061, by TechieDude

User metadata
Rank Member
Rank
Member
darry wrote on 2020-11-02, 03:16:
I know that people vastly more qualified at this (you included) than I am are working on it, but it still seems like fun to poke […]
Show full quote

I know that people vastly more qualified at this (you included) than I am are working on it, but it still seems like fun to poke at things on my own, even if I do feel like I am taking the software equivalent of a hammer to it . Disabling the ADC bloc while the daughterboard is not in used makes the card beautifully quiet when running through my cheap external DAC . A higher quality (more expensive) DAC would probably be even better noise-wise, but this is already worlds better than what I used to have . As for my Dreamblaster X2, I am considering mounting it externally (already ordered the https://www.serdashop.com/CHiLL as the Chill and Phil adapter was unfortunately out of stock) as, for some reason, the waveblaster header on any card (including the Audiotrix 3D/XG) in my PC has always seemed noisier than it should be, even when no daughterboard is installed . Alternatively, if an update from you allows me to mute the waveblaster header without killing the ADC block (or if I get there on my own, in course of my fun (re-)learning experience), I will considering trying to pipe the X2's line out into the Orpheus' line-in as for some reason the line-in seems quieter than the waveblaster header .

Either way, I like having options and if I end up with an available extra waveblaster header, I might even pop-in my old Monster MIDI too .

EDIT: I think that I might be able to do what I want (disable the wavetable header input without affecting external OPL3 or other analogue inputs), by switching the chip to mode 3 (UniSound inits in mode 1, AFAICT by looking at the mode register) to gain more control, but all that re-mapping just confuses the hell out of me . Maybe staying in mode 1 and playing with LSS1-LSS0 could work .

EDIT2 : Then again, considering that I will never use the X2 at the same time as the OPL3, I could just toggle that SRS bit and disable OPL3 when using the X2 connected to line-in . And when I want OPL3, I re-enable the SRS bit and kill the ADC . All doable with batch files, but it feels like a kludge .

Believe me, the best way to learn and to grow is to challenge yourself, no matter your age. Plus, I've found the most frustrating challenges to also be the most satisfying ones 😉

Reply 313 of 1061, by darry

User metadata
Rank l33t++
Rank
l33t++
TechieDude wrote on 2020-11-02, 13:28:
darry wrote on 2020-11-02, 03:16:
I know that people vastly more qualified at this (you included) than I am are working on it, but it still seems like fun to poke […]
Show full quote

I know that people vastly more qualified at this (you included) than I am are working on it, but it still seems like fun to poke at things on my own, even if I do feel like I am taking the software equivalent of a hammer to it . Disabling the ADC bloc while the daughterboard is not in used makes the card beautifully quiet when running through my cheap external DAC . A higher quality (more expensive) DAC would probably be even better noise-wise, but this is already worlds better than what I used to have . As for my Dreamblaster X2, I am considering mounting it externally (already ordered the https://www.serdashop.com/CHiLL as the Chill and Phil adapter was unfortunately out of stock) as, for some reason, the waveblaster header on any card (including the Audiotrix 3D/XG) in my PC has always seemed noisier than it should be, even when no daughterboard is installed . Alternatively, if an update from you allows me to mute the waveblaster header without killing the ADC block (or if I get there on my own, in course of my fun (re-)learning experience), I will considering trying to pipe the X2's line out into the Orpheus' line-in as for some reason the line-in seems quieter than the waveblaster header .

Either way, I like having options and if I end up with an available extra waveblaster header, I might even pop-in my old Monster MIDI too .

EDIT: I think that I might be able to do what I want (disable the wavetable header input without affecting external OPL3 or other analogue inputs), by switching the chip to mode 3 (UniSound inits in mode 1, AFAICT by looking at the mode register) to gain more control, but all that re-mapping just confuses the hell out of me . Maybe staying in mode 1 and playing with LSS1-LSS0 could work .

EDIT2 : Then again, considering that I will never use the X2 at the same time as the OPL3, I could just toggle that SRS bit and disable OPL3 when using the X2 connected to line-in . And when I want OPL3, I re-enable the SRS bit and kill the ADC . All doable with batch files, but it feels like a kludge .

Believe me, the best way to learn and to grow is to challenge yourself, no matter your age. Plus, I've found the most frustrating challenges to also be the most satisfying ones 😉

True, and the learning process is an enjoyable one and brings back memories . I had not used debug.exe in I don't know how many years . I am still in my early forties, so I should still have plenty of time for learning before some whippersnapper come to "rescue" me, put me in an assisted living facility and clean out my hoard . And even then I will hopefully find opportunities to learn, unless my mind is gone .

Reply 314 of 1061, by Lennart

User metadata
Rank Member
Rank
Member

Cool, thanks everyone for all the information and the little debug.exe scripts in the last couple of posts! I had no idea that the CS4237 codec has so many modes...

I haven't found that much time yet to play around with the Orpheus unfortunately, but I'm really liking it so far. Haven't used the digital output yet, but the analog output is certainly very good! One thing I noticed though, is that the volume differs greatly between the external OPL3 and CrystalFM when I initialize the card with Unisound (haven't tested in Windows yet). I usually lower the volume to 60 for the OPL3 and raise it to 99 for CrystalFM. But even then CrystalFM is quieter than the OPL3. I don't remember it being that quiet on the Terratec EWS64XL with CS4236. Is there a way to boost the volume of CrystalFM any further, perhaps through using another codec mode?

640K!enough wrote on 2020-11-02, 02:49:

If you're enjoying the challenge, by all means, feel free. Otherwise, I'll have something to share in a few days that should go a long way toward solving many of these little annoyances.

That sounds nice, looking forward to what you've come up with 😀

Reply 315 of 1061, by darry

User metadata
Rank l33t++
Rank
l33t++

I found a really ugly way to get the external OPL3 working in Windows 98 SE (in Windows applications and DOS ones running under Windows) on the Orpheus .

It's quite simple actually : force install the Windows Sound System driver on the Crystal codec device (I also force installed the Microsoft MPU401 driver on the Crystal MPU device, just in case it might be unhappy running alongside the WSS codec driver, but this might not be necessary) .

How do I know it's the external OPL3 playing, other than by the audible difference ? As a test, I forcefully powered down the internal FM block by outputting 09h into port 122h (which disables both the ADC AND the internal FM block) . I also confirmed that nothing was resetting that register to a different value after my manipulation .

I tested in Windows Media player and in Duke Nukem 3D (running from DOS prompt in Windows) and FM seems to work fine .

EDIT : I left the Control Interface driver alone . It is the one from the PV2860 driver.

Reply 316 of 1061, by 640K!enough

User metadata
Rank Oldbie
Rank
Oldbie
darry wrote on 2020-11-02, 16:55:

I am still in my early forties, so I should still have plenty of time for learning before some whippersnapper come to "rescue" me, put me in an assisted living facility and clean out my hoard .

I certainly didn't mean to offend or insult anyone, nor imply that you need to be "rescued". It's difficult on an open forum to know if you are a frustrated user who just wishes the thing would work the way you want it to, or some elite software engineer and demo master who can figure out instruction scheduling and timing on five different architectures in your sleep. I actually encourage that sort of experimentation and learning, for those who have an interest, but those who hate it shouldn't feel that they are being forced into it as the only way to get the thing to perform.

darry wrote on 2020-11-02, 13:21:
a) One thing that I do not understand is why the internal OPL3 keeps working, but the external one does not, as their digital si […]
Show full quote

a) One thing that I do not understand is why the internal OPL3 keeps working, but the external one does not, as their digital signals are both routed to the digital mixer and through the now disabled SRS DSP . I would have expected both of them to stop working . Wave audio seems to have a path direct to S/PDIF output, which explains why it still works and the schematic on page 1 of the datasheet suggest that there is a possible path from the ADC to S/PDIF as well (possibly by setting 3DSO to 0 ?).

b) How both wave audio and what comes through the ADC can go directly without going through some kind of digital mixer is another mystery to my (is there a second, non documented digital mixer?) .

Anyway, I still need to test what will happen if I set both 3DEN and 3DSO bits to 0 . Probably something to try after a little nap .

If anybody like they could explain a) or b) to me or point me to some docs/something that I may have missed in the datasheet, it would be much appreciated .

One of today's lessons is not to place any blind faith in datasheets that you find floating around; they may have been superseded, or OEMs of the time may have had access to other materials that we non-paying sorts will never see (especially twenty years later). Some things in that document are just downright wrong. How do we find out? Well, you did say that you like to experiment, didn't you? 😉

Your item (a) is really a bit of a mystery, and we are left to draw our own conclusions based on experimentation. My theory is that the wavetable serial port (where the YMF289 resides on the Orpheus) is routed through the SRS DSP somewhat differently, on its way to the DSP serial port (which provides consumer serial port/"S/PDIF" functionality). As such, you can get output from all other pure digital sources without 3DEN (while 3DSO is set), including the integrated Crystal FM/IFM, but the YMF289 will not be heard on that path unless both 3DEN and 3DSO are set.

You can clear 3DSO, in which case you will route the digitised output from the ADC through the serial port. There is no need for an additional mixer, as the 3DSO bit actually acts more like a multiplexer control; you can get digital-only output or ADC output, but not both without some more register magic. One way, if you're so inclined, is to enable the monitor loopback via I13.

It is worth stressing that you should keep your volume levels reasonable, and pay attention to the attenuation/gain values when doing this sort of experimentation. It is quite easy to create a feedback loop or other mess that results in some pretty nasty, loud noises being emitted, which can damage speakers and/or eardrums.

Reply 317 of 1061, by darry

User metadata
Rank l33t++
Rank
l33t++
640K!enough wrote on 2020-11-03, 02:53:
I certainly didn't mean to offend or insult anyone, nor imply that you need to be "rescued". It's difficult on an open forum to […]
Show full quote
darry wrote on 2020-11-02, 16:55:

I am still in my early forties, so I should still have plenty of time for learning before some whippersnapper come to "rescue" me, put me in an assisted living facility and clean out my hoard .

I certainly didn't mean to offend or insult anyone, nor imply that you need to be "rescued". It's difficult on an open forum to know if you are a frustrated user who just wishes the thing would work the way you want it to, or some elite software engineer and demo master who can figure out instruction scheduling and timing on five different architectures in your sleep. I actually encourage that sort of experimentation and learning, for those who have an interest, but those who hate it shouldn't feel that they are being forced into it, as the only way to get the thing to perform.

darry wrote on 2020-11-02, 13:21:
a) One thing that I do not understand is why the internal OPL3 keeps working, but the external one does not, as their digital si […]
Show full quote

a) One thing that I do not understand is why the internal OPL3 keeps working, but the external one does not, as their digital signals are both routed to the digital mixer and through the now disabled SRS DSP . I would have expected both of them to stop working . Wave audio seems to have a path direct to S/PDIF output, which explains why it still works and the schematic on page 1 of the datasheet suggest that there is a possible path from the ADC to S/PDIF as well (possibly by setting 3DSO to 0 ?).

b) How both wave audio and what comes through the ADC can go directly without going through some kind of digital mixer is another mystery to my (is there a second, non documented digital mixer?) .

Anyway, I still need to test what will happen if I set both 3DEN and 3DSO bits to 0 . Probably something to try after a little nap .

If anybody like they could explain a) or b) to me or point me to some docs/something that I may have missed in the datasheet, it would be much appreciated .

One of today's lessons is not to place any blind faith in datasheets that you find floating around; they may have been superseded, or OEMs of the time may have had access to other materials that we non-paying sorts will never see (especially twenty years later). Some things in that document are just downright wrong. How do we find out? Well, you did say that you like to experiment, didn't you? 😉

Your item (a) is really a bit of a mystery, and we are left to draw our own conclusions based on experimentation. My theory is that the wavetable serial port (where the YMF289 resides on the Orpheus) is routed through the SRS DSP somewhat differently, on its way to the DSP serial port (which provides consumer serial port/"S/PDIF" functionality). As such, you can get output from all other pure digital sources without 3DEN (while 3DSO is set), including the integrated Crystal FM/IFM, but the YMF289 will not be heard on that path unless both 3DEN and 3DSO are set.

You can clear 3DSO, in which case you will route the digitised output from the ADC through the serial port. There is no need for an additional mixer, as the 3DSO bit actually acts more like a multiplexer; you can get digital-only output or ADC output, but not both without some more register magic. One way, if you're so inclined, is to enable the monitor loopback via I13.

It is worth stressing that you should keep your volume levels reasonable, and pay attention to the attenuation values when doing this sort of experimentation. It is quite easy to create a feedback loop or other mess that results in some pretty nasty, loud noises being emitted, which can damage speakers and/or eardrums.

I am in no way offended . My comment about the assisted living facility was meant in pure jest and as speculation on how I am likely to end my days as a half-senile but always curious old fart who will need to be rescued from himself and the hoard of old hardware he will still be clutching at, for his own good . I should have added an emoticon or two . I love to experiment with older hardware, at multiple levels, and I do not believe that will ever change .

I do hope that I do not give off too much of a frustrated user vibe and I am definitely not an engineer, but simply a tinkerer who likes to try to constructively (I hope) dig into things and try to find out how they work and how to better adapt them to his needs .

Thank you for your take on my questions and the very pertinent recommendation about keeping volume levels in check while experimenting . I am an absolute beginner at dealing with datasheets (other than for checking specs) and naively believed in their near absolute accuracy . I now know better . 😀

Cheers!

Reply 318 of 1061, by darry

User metadata
Rank l33t++
Rank
l33t++
darry wrote on 2020-11-03, 02:10:
I found a really ugly way to get the external OPL3 working in Windows 98 SE (in Windows applications and DOS ones running under […]
Show full quote

I found a really ugly way to get the external OPL3 working in Windows 98 SE (in Windows applications and DOS ones running under Windows) on the Orpheus .

It's quite simple actually : force install the Windows Sound System driver on the Crystal codec device (I also force installed the Microsoft MPU401 driver on the Crystal MPU device, just in case it might be unhappy running alongside the WSS codec driver, but this might not be necessary) .

How do I know it's the external OPL3 playing, other than by the audible difference ? As a test, I forcefully powered down the internal FM block by outputting 09h into port 122h (which disables both the ADC AND the internal FM block) . I also confirmed that nothing was resetting that register to a different value after my manipulation .

I tested in Windows Media player and in Duke Nukem 3D (running from DOS prompt in Windows) and FM seems to work fine .

EDIT : I left the Control Interface driver alone . It is the one from the PV2860 driver.

I definitely chose the right word when I said this was "ugly" . What I did no realize at the time is that, at least over digital output (S/PDIF), wave audio sounds very noisy . This may be fixable by comparing the state of the WSS specific registers of the CX4237B with the WSS driver running versus the with the reference CX4237B driver running .

EDIT : I wonder if this affects analogue output as well .
EDIT2: I should also have specified, just to be clear, that the noise is only present when WAVE audio is playing, otherwise it's completely quiet .

Reply 319 of 1061, by 640K!enough

User metadata
Rank Oldbie
Rank
Oldbie
darry wrote on 2020-11-05, 05:17:

I definitely chose the right word when I said this was "ugly" . What I did no realize at the time is that, at least over digital output (S/PDIF), wave audio sounds very noisy .

This is a complete mystery so far. You seem to be finding many sources of noise, while my experience has been that the card is impressively quiet most of the time. The occasions where there is noise are usually a result of less-than-ideal register values. As mentioned, noise does increase if you keep all of the volume levels near the top of the range, but that shouldn't be necessary.

I'm just waiting for some pre-release feedback, but I think my beta init tool is mostly ready to be shared. If you decide to try it, we'll see what your results are like then.