MIDI to MUS conversion

Ask for help with ScummVM problems

Moderator: ScummVM Team

Post Reply
NovaCoder
Posts: 74
Joined: Wed Sep 23, 2009 11:53 pm

MIDI to MUS conversion

Post by NovaCoder »

Hi,

I'm working on a port of DOTT to the classic Amiga. The Amiga doesn't handle MIDI very well so I'm using a DOOM based MUS player. Although I found an old DOOM utility to convert MIDI to MUS files (called Midi2Mus...very strange), what I really want is some C source code that I can add to my port.

I've found this site that shows the MUS format and C code.

Can anyone help?[/url]
User avatar
Raziel
ScummVM Porter
Posts: 1522
Joined: Tue Oct 25, 2005 8:27 am
Location: a dying planet

Re: MIDI to MUS conversion

Post by Raziel »

NovaCoder wrote:Hi,

I'm working on a port of DOTT to the classic Amiga. The Amiga doesn't handle MIDI very well so I'm using a DOOM based MUS player. Although I found an old DOOM utility to convert MIDI to MUS files (called Midi2Mus...very strange), what I really want is some C source code that I can add to my port.

I've found this site that shows the MUS format and C code.

Can anyone help?
While i find this project of yours quite intruiging (as i'm an owner of a classic Amiga myself) and haven't even heard a single thing about it, i'd like to concur on this: "The Amiga doesn't handle MIDI very well"

That is not quite true.
Granted, it takes a lot of processing power away to use the tools mentioned below, but ... you'll understand my point later ... maybe ;-)

You can (as with all the other platform flavours out there) install a hardware MIDI device and play your MIDI through them (i.e. MT32, USB-based etc).
Take a look at the CAMD library for 68k and OS4.
Granted again, it takes a little bit of fiddling to get those hardware installed, but classic Amiga users are bound to fiddle on their machines, aren't they? :-)

Furthermore is there a software solution which emulates MIDI on platforms that doesn't feature a hardware device. It's called TiMIDIty and was ported to Amiga ages ago.
This solution would only take some minutes to install the software and the soundfont and (given your port supports it) off you would go.

Not that i want to discourage you on your way to convert the MIDI music (it's your project all the way), but believe me, DOTT with real MIDI and even with MIDI played through TiMIDIty sounds LOTS better than ANY conversion can bring... and I tried that.

...plus you would have more time to focus on porting the game itself ;-)



...


Then of course, i wouldn't be the porter of ScummVM to AmigaOS4 if i wouldn't ask if you tried the 68k flavour of ScummVM and played DOTT through it (just to see how it works for you)...
...and if you can't get hold of a newer version (Uwe Ryssel seems to have stopped after 0.10), have you thought about becoming the 68k maintainer of ScummVM?

Keep us updated on your project :-)

Cheers
User avatar
Kaminari
Posts: 275
Joined: Mon Oct 24, 2005 2:25 am
Location: Paris, France
Contact:

Post by Kaminari »

I seriously doubt a barebone A1200 would be enough to run a software synth like Timidity or GMPlay in iMuse mode, plus DoTT. The CAMD solution is probably the best course of action.
NovaCoder
Posts: 74
Joined: Wed Sep 23, 2009 11:53 pm

Post by NovaCoder »

Hiya guys,

I can't go the hardware midi device route as this would restrict my port too much (most of us classic guys don't have that kind of hw).

I haven't tried Timidity yet but I was also under the impression it would be too much of a load on the average 030/50mhz 64mb AGA machine.

I already have a very fast and low overhead, Amiga optimised 16 channel MUS + 16 digital channel library that doesn't need any additional hardware. It was used for the Amiga version of DOOM which has great MIDI sound (probably as good as the original SoundBaster equipped PC's back in the day).

Although I could convert all of the games MIDI files to MUS manually using a PC utility, it would be better to do it in my code (more generic). All the documentation that I've read states that MUS files are 'almost' identical to MIDI files so it should reasonably easy for someone with more skill than me to come up with some conversion code.

Another option is to use the ScummVM Adlib driver to pre-convert the MIDI to digital sound...not sure how that would sound though and I would run into size issues.

I'm not sure about fully implementing iMuse either; I might have to dumb it down a bit to get the speed up. I'm also having some trouble understanding the iMuse commands for DOTT...it's coded in a very confusing way. The ScriptV6 Start/stop music methods are never called for DOTT and it looks like it has to use a ‘sound kludge’ to route commands? It's also continually checking the status of the music for some reason (eg is it playing?).

Anyway, if I can get my nasty hack of DOTT working properly, I might also use the same code to quickly port Sam and Max. If I ever get the time to do a serious port of the latest version of ScummVM to 68k I'd have to disable large parts of it as a classic AGA machine wouldn't be able to handle anything more demanding than Sam and Max.

DOTT is already playing very well on my AGA machine in VGA 320x200 with full speech and sfx (CDROM version with the 260mb sfx file!), full speed, perfect lip-sync and 256 colours with hardy any VGA tearing....it's just adding music which I'm stuck on :roll:

The other 68k versions of ScummVM play really badly on my machine (esp sound and music which use AHI). That's why I'm doing this port.
User avatar
Raziel
ScummVM Porter
Posts: 1522
Joined: Tue Oct 25, 2005 8:27 am
Location: a dying planet

Post by Raziel »

Anyway, if I can get my nasty hack of DOTT working properly, I might also use the same code to quickly port Sam and Max. If I ever get the time to do a serious port of the latest version of ScummVM to 68k I'd have to disable large parts of it as a classic AGA machine wouldn't be able to handle anything more demanding than Sam and Max.
You will get all the needed help here if you really want to take on a port of ScummVM to 68k, at least, this is the forum to ask, isn't it? :-)

...and there are already backends that are supported that doesn't have the cpu power to compete with modern systems and still they are running ScummVM quite nicely, so ... not to distract your from your neat project, but, just give it a shot...the ScummVM team is here to help ;-)
User avatar
md5
ScummVM Developer
Posts: 2250
Joined: Thu Nov 03, 2005 9:31 pm
Location: Athens, Greece

Post by md5 »

NovaCoder wrote: I'm not sure about fully implementing iMuse either; I might have to dumb it down a bit to get the speed up. I'm also having some trouble understanding the iMuse commands for DOTT...it's coded in a very confusing way. The ScriptV6 Start/stop music methods are never called for DOTT and it looks like it has to use a ‘sound kludge’ to route commands? It's also continually checking the status of the music for some reason (eg is it playing?).

Anyway, if I can get my nasty hack of DOTT working properly, I might also use the same code to quickly port Sam and Max. If I ever get the time to do a serious port of the latest version of ScummVM to 68k I'd have to disable large parts of it as a classic AGA machine wouldn't be able to handle anything more demanding than Sam and Max.
Both DOTT and Sam'n'Max use iMuse, which is quite clever about the actions it does with MIDI music. It can crossfade tracks, mix them with one another, modify them on the fly and several other cool things... which makes it complicated.

I don't understand how your port differs from ScummVM. Are you using the ScummVM codebase, or something else?
User avatar
LogicDeLuxe
Posts: 432
Joined: Thu Nov 10, 2005 9:54 pm

Post by LogicDeLuxe »

NovaCoder wrote:I haven't tried Timidity yet but I was also under the impression it would be too much of a load on the average 030/50mhz 64mb AGA machine.
Now that is a definition of Classic Amiga completely new to me. It sounds more like the top end of the line Amiga, and someone who was serious enough to get such a machine shouldn't have any problem with connecting a simple MIDI interface to it.
I already have a very fast and low overhead, Amiga optimised 16 channel MUS + 16 digital channel library that doesn't need any additional hardware. It was used for the Amiga version of DOOM which has great MIDI sound
AfaIk, Doom can also handle standard MIDI files, not only mus. Isn't that the case with the Amiga port?
(probably as good as the original SoundBaster equipped PC's back in the day).
DOS Doom has no software synthesizer. It can play the MIDI music through MPU401 or through on-board synthesizers of several souncards of the day.
I'm not sure about fully implementing iMuse either; I might have to dumb it down a bit to get the speed up.
If you're willing to ditch iMuse, the most practical option would be using MOD versions. They did this with Monkey 1, and certainly is the best option performance wise.

I think, if you're also willing to convert all the graphics in a blitter-friendly format (which could be done on the fly during loading), the game probably could perform well on a bare Amiga 1200 (with a harddrive that is). See the Turrican games for instance, fullscreen animation with a much higher framerate than any SCUMM title, and 5 channel MOD support.
md5 wrote:Both DOTT and Sam'n'Max use iMuse, which is quite clever about the actions it does with MIDI music. It can crossfade tracks, mix them with one another, modify them on the fly and several other cool things... which makes it complicated.
Actually, that all could be done with an advanced MOD player as well.
hippy dave
Posts: 129
Joined: Mon May 05, 2008 3:37 pm

Post by hippy dave »

"classic amiga" refers to all the amiga models originally made by commodore (tho the later of those models were also manufactured by amiga inc), and running operating systems from 1.x to 3.x - the name is used to distinguish them from later computers made by other companies, which used very different hardware, and were designed to run amigaos 4.0.
(this is going from memory and a very quick glance at wikipedia, excuse me if any details are wrong :) )

i sadly no longer have a functional amiga, just fire up uae occasionally, but seeing this kind of project still makes me happy - keep up the good work 8)
NovaCoder
Posts: 74
Joined: Wed Sep 23, 2009 11:53 pm

Post by NovaCoder »

hippy dave wrote:"classic amiga" refers to all the amiga models originally made by commodore (tho the later of those models were also manufactured by amiga inc), and running operating systems from 1.x to 3.x - the name is used to distinguish them from later computers made by other companies, which used very different hardware, and were designed to run amigaos 4.0.
(this is going from memory and a very quick glance at wikipedia, excuse me if any details are wrong :) )

i sadly no longer have a functional amiga, just fire up uae occasionally, but seeing this kind of project still makes me happy - keep up the good work 8)
Hiya Dave,

Yep although my Miggy has wireless internet access, an 8GB sold state HD and VGA output...it's still a 17 year old 'classic' computer ;)

Thanks for the support :)
Post Reply