VOGONS


DOSBox ECE (for Windows & Linux)

Topic actions

Reply 1501 of 1509, by Giuliano

User metadata
Rank Newbie
Rank
Newbie

Hi everyone,

I was using DOSBox ECE r4447, and upgraded it today to r4481. I've noticed that the line below was removed from the dosbox-ece.conf file:

gusrate = 44100

I am supposing that it was also removed from the SVN version.

What was the reason behind this removal?

Does it mean that the gusrate value is now fixed at 44100? Or: does it mean that the gusrate value is now equal to the mixer's rate value?

Cheers.

Reply 1502 of 1509, by realnc

User metadata
Rank Oldbie
Rank
Oldbie
Giuliano wrote on 2022-09-17, 14:07:
I was using DOSBox ECE r4447, and upgraded it today to r4481. I've noticed that the line below was removed from the dosbox-ece.c […]
Show full quote

I was using DOSBox ECE r4447, and upgraded it today to r4481. I've noticed that the line below was removed from the dosbox-ece.conf file:

gusrate = 44100

I am supposing that it was also removed from the SVN version.

What was the reason behind this removal?

Does it mean that the gusrate value is now fixed at 44100? Or: does it mean that the gusrate value is now equal to the mixer's rate value?

I believe the GUS uses a rate that depends on the amount of the currently used channels. Apparently, dosbox now emulates this properly and thus there's no "gusrate" option anymore. The rate matches what the real hardware would use, and then it gets resampled to the mixer rate.

Reply 1503 of 1509, by jmarsh

User metadata
Rank Oldbie
Rank
Oldbie

It was removed because performing upsampling in the GUS code (rather than the mixer) blended samples that should have been left out of the output entirely. Typically this caused samples from opposite channels to be blended together, ruining stereo separation.

Reply 1504 of 1509, by videogamer555

User metadata
Rank Member
Rank
Member
Yesterplay80 wrote on 2017-02-08, 07:35:

Please post all questions concerning DOSBox ECE in this thread for now on, so we can keep other threads tidy and on topic!

I compiled a build of DOSBox ECE for Linux. Consider it highly experimental, since I only run Linux in a VM, I can't test all the features, because the VM is lacking hardware acceleration. So it would be very nice if someone could run some tests with it. It comes (or should come) with all the features of the Windows build, minus the possibility to select the midi device by name or a part of it. Please download it (link is in my signature), play with it and let me know if something's not working or missing!

What is ECE?

Reply 1505 of 1509, by morphinejh

User metadata
Rank Newbie
Rank
Newbie
videogamer555 wrote on 2022-10-18, 08:23:

What is ECE?

It stands for Enhanced Community Edition.

More details here:
https://yesterplay.net/dosboxece/

(it does look to be down at the moment though)

Update: Expired certificate at the moment.

Last edited by morphinejh on 2022-10-19, 14:12. Edited 1 time in total.

Reply 1506 of 1509, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie
morphinejh wrote on 2022-10-19, 13:50:
.... More details here: https://yesterplay.net/dosboxece/ […]
Show full quote

....
More details here:
https://yesterplay.net/dosboxece/

(it does look to be down at the moment though)

It's not down per se but it has a certificate error:

ece1.png
Filename
ece1.png
File size
154.14 KiB
Views
454 views
File license
Public domain

To be honest I never understood the Google forced https everywhere movement. Why should a simple download site that does not require any user login/data be available only through https and redirect any http connection attempts to non-working https? (It uses HTTP Strict Transport Security policy.)
So you should try an alternative browser that still enables you to add an exception even in case of non-working certificates and HTTP Strict Transport Security (HSTS) sites.

Last edited by Falcosoft on 2022-10-19, 14:17. Edited 1 time in total.

Website, Facebook, Youtube
Falcosoft Midi Player + Munt VSTi + BassMidi VSTi topic

Reply 1507 of 1509, by morphinejh

User metadata
Rank Newbie
Rank
Newbie
Falcosoft wrote on 2022-10-19, 14:05:

It's not down per se but it has a certificate error:

Good point, I updated above. I don't use Chrome directly, but rather one of its Chromium variants. I can advance through it manually, but didn't want to post that as instructions per se.

Reply 1508 of 1509, by Dr. Rabbit

User metadata
Rank Newbie
Rank
Newbie

Any idea why I can't seem to get reverb working with the integrated fluidsynth? Changing the fluid.reverb.roomsize, fluid.reverb.damping , fluid.reverb.width or fluid.reverb.level variables in dosbox-ECE.conf even to extreme numbers doesnt do anything. Reverb is enabled, of course, with fluid.reverb being "yes". I'm currently using this SC-55 soundfont.

Not a real doctor.

Reply 1509 of 1509, by morphinejh

User metadata
Rank Newbie
Rank
Newbie
Dr. Rabbit wrote on 2022-11-08, 13:54:

Any idea why I can't seem to get reverb working with the integrated fluidsynth? Changing the fluid.reverb.roomsize, fluid.reverb.damping , fluid.reverb.width or fluid.reverb.level variables in dosbox-ECE.conf even to extreme numbers doesnt do anything. Reverb is enabled, of course, with fluid.reverb being "yes". I'm currently using this SC-55 soundfont.

I think it may be related to a change in the source code that involves doing a comparison of text in [src/gui/midi_fluidsynth.h]. I commented on this a few posts ago. I believe it is the source of your problem.

In lines 94-101 the comparison will not work as they are typed:

		if (section->Get_string("fluid.reverb")=="yes")
fluid_settings_setint(settings, "synth.reverb.active", 1);
else
fluid_settings_setint(settings, "synth.reverb.active", 0);
if (section->Get_string("fluid.chorus")=="yes")
fluid_settings_setint(settings, "synth.chorus.active", 1);
else
fluid_settings_setint(settings, "synth.chorus.active", 0);

Reference:

morphinejh wrote on 2022-06-11, 03:20:
@Yesterplay80, @supin […]
Show full quote

@Yesterplay80, @supin

Yesterplay80 wrote on 2022-06-04, 00:39:
supin wrote on 2022-06-02, 16:32:

Hello.
You have an error in your code src/gui/midi_fluidsynth.h

Even though that wasn't the cause of MIDI playback not working (see above) I appreciate pointing this error out, thank you very much! That should be fixed as well.

I believe there is an error with this code. I didn't realize until I was comparing r4479 to r4477. The code in that post is doing a direct comparison between two character arrays (const char*) using ==. This is undefined behavior as it is really just comparing the value of two pointers and not the string itself. If they were C++ string types it would work, but they appear to be simple character arrays.

It is defined on line 289 of: include/setup.h
const char* Get_string(std::string const& _propname) const;

The correct way to do the comparison would be using the strcmp() function like this:

		if (strcmp(section->Get_string("reverb.active"),"yes") != 0) {
fluid_settings_setint(settings, "synth.reverb.active", 0);
} else {
fluid_settings_setint(settings, "synth.reverb.active", 1);
}

if (strcmp(section->Get_string("chorus.active"),"yes") != 0) {
fluid_settings_setint(settings, "synth.chorus.active", 0);
} else {
fluid_settings_setint(settings, "synth.chorus.active", 1);
}

Every C-string comparison should use that function. It returns 0[zero] if they match. You can find the entire file I use here:
https://github.com/morphinejh/dosboxece-opl/b … di_fluidsynth.h

The file I use has been adapted for the new fluidsynth API so it may differ slightly from what DosboxECE uses in its source, but the the string compare function is correct for any comparison.

EDIT: Adding original post for reference.

supin wrote on 2022-06-02, 16:32:
[…]
Show full quote
                fluid_settings_setint(settings, "audio.periods", atoi(section->Get_string("fluid.periods")));
fluid_settings_setint(settings, "audio.period-size", atoi(section->Get_string("fluid.periodsize")));
if (section->Get_string("fluid.reverb")=="yes")
fluid_settings_setint(settings, "synth.reverb.active", 1);
else
fluid_settings_setint(settings, "synth.reverb.active", 0);
if (section->Get_string("fluid.chorus")=="yes")
fluid_settings_setint(settings, "synth.chorus.active", 1);
else
fluid_settings_setint(settings, "synth.chorus.active", 0);