OS/2, eCS & ArcaOS - Technical > Multimedia
Rebuilds of MM Audio Pack
Lars:
--- Quote from: Remy on December 11, 2022, 08:03:35 pm ---
--- Quote from: David McKenna on December 11, 2022, 05:08:24 pm ---Hi Lars,
--- Quote from: Lars on December 09, 2022, 04:05:20 pm ---
--- Quote from: Dariusz Piatkowski on December 09, 2022, 02:43:11 am ---
--- Quote from: Lars on December 02, 2022, 07:26:19 am ---That is already supported with installing USBAUDIO package. It adds the necessary SPI info so that MMPM can understand this new Samplerate/numchannels/bit depth format....
--- End quote ---
...even if I'm not using a USB based audio device?
--- End quote ---
Yes. The addition of new data subtypes (samplerate/numchannels/bit depth combination) to MMPM (done via SPI.INI) is independent of any specific audio driver but is a necessary precondition to use that combination at all.
But of course, the audio driver also has to support that sample rate/bit depth/numchannels combination.
In short, the update package to SPI.INI contained in USBAUDIO will satisfy the prerequisites so that for example UNIAUD could use those new subtypes.
--- End quote ---
I'm able to play 24 bit, 48khz files here from the WPS using the USBAudio/USBWav driver, but not when using UniAud, even though the hardware supports it. I guess the UniAud driver does not support 24 bit files? Tried several versions of UniAud but no go.
However, I can play 24 bit files up to 192khz in dooble at this web page: https://www.msbtechnology.com/support/bit-perfect-testing/ . If I download one of these files, then double click on it in the WPS, it does not play.
I'm wondering if anyone has been able to play 24 bit or higher res files directly from the WPS using UniAud when they have the USBWav driver installed too...
Regards,
P.S. The new AIFF codec works well, thanks!, but only with 16 bit files too.
--- End quote ---
I installed USBAUDIO driver but 24bits do no play under WPS but are ok under PM123 kike DSF64 1bits are played too under PM123!
It looks like the maximum I could play are 16 bits 48Khz audio files.
--- End quote ---
1) as a prerequisite, SPI needs to be told what formats it can expect: combination of numchannels/bitdepth/samplerate, each combination is represented by a "subtype" number value
2) then the audio driver has to actively support a combination. The driver gets told the combination and then, it has to return the proper "subtype" number value. There are two ways that an audio driver can query and return the proper "subtype" number value: it either has a hard coded table in the driver itself (that is what USBAUDIO.SYS and USBAUD2.SYS have) or it can query a resource table that is located in AUDIOIF.DLL (this is done by USBAUDIO.SYS and USBAUD2.SYS as a fallback and is also the reason why I have create USBAUDIF.DLL as a replacement to AUDIOIF.DLL: AUDIOIF.DLL is "crippled" and therefore cannot handle samplerates >= 65536 Hz and also has a few bugs that might prevent it from finding the proper table entry).
3) finally, the audio HW has to support the combination
So, don't expect it to work with UNIAUD out of the box. You would need to tweak UNIAUD16.SYS and/or AUDIOIF.DLL to do the right thing.
With USBAUDIO.SYS and USBAUD2.SYS I can play all combinations (subtypes) that I posted earlier and including the ones that were already defined 25 years ago. If that does not work with USB audio, then you are missing the SPI update and/or the USBAUDIF.DLL update.
Lars:
Forgot one thing: the CWMMClasses have the unfortunate behaviour of caching numchannels/bitdepth/samplerate into EAs. And as far as I can tell, the CWMMClasses will then use these cached values whenever there is a need to report these values to the MM subsystem.
But with the default IOProc implemented in WAVEPROC.DLL, you are limited to 16-bits (it just will incorrectly report bitdepth for anything > 16).
And therefore you need to do two things:
1) install USBWAV.DLL. That replaces WAVEPROC.DLL with its own IOProc and will fix the error along the way. For AIFF and AIFC it will always properly report what it reads from the sound file but my SPI updates will only support bitdepths 8-bit,16-bit,24-bit,32-bit (with the stated numchannels/samplerates) but not 12-bit (for example)
2) use eautil to strip off any EAs from all sound files and have CWMMClasses recreate the EAs. CWMMClasses will use the IOProc to query the settings, that's the one you installed in 1) ...
David McKenna:
Hi Martin,
Your results are exactly what I saw too. You could also try MP3 -> OGG and MP3 -> FLA and OGG -> FLA, but none of those worked for me either...
Regards,
David McKenna:
Lars,
Thanks for the explanation. To be clear: on both of my test systems, the USB devices (both USBAudio 1 and 2) worked perfectly with different bit resolutions from the WPS. It was UniAud I was testing that did not work with 24 bit files, I was hoping to get to work. I tried replacing AUDIOIF with USBAUDIF in MMOS2.INI, but that didn't work (just got silence).
So the obvious question is: can the code used in USBAUDIF be used to upgrade AUDIOIF so it can be used by UNIAud (or any other driver that uses AUDIOIF)? Clearly UniAud supports higher bit resolution (works with PM apps), so it must be AUDIOIF that is blocking the WPS from using higher bit resolutions?
Regards,
Paul Smedley:
--- Quote from: Martin Iturbide on December 12, 2022, 01:12:57 am ---What it didn't work was to convert it to FLAC. I also did the "Convert To", but this time, when I press the convert button, the bar will not progress, the error sound will chime and the audconv.exe program will be unresponsive and I require to kill the process. It generates a 0 bytes FLAC file that of course don't work.
Regards
--- End quote ---
You probably also have an entry in popuplog.os2 - I need to get around to debugging this....
Navigation
[0] Message Index
[#] Next page
[*] Previous page
Go to full version