nukeykt / Nuked-SC55

Roland SC-55 series emulation
Other
285 stars 33 forks source link

Sc-55 Mk1 gives Buffer error, ah geez #76

Closed Karmeck closed 1 month ago

Karmeck commented 1 month ago

When playing 08 - Ah, Geez!.mid (among others) in Falcosoft midi player 08 - Ah, Geez!.zip

I (we, see Vogons thread) get "MIDI Buff. Full"

This is on both 1.20 and 1.21 rom.

This error is not present on real hardware sc-55 mk1, rom 1.20

Karmeck commented 1 month ago

There has been an error in my reporting. Plz stand by. Above still true for 1.20, emulator.

Karmeck commented 1 month ago

The above is now (confirmed) true for 1.01 and 1.21 of the rom.

Kappa971 commented 1 month ago

I extracted the midi tracks from the "DUKE3D.GRP" file with SLADE (we are talking about Duke Nukem 3D updated to version 1.5). The tracks are: AHGEEZ.MID (E1L7) XPLASMA.MID (E2L8) GLOOMY.MID (E2L10)

When playing the following tracks in a midi player such as Windows Media Player or Falcosoft MIDI Player with LoopMIDI virtual cable connected to Nuked SC-55 (SC-55 mk1), the emulator returns the error MIDI Buff. Full! and the tracks are playing incorrectly. OS Windows 11.

The error is not present in DOSBox while playing the game and according to @Karmeck, it doesn't happen on real hardware under any circumstances.

Falcosoft commented 1 month ago

Windows Media Player or Falcosoft MIDI Player with LoopMIDI virtual cable connected

Actually it happens with all Windows based Midi players (Van basco\Winamp\MPC-HC\GNMidi\Tom's MIDI player\MIDITrail among others) and also with the DOS based DosMid player when used in DosBox. Moreover it seems that not only with LoopMidi (Midi-Yoke is also tested and it is affected). The tests were made on Windows 10.

markanini commented 1 month ago

I can confirm on Windows 11 using FSMP for midi playback with 1.21 rom.

image

nukeykt commented 1 month ago

Duke 3D music is not normal MID, it uses extended EMIDI format. EMIDI allows to disable specific tracks depending on selected music device. Composers used this feature to tweak instrumentation for FM and GUS sound cards, thus such EMIDI file will have multiple tracks with duplicated notes/controller changes. Normal MIDI player doesn't know about EMIDI and will just play ALL tracks and will end up sending too many data to sound device.

Kappa971 commented 1 month ago

Duke 3D music is not normal MID, it uses extended EMIDI format. EMIDI allows to disable specific tracks depending on selected music device. Composers used this feature to tweak instrumentation for FM and GUS sound cards, thus such EMIDI file will have multiple tracks with duplicated notes/controller changes. Normal MIDI player doesn't know about EMIDI and will just play ALL tracks and will end up sending too many data to sound device.

Why is there no overload on real SC-55 mk1?

nukeykt commented 1 month ago

b47545511d3b0f1ce59139e90bbf24e80ec7731b should improve situation

Kappa971 commented 1 month ago

b475455 should improve situation

The problem seems solved, thanks!