• Please review our updated Terms and Rules here

PROGRAMMING the IBM Music Feature

deathshadow

Veteran Member
Joined
Jan 4, 2011
Messages
1,378
I'm looking for hard info and/or explanation of programming said card... specifically since it's SUPPOSED to be a FB-01 on a card, if it's truly capable of acting as a standard MIDI device and on what ports it's configured. I'm hoping to have a FB-01 in my hands sometime next week -- so I'll be able to figure out what it'll sound like -- but hard info on ACTUALLY programming it seems nonexistant...

I mean, the wiki here has all sorts of port info, but it looks mostly like gibberish. Does anyone have a scan of something like say... the manual from IBM or something that gives a bit more meaningful info?
 
The tech ref link appears broken, but it might be just me. I have the tech ref manual and am willing to scan it for you; let me know if the above link is non-functional.

The IBM Music Feature Card did not have the built-in reverb that the MT-32/LAPC-1 did, and it's FM synthesis did not sound as natural as Roland's hybrid LA Synthesis, so as far as natural-sounding music goes, it did indeed sound worse than the MT-32. The Music Feature/FB-01 is a 4-operator FM chip which has different advantages: Cleaner sound at a higher output rate (MT-32 was limited to 32KHz output), and being a 4-op FM it has completely reprogrammable instruments/sounds. (The FB-01 was an early favorite synth of atonal/detuned composers for its ability to tune instruments +/-128 cents away from center.)

However, the Music Feature card itself was more powerful than most people realize: It has two 8253 programmable interrupt timers on it, and the board can fire hardware interrupts based on the timers (IIRC). You could also put two boards in a system to get a total of 16 voices instead of 8.
 
Sorry, I didn't want to check the link from work, and just assumed it was still valid. I do have a local copy of the same file at home, however, and can make it available later this evening.

However, the Music Feature card itself was more powerful than most people realize: It has two 8253 programmable interrupt timers on it, and the board can fire hardware interrupts based on the timers (IIRC)..

Not to sound completely ignorant (I am genuinely curious), but for what purpose might these additional PITs be used?
 
Ohhhhhh, right... Thanks for clearing that up... ;)

I'm under the impression there is either some significance to there being two, however, or that there are potential uses outside of the IMFC itself?
 
Last edited:
As for the IMFC itself, yes it's an Yamaha FB-01 on a card, except that it replaces the I/O ports of the front panel interface with the internal parallel interface used for host comunication (the panel was 100% firmware-driven, so you don't need to care about that). It also got two handy timers tied to a selectable IRQ line and it has far more options than the LAPC-I on where to route given MIDI messages sendt/received from both the host interface and the external breakout box. It can also interrupt when certain transmittion signals are activated.

Not to sound completely ignorant (I am genuinely curious), but for what purpose might these additional PITs be used?
It's actually 3 of them, but two are connected in series to allow for very long intervals.

I assume one is for timing small ticks, like sixteenths or thirtytwoths, while the other is for larger ticks, like a "change section of tune played" function or something. They can be used for anything, which is great as it doesn't even need to be related to the music at all!

But it may also be just coincidence. The PIT has 3 timers, and it can be considered a waste of hardware to only use one of them in the hardware design.

You could also put two boards in a system to get a total of 16 voices instead of 8.
you can actually have up to 4 cards in a system at once, but the later two I/O address settings aren't documented. I don't know if the FB-01 supports more than 2 units in a MIDI chain, but that's in case external MIDI if you want to drive all the cards simultaneously using a "master-slave(s)" setup.
 
Last edited:
Just for reference:
Timer A (chanel 0) ticks with 2uS intervals (0.5MHz) and can clock at between 4uS (250KHz) and 131.07mS (7.63Hz).
Timer B (chanel 1*chanel 2) ticks with 0.5uS intervals (2MHz) and can clock at from 2uS (500KHz) to 35 minutes, 47 Seconds and 418.1125 mS (0.000467Hz).

If I was to write a game or anything for the card, then I would problably use Timer A for the game engine ticks, and Timer B for the music engine ticks.
 
If I was to write a game or anything for the card, then I would problably use Timer A for the game engine ticks, and Timer B for the music engine ticks.

So, this makes sense if you are designing some sort of proprietary sequencer/composition package, but why restrict a game like that, as opposed to just using the system timers?

Also, the Ad Lib MSC has two accessible timers via the YM3812 (albeit, with an incomplete IRQ circuit), and, as I'd started to mention earlier but then edited out, the Ad Lib Gold has five general-purpose, interrupt-capable timers. How, exactly, is the IMFC special in this regard?
 
Also, the Ad Lib MSC has two accessible timers via the YM3812 (albeit, with an incomplete IRQ circuit), and, as I'd started to mention earlier but then edited out, the Ad Lib Gold has five general-purpose, interrupt-capable timers. How, exactly, is the IMFC special in this regard?

In the regard that I was completely unaware of the timers on the AdLib cards (whoops!).
 
So, this makes sense if you are designing some sort of proprietary sequencer/composition package, but why restrict a game like that, as opposed to just using the system timers?

The system has only a single timer connected to IRQ, and it's already used for the Time-of-Day system. Allthough the card was mainly designed by Yamaha, IBM problably had something to say when it came to the spesifications of the interface. Remember, IBM wasn't known for cutting corners back then.

As for the example I mentioned... It was just an example to illustrate how the hardware could be used, so I didn't really care how practical it would be in terms of compability.
 
The extra timers were most likely included to help with timesync -- both of the MIDI stream (much akin to the MPU-401's "smart" mode) and of external timesources such as SMTPE.

I really don't care about all that though -- I just want to set it to dumb UART mode so I can pretend it's an external FB-01 on a normal dumb midi port.
 
Back
Top