Hi,

> > FreeSCI 0.3.2 has been released and is now available for download. Grab
> > your tarball now, before someone else does!
> 
> The tarball appears to be missing several files from the win32 directory
> that are necessary. The files are in CVS, but not in the taball on the
> website:
> 
> freesci.dsp, scidisasm.dsp, vocabdump.dsp, getopt.c, listwords.dsp,
> freesci.def, usleep.c, and others.

Oops. Sorry!

> Should we see if there are any other large problems and do a 0.3.2a
> release?

We'll definitely have to do a 0.3.2a release; so far, it looks as if we
should be able to limit the changes to Win32-only stuff, though.

Regarding sound once again, please try the following patch:


------------------------------------------------------
--- midi_mt32gm.c.old   Mon May  7 12:18:27 2001
+++ midi_mt32gm.c       Mon May  7 12:28:00 2001
@@ -157,19 +157,20 @@
 
                        if (channel != RHYTHM_CHANNEL && xparam >= 0) {
                                if (midi_mt32_event(0xb0 | channel,
-                                                   0x65, 0x00)) return -1;
+                                                   0x65, 0x00) < 0) return -1;
                                if (midi_mt32_event(0xb0 | channel,
-                                                   0x64, 0x02)) return -1;
+                                                   0x64, 0x02) < 0) return -1;
                                if (midi_mt32_event(0xb0 | channel,
                                                    0x06, 
MIDI_mapping[instr].keyshift)) return -1;
                                if (midi_mt32_event(0xb0 | channel,
-                                                   0x65, 0x00)) return -1;
+                                                   0x65, 0x00) < 0) return -1;
                                if (midi_mt32_event(0xb0 | channel,
-                                                   0x64, 0x00)) return -1;
+                                                   0x64, 0x00) < 0) return -1;
                                if (midi_mt32_event(0xb0 | channel,
                                                    0x06, 
MIDI_mapping[instr].bender_range)) return -1;
                                if (midi_mt32_event(0xb0 | channel,
-                                                   0x26, 0x00)) return -1;
+                                                   0x26, 0x00) < 0) return -1;
                        }
                }
------------------------------------------------------

The problem appears to be caused by a bug in the alsa and ossseq sound
drivers, which return 0 on success and non-zero on error when writing MIDI
information, unlike the unixraw and win32mci drivers which work like
write(2). Therefore, the old code worked flawlessly on ossseq, whereas
it now aborts prematurely on win32mci. The patch above will break ossseq
and alsaraw in favour of win32mci and unixraw, which have slightly more
sensible return value semantics.

The correct solution would IMHO be:
a) Fix alsaraw and ossseq behaviour
b) Apply the patch above
c) Check for error conditions whereever those functions are called
d) Document the sound API

Let's discuss this in IRC later today; to release 0.3.2a quickly, we could
just disable the fine-tuning code (much less error-prone).

llap,
 Christoph


Reply via email to