VOGONS


Reply 120 of 929, by FreddyV

User metadata
Rank Oldbie
Rank
Oldbie

Hi,

When I improved the precision for the Divisor, it did change a little the final increment and cause a problem at 44KHz.
Correct something, it reveal another problem -)

I did hear a note problem on the stardust memories video from Roots42, some notes are incorrect at the end.
I did the calculation and the difference is 0.2 % ! So strange we can hear a difference like this.

Anyway, When I developped my software at that time I surely did not play/Changed the replay frequency all the time and a 8 Bit Precision for the decimal increment was sufficient.
I notice that GLX and some other code I did read use 16 bit.
I used also 8 bit decimal in USMPlay, nobody found a problem with this even with an higher range of notes (In .XM and .IT)
But honestly, me and almost everybody who used it were using a GUS.

To correct I will need to use CX, so It will slow down a "little".

I also almost completed the Stereo mixing Then, next release will be with 12 bit decimal précision (Not 16 to save some Divisions) and Stereo.

If wou want the code, can you send me a messager with your email ?
You will see that my code is totally different from all the other players code available here and there.
There are comments, procedure and functions everywhere, it increase the code flexsibility, but there is much more to read and the code size is bigger.

Reply 121 of 929, by alvaro84

User metadata
Rank Member
Rank
Member
alvaro84 wrote:

...on my permanent 286-20 build with GUS 3.74 and ESS 688. On that machine it has a fair chance to be the best modplayer.

It's a promising start, with a few caveats. Of course some mods sound different than what I'm used to. If I meet them and you'd like I'll take notes next time I fire up the 286.

The performance: I'm just blown away. At 43400Hz even chariot.s3m (https://modarchive.org/index.php?request=view … eid&query=34594) could play without skipping or stuttering. The screen often froze during playback but the player could somehow recover from lagging behind and caught up. Again, it's a 16-channel s3m on a 20-MHz 286 (at WS0 so this is my absolute fastest 286 so far).

On the hardware caveats: It was 43400Hz for a reason. ModMaster let me set higher frequencies but the ESS started to play everything at a lower pitch - so apparently there wasn't a higher frequency above 43.4kHz. I have no idea if it's ModMaster's problem or the soundcard's because GLX wouldn't let me go above 22kHz.

The other is the GUS. GUS' ISA compatibility seems a bit dodgy, which is funny talking about a strictly ISA only card. Its different versions have various incompatibilities. The Interwave based PnP and the "good old" 3.74 usually work well with late ISA chipsets like KT7A or 694T. But with 2.4 I had many problems, even in older boards like the Abit AB-PB4 in my aforementioned PCI 486. Well, 286 is the opposite end of the spectrum, it's among the earliest that can accommodate GUS cards. In my Octek Fox II (Headland HT12A chipset) the old 2.4 was the better choice instead of the 3.74 I've originally kept in it.

In this 286 ModMaster drops notes with every (GF1 based) GUS cards. With 3.74 or the Primax clone it's so serious you can hardly hear a few notes, let alone several at the same time. With 2.4 it's surprisingly much better but some of the notes are still missing. It must be some I/O timing problem and not necessarily in ModMaster's code - though it seems to be less tolerant than other programs like GLX or Pinball Fantasies (which is a blast with GUS, and plays flawlessly on this machine, probably even without turbo 😁). I know, it's an extreme setup but I still have to let you know 😅

On the software side, there are mods that don't load at all and come back with the not enough memory to load message. Among them there's a favourite of mine, dope.mod https://modarchive.org/index.php?request=view … eid&query=35344, the nice soundtrack of a nice demo. It's 28CH type mod, and, well, half of the file is taken by the patterns. I guess this must be the problem because ModMaster loads mods with more samples, ones that normally wouldn't fit in the lower 640k. It either writes the blinking sample count or, if I enable EMS, it uses it (it must be the case with chariot.s3m too). Yes, I have a proper EMS driver for this late 286 and the board's filled with 4 MiB of SIMM goodness 😁

Is there a hope to load these mods? It isn't the mentioned 1-GiB XM category which would be completely hopeless to load on such old hardware anyway 😁

Oh, I forgot to tell that it sounds much better on ESS 688 than on CT2290 which had some sort of periodic cracking.

Shame on us, doomed from the start
May God have mercy on our dirty little hearts

Reply 122 of 929, by FreddyV

User metadata
Rank Oldbie
Rank
Oldbie

Hi,

I finished the Stereo support and the more accurate decimal increment.
The strange note on stardust memories at 44KHz is gone, it may now solve some problems.
I also hear a really small difference in libertin.mod as well.

EDIT: Rev 8 Bugged, removed

Regarding Stereo support, there is a small difference in performance. (Less than 1%)
When GLX needs 11KHz, Mod Master has no problem at all at 13KHz. (8 Channel module)

once it's completely finished and you won't be working on it any more

I can not know when I will no more work on it 😀
As long as there is bugs to corect.

@Alvaro84:
Thanks for your tests,

The problem at 44KHz is probably fixed with this release.

I also have as an objective to play DOPE.MOD, by reducing the memory needed for the partition.
I may add a light .XM support, but if I start to do this, everybody will complain about the missing effects...

Regarding the GUS, I don't know it you saw the video, but Mod Master has no problem to work on my GUS Classic 3.4 on a 8088 at 4.77MHz
It is also tested on a Pentium 3 and a 486. Then, I have no clue why it does not work for the moment.

If you want to send me report on some modules, you don't need to use your 286, you can use DOSBox, it is faster to test.

Regards,
FreddyV

Last edited by FreddyV on 2019-07-30, 06:33. Edited 1 time in total.

Reply 123 of 929, by MobyGamer

User metadata
Rank Member
Rank
Member
FreddyV wrote:

I did the calculation and the difference is 0.2 % ! So strange we can hear a difference like this.

Depends on the frequency and the loop size, but yes, it's audible. (At least, it is to me, I'm a trained musician whose been working with this kind of thing for very many years.)

If wou want the code, can you send me a messager with your email ?
You will see that my code is totally different from all the other players code available here and there.
There are comments, procedure and functions everywhere, it increase the code flexsibility, but there is much more to read and the code size is bigger.

PM sent (and I commented a little on this in the PM).

alvaro84 wrote:

It's 28CH type mod, and, well, half of the file is taken by the patterns.
...
Is there a hope to load these mods?

Because it's a real-mode program, it's not realistic to try to code for the use case where the pattern data won't even fit in the lower 640K of RAM. Is it possible with hardware EMS that supports bank switching (instead of emulated EMS which is just memory copying)? Yes, but it's still somewhat impractical. dope.mod was made in FT2 which you'll recall is a pmode program.

For FreddyV to add support for something like that, he would have to modify the program to use less memory space for empty rows or channels. There is a lot of empty space in dope.mod...

FreddyV wrote:

I may add a light .XM support, but if I start to do this, everybody will complain about the missing effects...

I wouldn't do this until/unless you're really ready to support XM properly. The best .XMs have instrument envelopes, 16-bit samples, samples > than 64k or 128k, etc. It is not something to be taken lightly, and any .xm that uses more than simple effects is going to sound very bad. (I never added .XM support to my own player because of this, and I never added .it support for other philosophical reasons.)

If you want to send me report on some modules, you don't need to use your 286, you can use DOSBox, it is faster to test.

Just be sure the error is actually the program and not dosbox. dosbox isn't perfect...

Reply 124 of 929, by alvaro84

User metadata
Rank Member
Rank
Member
MobyGamer wrote:
FreddyV wrote:

Because it's a real-mode program, it's not realistic to try to code for the use case where the pattern data won't even fit in the lower 640K of RAM. Is it possible with hardware EMS that supports bank switching (instead of emulated EMS which is just memory copying)? Yes, but it's still somewhat impractical. dope.mod was made in FT2 which you'll recall is a pmode program.

Oh, there's a way - you can use some more compact format for the patterns. Just look up S3M docs and you'll see what I'm talking about. MOD patterns are extremely sparse.

Just be sure the error is actually the program and not dosbox. dosbox isn't perfect...

Real hardware has its quirks too. I'll come back with more details later.

Shame on us, doomed from the start
May God have mercy on our dirty little hearts

Reply 125 of 929, by MobyGamer

User metadata
Rank Member
Rank
Member
alvaro84 wrote:

Real hardware has its quirks too.

Not sure what your point is in the context of testing a modplayer. The last thing you want is for the emulator to "smooth things over", like dosbox does. For example, you could set rates above 44KHz for hardware that doesn't go that high, and on real hardware it would sound wrong, but in dosbox it would "honor" the higher rate and sound correct.

Reply 126 of 929, by FreddyV

User metadata
Rank Oldbie
Rank
Oldbie

Hi.

Mod master use 6 byte per note. It can be reduced to 4 if i store the note and no more the volume column.
I am also thinking about compressing the partition Like s3m but this Will increase the load time. (And speed up the player except for note jump)

I know what adding xm and it support as i already did it.
It instruments are even more complex but so powerfull Chen correctly used.

Test mod master under DosBox is ok if the errors are in mod effects.

I already have some with problems.

Reply 127 of 929, by alvaro84

User metadata
Rank Member
Rank
Member
MobyGamer wrote:
alvaro84 wrote:

Not sure what your point is in the context of testing a modplayer.

My point is, I'm not sure if the problem is in the player itself when hardware is just as bug prone as an emulator (or, in this case, much worse).

Btw, DMA clicks are back, at most mixing frequencies. 41500Hz is fine though. Others usually sound like there's a little gap between the buffers.

And 43400 is still the top. And I still don't know if it's the ESS' limit.

Shame on us, doomed from the start
May God have mercy on our dirty little hearts

Reply 129 of 929, by Scali

User metadata
Rank l33t
Rank
l33t

I had a similar problem with AdlibTracker II: patterns can be up to 22 channels wide, and 256 rows long. So without any compression, they eat up a lot of memory.
Since any unused columns are 0, I implemented a very simple zero-length compression scheme, which could be unpacked in realtime.

http://scalibq.wordpress.com/just-keeping-it- … ro-programming/

Reply 130 of 929, by root42

User metadata
Rank l33t
Rank
l33t

But Adlib Tracker II is for faster systems anyway, right? Those probably have lots of expanded memory. At least on my 386 AT2 is unusably slow. 😁

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

Reply 131 of 929, by Scali

User metadata
Rank l33t
Rank
l33t
root42 wrote:

But Adlib Tracker II is for faster systems anyway, right?

Not necessarily. The current version is implemented in a 'lazy' way, and makes assumptions about memory and CPU to avoid having to deal with any limitations.

root42 wrote:

Those probably have lots of expanded memory. At least on my 386 AT2 is unusably slow. 😁

Well, that's the thing. Because of the AT2 design, you need 5 MB just to play a simple song.
It could be much faster and use much less memory, if it were just designed differently.

Anyway, in the end I didn't finish the 16-bit player for AT2. I ended up just doing a capture of the register writes, then pre-process the data, and played the song that way. This allows any PC, even an 8088 at 4.77 MHz, to play any AT2 song.
I used an AT2 song in my Outline 2018 Invitro that way: https://www.pouet.net/prod.php?which=75755
The original song required at least a 486SX-25 with 5 MB to play, but the invitro plays it on a 640k 8088.

Perhaps that is an area for GLX Player to explore... Preprocessors were used a lot for MOD files on the Amiga, to make them faster and more compact. The Player is the most popular one: https://www.pouet.net/prod.php?which=19922

http://scalibq.wordpress.com/just-keeping-it- … ro-programming/

Reply 132 of 929, by FreddyV

User metadata
Rank Oldbie
Rank
Oldbie

Perhaps that is an area for GLX Player to explore

GLX 😀

For .MOD replay, you need to store the volume/Period value for all the ticks, Code may be smaller, but the "partition" will be bigger, even compressed.
And Of course, code is much faster if we directly store the samples increment values, to avoid the DIV / MUL.

I did this partially for USMPlay.
I wrote a file converter to convert the module in the Player internal format -> No more file loader Needed.
it does also generate a source code file to remove the unused functions at compiling time.

I was not aware it did exist on amiga world, I was thinking I was the first to do it 😀

Reply 133 of 929, by Scali

User metadata
Rank l33t
Rank
l33t
FreddyV wrote:

GLX 😀

Sorry, Mod Master 😀

FreddyV wrote:

I was not aware it did exist on amiga world, I was thinking I was the first to do it 😀

The original ProTracker routines were not very optimized for speed/storage. Especially some effects like fine-tune were really slow, doing linear search through tables.
So as with everything, Amiga coders started to optimize like crazy.
Where ProTracker might need about 20 scanlines to play a single row, an optimized routine can do it in 4 or 5.

Some other clever tricks they do is to remove any unused instruments and patterns, and cut any looped samples after the loop (because it's never played anyway).

http://scalibq.wordpress.com/just-keeping-it- … ro-programming/

Reply 134 of 929, by FreddyV

User metadata
Rank Oldbie
Rank
Oldbie

Some other clever tricks they do is to remove any unused instruments and patterns, and cut any looped samples after the loop (because it's never played anyway).

It is the first thing I checked today, thinking about DOPE.MOD and I saw that Mod Master Load all the patterns…
I am obliged to remove the sample after the loop, as I extend the loop to speedup the mixing.

I don't use finetune anymore, but C#4 adjust, but It require MUL/DIV (Not used on all the samples anyway)
I did not compute the CPU time used by the partition read yet.

Reply 135 of 929, by FreddyV

User metadata
Rank Oldbie
Rank
Oldbie

Hi,

MODM XT 9 is here

I corrected the mixing bugs from the Rev 8 and removed the .MOD Files unused pattern loading.

But this is not sufficient to load DOPE.MOD anyway. (Load 60 pattern instead of 70)
Reduce pattern size be removing the volume column should be Ok.

FreddyV

Filename
MODMXT9.zip
File size
74.16 KiB
Downloads
84 downloads
File license
Fair use/fair dealing exception

After testing on the Sound Blaster Pro and PC1640:
I discovered that if I use the 22727Hz frequency in stereo, the music is slow down.
If I go down to 21739, It is Ok.
This seems to be the same problem as Alvaro84.

I use the High speed Autoinit DMA Command and all the variables/Values seems to be correct.
This seems to be an hardware issue, like the ISA Bus speed on this machine.
To be tested on the Sound Galaxy Pro….

It looks like if the sound Blaster Pro is limitted in reality at 21739, not 22100 (Anyway, we can't set 22100)
I can't believe I can still learn after all this time….

If I use 22727 Hz, It seems that the SB Pro more or less crash and the sound is bad when I play other music.
Then, Sometimes, it is correct again.
I Needed to power down the PC to have a correct sound all the time.

Reply 136 of 929, by bakemono

User metadata
Rank Oldbie
Rank
Oldbie
FreddyV wrote:

After testing on the Sound Blaster Pro and PC1640:
I discovered that if I use the 22727Hz frequency in stereo, the music is slow down.
If I go down to 21739, It is Ok.

It looks like if the sound Blaster Pro is limitted in reality at 21739, not 22100 (Anyway, we can't set 22100)
I can't believe I can still learn after all this time….

I tried this version on my 8MHz 286 with ESS1868 card and observed the same thing. 21500Hz is good (or 43000Hz in mono) but going to 22000/44000Hz causes a drop in speed/pitch.

All the Mods I tried seemed to play fine at 21500Hz stereo though, even one with 10 channels.

Reply 137 of 929, by alvaro84

User metadata
Rank Member
Rank
Member

It must be for a reason that even Visual Player or Impulse Tracker don't let you go above 21739 (stereo) or 43478 Hz (mono).

At last I had some time to try ModMaster 9 on the 286 and I found that the DMA clicks are gone again, great!

But, something's wrong with the MTM loader. It's OK in MM7 but in MM9 the patterns are totally garbled from the second on and even MM may quit after trying to play the second pattern for a while.

About the MOD effects: could you have a look at EHA-CH07.MOD? Some notes are lost/play in wrong pitch. It's a modern piece and old players usually don't like it but I don't know them in depth so I really don't know what the problem is.

https://modarchive.org/index.php?request=view … eid&query=93695

(OMG, I just said "modern" 😲 It's the soundtrack of 20-year-old demo...)

Shame on us, doomed from the start
May God have mercy on our dirty little hearts

Reply 139 of 929, by FreddyV

User metadata
Rank Oldbie
Rank
Oldbie

About the MOD effects: could you have a look at EHA-CH07.MOD? Some notes are lost/play in wrong pitch. It's a modern piece and old players usually don't like it but I don't know them in depth so I really don't know what the problem is.

Hi,
Yes, the problem is that this module use too many octaves, it use even 6 octaves where Mod master is limited to 3 or 5 for compatibility reasons.

If you change the octaves number it is better, but some notes are still missing (C7)

I should add a other option, for 6 Octaves and put this value as default…

1999 is modern for Mod Master as I stopped its dev in 1996 😀