IBM Music Feature Card/Yamaha FB-01

Developer's Forum, for discussion of bugs, code, and other developmental aspects of DOSBox.

Re: IBM Music Feature Card/Yamaha FB-01

Postby ih8registrations » 2008-9-26 @ 04:04

I also noticed some empty commands "f0f7," which I expect is wrong from looking at the FB-01 manual, but I don't know it well enough to say for sure.
ih8registrations
Oldbie
 
Posts: 931
Joined: 2003-7-25 @ 17:20

Re: IBM Music Feature Card/Yamaha FB-01

Postby Cloudschatze » 2008-9-26 @ 04:54

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...
User avatar
Cloudschatze
Oldbie
 
Posts: 1096
Joined: 2005-6-16 @ 14:32

Re: IBM Music Feature Card/Yamaha FB-01

Postby wd » 2008-9-26 @ 06:29

http://dosbox.cvs.sourceforge.net/dosbo ... iew=markup
Code: Select all
#define SYSEX_SIZE 1024
#define RAWBUF   1024
wd
DOSBox Author
 
Posts: 10818
Joined: 2003-12-03 @ 21:23

Re: IBM Music Feature Card/Yamaha FB-01

Postby Cloudschatze » 2008-9-26 @ 12:54

Thanks, WD!

I'll try re-compiling with a larger value (8192), and see if that resolves the issue.
Last edited by Cloudschatze on 2008-9-26 @ 23:18, edited 1 time in total.
User avatar
Cloudschatze
Oldbie
 
Posts: 1096
Joined: 2005-6-16 @ 14:32

Re: IBM Music Feature Card/Yamaha FB-01

Postby Great Hierophant » 2008-9-26 @ 13:24

Please make sure that, unlikely though it may be, that the increased midi buffer does not break midi support for other devices (MT-32).
User avatar
Great Hierophant
l33t
 
Posts: 2398
Joined: 2003-4-27 @ 08:20

Re: IBM Music Feature Card/Yamaha FB-01

Postby Cloudschatze » 2008-9-27 @ 23:39

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
QG1DBX_MOD.txt
Rename to .syx
(6.08 KiB) Downloaded 532 times
Last edited by Cloudschatze on 2008-9-29 @ 04:26, edited 1 time in total.
User avatar
Cloudschatze
Oldbie
 
Posts: 1096
Joined: 2005-6-16 @ 14:32

Re: IBM Music Feature Card/Yamaha FB-01

Postby ih8registrations » 2008-9-29 @ 02:54

An oops; QG1DBX_MOD.txt is an empty file:)
ih8registrations
Oldbie
 
Posts: 931
Joined: 2003-7-25 @ 17:20

Re: IBM Music Feature Card/Yamaha FB-01

Postby Cloudschatze » 2008-9-29 @ 04:36

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
dosbox.zip
DOSBox build w/SYSEX_SIZE=8192
(638.7 KiB) Downloaded 619 times
User avatar
Cloudschatze
Oldbie
 
Posts: 1096
Joined: 2005-6-16 @ 14:32

Re: IBM Music Feature Card/Yamaha FB-01

Postby ih8registrations » 2008-11-21 @ 02:21

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

http://homepage3.nifty.com/StudioBreeze ... b01-e.html

From what I can tell, he took the path of making the YM2151 emulator by Jarek Burczynski(MAME) multi-timbre.
Attachments
vfb01-20001101.tar.gz
(131.36 KiB) Downloaded 546 times
ih8registrations
Oldbie
 
Posts: 931
Joined: 2003-7-25 @ 17:20

Re: IBM Music Feature Card/Yamaha FB-01

Postby DjLc » 2008-11-23 @ 10:49

Here's a pic from my FB01:
Image

And the YM3012+YM2164:

Image

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-9-28 @ 12:50, edited 1 time in total.
User avatar
DjLc
Newbie
 
Posts: 57
Joined: 2003-8-11 @ 21:31
Location: France

Re: IBM Music Feature Card/Yamaha FB-01

Postby Great Hierophant » 2008-11-25 @ 18:59

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.
User avatar
Great Hierophant
l33t
 
Posts: 2398
Joined: 2003-4-27 @ 08:20

Re: IBM Music Feature Card/Yamaha FB-01

Postby ih8registrations » 2008-11-25 @ 22:46

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.
ih8registrations
Oldbie
 
Posts: 931
Joined: 2003-7-25 @ 17:20

Re: IBM Music Feature Card/Yamaha FB-01

Postby Great Hierophant » 2008-11-26 @ 06:34

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.
User avatar
Great Hierophant
l33t
 
Posts: 2398
Joined: 2003-4-27 @ 08:20

Re: IBM Music Feature Card/Yamaha FB-01

Postby lchiocca » 2008-12-10 @ 12:20

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!
lchiocca
Newbie
 
Posts: 17
Joined: 2006-9-17 @ 22:35

Re: IBM Music Feature Card/Yamaha FB-01

Postby jal » 2008-12-10 @ 16:01

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
User avatar
jal
Member
 
Posts: 497
Joined: 2004-1-02 @ 15:30
Location: Amersfoort, Netherlands

Re: IBM Music Feature Card/Yamaha FB-01

Postby lchiocca » 2008-12-10 @ 16:58

Sorry.. it's my home server and I guess a couple of people are downloading it simultaniously :(
lchiocca
Newbie
 
Posts: 17
Joined: 2006-9-17 @ 22:35

Re: IBM Music Feature Card/Yamaha FB-01

Postby ih8registrations » 2008-12-10 @ 18:49

Create a torrent for aggregate bandwidth or upload it to a file sharing site.
Last edited by ih8registrations on 2008-12-10 @ 21:47, edited 1 time in total.
ih8registrations
Oldbie
 
Posts: 931
Joined: 2003-7-25 @ 17:20

Re: IBM Music Feature Card/Yamaha FB-01

Postby jal » 2008-12-10 @ 19:31

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
User avatar
jal
Member
 
Posts: 497
Joined: 2004-1-02 @ 15:30
Location: Amersfoort, Netherlands

Re: IBM Music Feature Card/Yamaha FB-01

Postby emulashun » 2009-2-10 @ 23:01

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
-------------------------
emulashun
Newbie
 
Posts: 1
Joined: 2009-2-10 @ 22:42

Re: IBM Music Feature Card/Yamaha FB-01

Postby jal » 2009-2-12 @ 10:41

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
User avatar
jal
Member
 
Posts: 497
Joined: 2004-1-02 @ 15:30
Location: Amersfoort, Netherlands

PreviousNext

Return to DOSBox Development

Who is online

Users browsing this forum: No registered users and 2 guests