VOGONS


Reply 580 of 929, by FreddyV

User metadata
Rank Oldbie
Rank
Oldbie
MobyGamer wrote on 2020-10-08, 01:34:

I wondered about the 2K buffer thing, because when I was looking at the docs I couldn't see that as a limit. The BIOS extensions for the DAC don't have that limit either, so glad that we were both mistaken on that. But it is a shame it does IRQ only at the end of a buffer, so we have to resort to SB 1.0 player tricks which are ugly.

I use a 50Hz Timer that read the DMA Buffer offset and execute the next 1/50Hz buffer calculation.
DMA Buffer offset is read after each buffer is mixed as well, to update the Volume cut value I use to speed up the mixing if the mix code is late.
Then, this is even more accurate and can be more precise that the Sound Blaster code.

Tandy DAC is working in Autoinit mode, so we only need to aknowledge the DAC IRQ.
This technique can be used for the Sound Blaster Not Autoinit, to reduce the number of time we need to "Restart" the DMA.

All the parameters are variables, (DMA Buffer size, Number of 1/50Hz buffer to compute with the minimum and maximum value and so on)

Reply 581 of 929, by FreddyV

User metadata
Rank Oldbie
Rank
Oldbie
Cloudschatze wrote on 2020-10-08, 01:51:
MobyGamer wrote on 2020-10-08, 01:34:

Is there a need to go higher than 48 KHz? Even 8-bit, that frequency response (including the distortion added by 8-bit) is already above the range of human hearing...

Not to mention the 5kHz roll-off and ~11kHz cutoff filtering affecting the output of most PSSJ implementations.

Yep, I don't know what are the analog characteristics of the DAC and amplifier.
We can move a Jumper on the Tandy TL to bypass the amplifier and transform the input to a Line Out.
So you just remind me I need to test this 😀

I use 48KHz as output to stress/Test the mixing speed, of course there is no guantee that the sound is really better.
It may be much more improved by using the 16Bit mixing code at a lower output frequency.

I will surely do a youtube Video to show the DAC possibilities (Outrun, Deskmate, Tantrack and Mod Master)
(Hope ma tandy will not die before)

I also plan to replay Tandy deskmate songs with better samples as the DAC does not sounds well under deskmate.

Reply 582 of 929, by MobyGamer

User metadata
Rank Member
Rank
Member

If you want to make a video showing off the Tandy DAC, the following games have Tandy DAC support but *not* sound blaster support, making their digital sound unique to the Tandy DAC:

OutRun [a1] (1989)(SEGA Enterprises Ltd.) [Racing - Driving].zip
Wings of Fury (1989)(Brøderbund Software, Inc.) [Action].zip

I can also provide you with Music Studio 3.0 if you want another Deskmate program that uses digital samples.

Once you feel your code is complete, I'll happy to test it, and I'm willing to do recordings at 5, 8, 11, 16, 22, 32, 48 to see where the practical cut-off is given the PSSJ filtering.

Reply 583 of 929, by MobyGamer

User metadata
Rank Member
Rank
Member
FreddyV wrote on 2020-10-08, 08:21:

We can move a Jumper on the Tandy TL to bypass the amplifier and transform the input to a Line Out.

The documentation suggests that on a TL/2, this is only for the microphone input, to change to a line input. The TL/3 does have a second jumper to affect output, but you and I have TL/2s.

Last edited by MobyGamer on 2020-10-09, 04:25. Edited 1 time in total.

Reply 584 of 929, by kdr

User metadata
Rank Member
Rank
Member
FreddyV wrote on 2020-10-08, 08:21:

I use 48KHz as output to stress/Test the mixing speed, of course there is no guantee that the sound is really better.
It may be much more improved by using the 16Bit mixing code at a lower output frequency.

What about mixing 16-bit samples at 22khz and then outputting at 44khz using dithering to extract an extra ~1 bit of dynamic range?

Reply 585 of 929, by MobyGamer

User metadata
Rank Member
Rank
Member

That doesn't seem like a viable tradeoff. You'd gain up to 24dB dynamic range but you'd introduce harmonic distortion (unless I'm missing something, there's no realtime way to brickwall filter on sub-Pentium systems).

Dithering going from 16-bit to 8-bit isn't a win unless you can noise shape the dithering into bands above 16 KHz so that it isn't audible by most people. Otherwise you hear it in softer parts, and if your sampling rate is anything under 32KHz it is really annoying.

Reply 587 of 929, by FreddyV

User metadata
Rank Oldbie
Rank
Oldbie

I will release the new version soon, if there is something to add that can be simple to do, tell me.

Current change log:
17/10/2020 Beta 22
- Fixed one bug for the Tandy Port config
- Added OPL3LPT Support
- Changed in the way the mixing buffers are managed.
- ! Added the support for the Tandy DAC output (DMA)

Reply 588 of 929, by MobyGamer

User metadata
Rank Member
Rank
Member

If there is any way to add more keyboard controls to some dialogs, like on/off for 16-bit mixing and/or EMS usage, that would be cool and require less people to use a mouse when testing. But if the code isn't set up for it, no need to worry about it.

Reply 589 of 929, by zyga64

User metadata
Rank Oldbie
Rank
Oldbie

Probably big thing, but... Is there possibility to add support for XMS memory in addition to EMS ?
I know that XT can't use XMS, but for 286 this will be useful (when there is no EMS driver available, you can't use EMM386, and UMB_EMS4 is too slow)

1) VLSI SCAMP /286@20 /4M /CL-GD5422 /CMI8330
2) i420EX /486DX33 /16M /TGUI9440 /GUS+ALS100+MT32PI
3) i430FX /K6-2@400 /64M /Rage Pro PCI /ES1370+YMF718
4) i440BX /P!!!750 /256M /MX440 /SBLive!
5) iB75 /3470s /4G /HD7750 /HDA

Reply 590 of 929, by MobyGamer

User metadata
Rank Member
Rank
Member
zyga64 wrote on 2020-10-14, 17:03:

Probably big thing, but... Is there possibility to add support for XMS memory in addition to EMS ?
I know that XT can't use XMS, but for 286 this will be useful (when there is no EMS driver available, you can't use EMM386, and UMB_EMS4 is too slow)

This is possible, but there's a speed penalty. True hardware EMS is a memory paging mechanism, so it's very fast. XMS is a memory copying mechanism, which is slower. To make it usable at all, all samples being mixed in a tick would need to be copied from XMS to conventional memory. XMS does provide for partial copying; you can specify both the block and an offset into the block, so only the sample data needed for that tick can be copied.

If ModmXT's implementation already uses EMS to copy samples in this way, then there would be no difference in speed to implement XMS 😀 But if it uses EMS to map all samples to their own page/handles and just reference them by memory handle location, use of EMS is nearly as fast as conventional memory, and XMS would be much slower.

(For the record, XTs can indeed use XMS if it is provided by a secondary handler like QRAM or DR-DOS's HIDOS.SYS. XMS is a memory access API and is not married to 286+ extended memory.)

Reply 591 of 929, by zyga64

User metadata
Rank Oldbie
Rank
Oldbie
MobyGamer wrote on 2020-10-15, 17:21:

(...)
(For the record, XTs can indeed use XMS if it is provided by a secondary handler like QRAM or DR-DOS's HIDOS.SYS. XMS is a memory access API and is not married to 286+ extended memory.)

Thank you ! I learn something new every day !
BTW. I have sources for EMS drivers for a few 286 chipsets, but unfortunately my knowledge of assembly language is not good enough...

1) VLSI SCAMP /286@20 /4M /CL-GD5422 /CMI8330
2) i420EX /486DX33 /16M /TGUI9440 /GUS+ALS100+MT32PI
3) i430FX /K6-2@400 /64M /Rage Pro PCI /ES1370+YMF718
4) i440BX /P!!!750 /256M /MX440 /SBLive!
5) iB75 /3470s /4G /HD7750 /HDA

Reply 592 of 929, by FreddyV

User metadata
Rank Oldbie
Rank
Oldbie
MobyGamer wrote on 2020-10-14, 15:09:

If there is any way to add more keyboard controls to some dialogs, like on/off for 16-bit mixing and/or EMS usage, that would be cool and require less people to use a mouse when testing. But if the code isn't set up for it, no need to worry about it.

It is done, Basically use the first letter of the Words.
Press 1 in the option to add/Remove 16Bit mixing for example.
It is just a lack of documentation 😉

EMS On/Off is probably not done, but I see no visible difference in performance, so why not use EMS ? 😀

Reply 593 of 929, by FreddyV

User metadata
Rank Oldbie
Rank
Oldbie
zyga64 wrote on 2020-10-14, 17:03:

Probably big thing, but... Is there possibility to add support for XMS memory in addition to EMS ?
I know that XT can't use XMS, but for 286 this will be useful (when there is no EMS driver available, you can't use EMM386, and UMB_EMS4 is too slow)

I even don't know how XMS is working.

I basically jumped form EMS to 32Bit protected mode in my coding experience 😀

Reply 594 of 929, by FreddyV

User metadata
Rank Oldbie
Rank
Oldbie

Hi,

You can now Play with / test the Tandy DAC.
This new version is useful only if you want to test the OPL3LPT and the Tandy DAC.
Use of an EMS card is recommended for big modules.

18/10/2020 Beta 22
- Fixed one bug for the Tandy Port config
- Added OPL3LPT Support
- Changed in the way the mixing buffers are managed.
- ! Added the support for the Tandy DAC output (DMA)
WARNING: Don't use Pause, it does not work.

Attachments

  • Filename
    MODMXT22.zip
    File size
    150.59 KiB
    Downloads
    127 downloads
    File license
    Public domain

Reply 596 of 929, by root42

User metadata
Rank l33t
Rank
l33t

Well, others also need to download, to see if you broke anything else! 😀

YouTube and Bonus
80486DX@33 MHz, 16 MiB RAM, Tseng ET4000 1 MiB, SnarkBarker & GUSar Lite, PC MIDI Card+X2+SC55+MT32, OSSC

Reply 598 of 929, by matze79

User metadata
Rank l33t
Rank
l33t
FreddyV wrote on 2019-04-09, 18:52:
Hi again, […]
Show full quote

Hi again,

Somebody asked me the Tandy 1000 DMA DAC support and I see a project for a Covox Sound Master in the forum.
I believe Mod Master must support Sound Master 😀

Can anybody help me to have documentation and to test it ?

I checked after I posted it, Mod MAster support Sound Master with Direct I/O on port 388h, but not DMA

It should work with custom dac feature already

https://www.retrokits.de - blog, retro projects, hdd clicker, diy soundcards etc
https://www.retroianer.de - german retro computer board