VOGONS


IBM Music Feature Card/Yamaha FB-01

Topic actions

Reply 21 of 254, by Cloudschatze

User metadata
Rank Oldbie
Rank
Oldbie

I assume you're looking at the DOSBox SysEx output, in which case, yes, it's wrong. I suspect that DOSBox' MIDI handler "broke" the two larger SysEx strings into several smaller chunks, resulting in the additional, incomplete strings.

Do the DOSBox authors regularly monitor these threads? I'd love to get a response to my previous post regarding the suspected 1KB limit...

Reply 25 of 254, by Cloudschatze

User metadata
Rank Oldbie
Rank
Oldbie

Alright, well, upping the SYSEX_SIZE to 8192 (I also tried 16384 and 32768) partially fixes the issue. The first SysEx string still fails, with the erroneous F0 and F7 entries in the output, but the second SysEx string is now passed intact, and is successfully received by the FB-01. The SysEx output following this change is attached below.

At this point, I'm still trying to understand the code in MIDI.CPP. Further complicating matters is the fact that I have very little programming experience. (It was a minor miracle that I was able to get DOSBox compiled with Visual C++ 2008 Express.) 😀

If anyone has any insight, or can suggest something else to try, I'm all ears.

Attachments

  • Filename
    QG1DBX_MOD.txt
    File size
    6.08 KiB
    Downloads
    539 downloads
    File comment
    Rename to .syx
    File license
    Fair use/fair dealing exception
Last edited by Cloudschatze on 2008-09-29, 04:26. Edited 1 time in total.

Reply 27 of 254, by Cloudschatze

User metadata
Rank Oldbie
Rank
Oldbie
ih8registrations wrote:

An oops; QG1DBX_MOD.txt is an empty file:)

Odd. Fixed.

I don't believe that these incomplete SysEx captures are really of much value, since they don't include the MIDI data sent outside of the F0 and F7 bytes. Normally, all of the SysEx data should fall between the two, but this isn't happening...

Here are some additional test results with the modified DOSBox build:

Transmit FB-01 SysEx dump with "MIDI" send utility - Both SysEx strings are successfully received by the FB-01.

Initial start-up of Quest for Glory I - The first SysEx string results in error, but the second is successfully received.

Second start-up of Quest for Glory I - Both SysEx strings are successfully received.

There you have it - a ridiculous workaround. Either send the SysEx beforehand, or start the game, quit the game, start it a second time, and then you should get the correct sounds/music.

I'm attaching the modified build, in case anyone wants to play around with it. I've confirmed that the increased SYSEX_SIZE buffer does not break MT-32 support.

Attachments

  • Filename
    dosbox.zip
    File size
    638.7 KiB
    Downloads
    624 downloads
    File comment
    DOSBox build w/SYSEX_SIZE=8192
    File license
    Fair use/fair dealing exception

Reply 28 of 254, by ih8registrations

User metadata
Rank Oldbie
Rank
Oldbie

Yay, I've tracked down the MIA FB-01 emulator I talked about long ago:)

http://homepage3.nifty.com/StudioBreeze/softw … re/vfb01-e.html

From what I can tell, he took the path of making the YM2151 emulator by Jarek Burczynski(MAME) multi-timbre.

Attachments

  • Filename
    vfb01-20001101.tar.gz
    File size
    131.36 KiB
    Downloads
    552 downloads
    File license
    Fair use/fair dealing exception

Reply 29 of 254, by DjLc

User metadata
Rank Newbie
Rank
Newbie

Here's a pic from my FB01:
7uAcqmT.jpg

And the YM3012+YM2164:

VEJCF5R.jpg

I've made a while ago some recordings from FB01 here..

There's 7 banks of 48 voices. Bank 1 & 2 is like user bank (editable).
7x48=336.

Last edited by DjLc on 2015-09-28, 12:50. Edited 1 time in total.

Reply 30 of 254, by Great Hierophant

User metadata
Rank l33t
Rank
l33t

That screenshot implies that the IBM Music Feature Card and the Yamaha FB-01 share many chips in addition to the FM operators. That would make emulating the Music Feature only a matter of figuring out its midi interface.

Reply 31 of 254, by ih8registrations

User metadata
Rank Oldbie
Rank
Oldbie

Eh, they use the same chips, as I've shown in this thread. As well as posting code for programming them both, and a util with source that makes an IMFC seen as a FB-01. The IMFC is an FB-01 that interfaces through the ISA bus instead of the MPU.

Reply 32 of 254, by Great Hierophant

User metadata
Rank l33t
Rank
l33t

Very encouraging, it should not be too difficult to implement the device through the ISA bus or through an MPU interface. As Cloud and I have found out, some games like the former, most have drivers for both, but one or two work only with the latter.

The emulator uses MAME's YM2151 core. That is the most popular sound chip ever used, according to MAME. While I'm sure the core is good, the emulator is using code dated from 1999. I'm sure there have been improvements made since then. Perhaps there is a similar issue with DOSBox being unable to the YM3812 code from MAME either.

Reply 33 of 254, by lchiocca

User metadata
Rank Newbie
Rank
Newbie

Just in case someone is interested: I have scanned the original "IBM PC Music Feature Technical Reference" manual that I got along with my IMF card back in the 80s. You can find it here:
http://www.gargamel.ch/IMFTechnicalReference.pdf
Watch out: it's 50MB!

Reply 34 of 254, by jal

User metadata
Rank Oldbie
Rank
Oldbie
lchiocca wrote:

Watch out: it's 50MB!

The main problem is not the size, but the speed (or lack thereof) of the connection. So far for my 50Mbit 🙁

JAL

Reply 37 of 254, by jal

User metadata
Rank Oldbie
Rank
Oldbie
ih8registrations wrote:

Create a torrent for get aggregate bandwidth or upload it to a file sharing site.

Well, the free file sharing sites are also slow as hell. Anyway, I got it downloaded in the end, felt like the modem days 😀.

JAL

Reply 38 of 254, by emulashun

User metadata
Rank Newbie
Rank
Newbie

How do you compile vfb01 for Ubuntu 8.10 (Intrepid Ibex) - can it even be done?

I'm currently using ALSA, and have completely uninstalled Pulseaudio (it does nasty things in Ubuntu 8.10).

It would be cool to get this working on DOSBox. I figure it's a good compromise between MT-32 and Adlib. My uncle had an FB-01 when I was a kid, and if memory serves, it sounded good on SQ3 and KQ4.

Here is the output I get when running "./configure"
-----------------------------------------------------------

loading cache ./config.cache
checking for a BSD compatible install... (cached) /usr/bin/install -c
checking whether build environment is sane... yes
checking whether make sets ${MAKE}... (cached) yes
checking for working aclocal... found
checking for working autoconf... found
checking for working automake... found
checking for working autoheader... found
checking for working makeinfo... missing
checking for gcc... (cached) gcc
checking whether the C compiler (gcc -O2 -fomit-frame-pointer ) works... yes
checking whether the C compiler (gcc -O2 -fomit-frame-pointer ) is a cross-compiler... no
checking whether we are using GNU C... (cached) yes
checking whether gcc accepts -g... (cached) yes
checking how to run the C preprocessor... (cached) gcc -E
checking for ranlib... (cached) ranlib
checking for POSIXized ISC... no
checking for ANSI C header files... (cached) yes
checking for working const... (cached) yes
checking for inline... (cached) inline
checking for off_t... (cached) yes
checking for size_t... (cached) yes
checking for working alloca.h... (cached) yes
checking for alloca... (cached) yes
checking for unistd.h... (cached) yes
checking for getpagesize... (cached) yes
checking for working mmap... (cached) yes
checking for argz.h... (cached) yes
checking for limits.h... (cached) yes
checking for locale.h... (cached) yes
checking for nl_types.h... (cached) yes
checking for malloc.h... (cached) yes
checking for string.h... (cached) yes
checking for unistd.h... (cached) yes
checking for sys/param.h... (cached) yes
checking for getcwd... (cached) yes
checking for munmap... (cached) yes
checking for putenv... (cached) yes
checking for setenv... (cached) yes
checking for setlocale... (cached) yes
checking for strchr... (cached) yes
checking for strcasecmp... (cached) yes
checking for strdup... (cached) yes
checking for __argz_count... (cached) yes
checking for __argz_stringify... (cached) yes
checking for __argz_next... (cached) yes
checking for LC_MESSAGES... (cached) yes
checking whether NLS is requested... yes
checking whether included gettext is requested... no
checking for libintl.h... (cached) yes
checking for gettext in libc... (cached) yes
checking for msgfmt... (cached) /usr/bin/msgfmt
checking for dcgettext... (cached) yes
checking for gmsgfmt... (cached) /usr/bin/msgfmt
checking for xgettext... (cached) /usr/bin/xgettext
checking for catalogs to be installed... ja
checking for gettext... (cached) yes
checking for ANSI C header files... (cached) yes
checking for fcntl.h... (cached) yes
checking for strings.h... (cached) yes
checking for sys/ioctl.h... (cached) yes
checking for sys/time.h... (cached) yes
checking for unistd.h... (cached) yes
checking for working const... (cached) yes
checking whether time.h and sys/time.h may both be included... (cached) yes
checking whether gcc needs -traditional... (cached) no
checking return type of signal handlers... (cached) void
checking for gettimeofday... (cached) yes
checking for select... (cached) yes
checking for nanosleep... (cached) yes
checking for soundcard.h... (cached) no
checking for sys/soundcard.h... (cached) yes
checking for machine/soundcard.h... (cached) no
checking for dsp device... /dev/dsp
checking for midi device... /dev/midi
checking for esd-config... (cached) no
checking for ESD - version >= 0.2.8... no
*** The esd-config script installed by ESD could not be found
*** If ESD was installed in PREFIX, make sure PREFIX/bin is in
*** your path, or set the ESD_CONFIG environment variable to the
*** full path to esd-config.
creating ./config.status
creating Makefile
creating intl/Makefile
creating doc/Makefile
creating po/Makefile.in
creating vfb01/Makefile
creating config.h
config.h is unchanged
-------------------------

Reply 39 of 254, by jal

User metadata
Rank Oldbie
Rank
Oldbie
emulashun wrote:

I'm currently using ALSA, and have completely uninstalled Pulseaudio (it does nasty things in Ubuntu 8.10).

It does, but it's easily fixable. Just search the Ubuntu forums, I found a solution within 5 minutes.

JAL