Discussion:
[Freedos-user] DOSMid - plays MIDI files on DOS via a MPU-401 interface
Mateusz Viste
2014-08-10 11:16:02 UTC
Permalink
Hi DOSers,

Today, I decided to release publicly my latest project: DOSMid.

http://dosmid.sourceforge.net

DOSMid is a MIDI player for (free)DOS. It's a real mode application
designed to run on very modest hardware configurations. It plays both
MIDI and RMID files. It's released under a BSD license.

DOSMid is not a software MIDI emulator, thus it requires a MIDI-capable
hardware available via the standard MPU-401 interface. Many sound cards
provide such interface, although some need an additional 'wavetable'
chip to produce actual MIDI sound, or a special TSR (like AWEUTIL, for
SB32/SB64 cards).

DOSMid is still in a beta phase (v0.5), but its stable, and plays all my
MIDI files right. It doesn't come with many features yet, though.
I tested it only on my SoundBlaster 64 AWE card, as well as with my MIDI
piano keyboard, and it worked well with both. Unfortunately I don't have
any other MIDI hardware, but there's no reason I am aware of that would
make it non-functional with other hardware, as long as MPU-401
compatibility is there.

enjoy!

Mateusz
Rugxulo
2014-08-12 00:07:23 UTC
Permalink
Hi,
Post by Mateusz Viste
Hi DOSers,
Today, I decided to release publicly my latest project: DOSMid.
http://dosmid.sourceforge.net
DOSMid is a MIDI player for (free)DOS. It's a real mode application
designed to run on very modest hardware configurations. It plays both
MIDI and RMID files. It's released under a BSD license.
DOSMid is not a software MIDI emulator, thus it requires a MIDI-capable
hardware available via the standard MPU-401 interface. Many sound cards
provide such interface, although some need an additional 'wavetable'
chip to produce actual MIDI sound, or a special TSR (like AWEUTIL, for
SB32/SB64 cards).
I regret that I don't have a (reliably) working P166 anymore since it
had AWE64. That would've been vaguely interesting (even to a soundcard
noob like me).
Post by Mateusz Viste
DOSMid is still in a beta phase (v0.5), but its stable, and plays all my
MIDI files right. It doesn't come with many features yet, though.
I tested it only on my SoundBlaster 64 AWE card, as well as with my MIDI
piano keyboard, and it worked well with both. Unfortunately I don't have
any other MIDI hardware, but there's no reason I am aware of that would
make it non-functional with other hardware, as long as MPU-401
compatibility is there.
enjoy!
The real question (although arguably not what DOS386 wants to hear) is
what modern emulators it works under. I assume DOSBox is okay. I
wonder about VirtualBox or QEMU. I'll have to test it there later.

In case you haven't tired of me saying it (over and over again), I'm
pretty much a noob at a lot of this stuff. My interest is very very
very casual. BUT ... having said that, I did (barely) dabble in trying
some MIDI players for DOS back in the day (several years ago).

Just for comparison, there are a few others:

http://www.bttr-software.de/forum/board_entry.php?id=9134#p9137

Some of those have sources, but some don't. I don't even remember
where I got half of them. Scene.org? Sac.SK? Obviously the simple PC
speaker one was from FreeDOS. And Allegro's PLAY (DJGPP, but only
Allegro v3 because v4 was broken??), that I even put on my RUFFIDEA
disk #3, IIRC. I think I put a small .MID of Scott Joplin's Maple Leaf
Rag (that I also found on some random place) as test. Paul Toth had
some website with lots of obscurely weird but interesting (Turbo)
Pascal stuff. It was small and neat but somewhat buggy, but I think??
it had sources.

ftp://ftp.sac.sk/pub/sac/sound/mp102.zip
http://www.zoo-logique.org/tothpaul/zip/MIDI.ZIP

Oh yeah, RealMIDI and OpenCubicPlayer are already in FreeDOS "SOUND".
But again, dunno the details, and some of these are buggy.

http://www.freedos.org/software/?cat=sound

So whatever. I'll have to test this later. Feel free to "import" an
.LSM of "DOSMid" to the "SOUND" section once it stabilizes (or I'll do
it if you can't).

P.S. I just double-checked, and SoftMPU was updated two months ago
(not that I know how to test it!). So I updated the iBiblio mirror of
that (even though it doesn't currently work with JEMM386 and needs old
MS C and MASM to rebuild, sigh):

http://bjt42.github.io/softmpu/
Mateusz Viste
2014-08-12 06:29:37 UTC
Permalink
Hello,
Post by Rugxulo
I regret that I don't have a (reliably) working P166 anymore since it
had AWE64. That would've been vaguely interesting (even to a soundcard
noob like me).
I have a SB AWE64, too! :)
In fact, this was the first reason why I started coding DOSMid. I always
liked MIDI files, unfortunately, on most of my computers they sounded...
no so well. That's only recently that I (re)discovered MIDI capabilities
of my SBAWE64, and I was amazed by the MIDI quality on it. I see people
saying that AWE64 is no reference, and that there are better cards out
there, I wonder how they sound. I bought an Aztech card with an embedded
wavetable a few days ago, just to compare (still waiting for the postman).
Anyway, AWE cards have one ugly problem: they don't have any real
MPU-401 interface, which makes things hacky - the MPU emulation is
provided by a TSR called 'AWEUTIL' that translates MPU-401 calls to its
native 'EMU8000' chip, and it's not super stable sometimes (esp. when
running protected mode, and/or using XMS memory).
Post by Rugxulo
The real question (although arguably not what DOS386 wants to hear) is
what modern emulators it works under.
I think that there's no big point in listening to MIDI on emulated
stuff. It sounds so great only on a real thing...
Post by Rugxulo
I assume DOSBox is okay. I wonder about VirtualBox or QEMU.
DOSBox works, but requires a software MIDI synth (I used fluidsynth with
success - but again, it sounds poor compared to a real quality MIDI
card, even though soundfont nowadays are 20x bigger - that's yet another
mystery of life, how today's stuff with plenty of RAM, CPU and what not
can sound crappy compared to a card built 20 years ago with 1MB of ROM
samples...).

VirtualBox - haven't tried, wouldn't believe it can make MIDI anyway. It
fails on much "simpler" things.

QEMU - haven't tried to play MIDI on it, who knows.
Post by Rugxulo
http://www.bttr-software.de/forum/board_entry.php?id=9134#p9137
Nice list - there aren't many MIDI DOS players out there, esp. when
considering "four freedoms".
Post by Rugxulo
http://www.freedos.org/software/?cat=sound
So whatever. I'll have to test this later. Feel free to "import" an
.LSM of "DOSMid" to the "SOUND" section once it stabilizes (or I'll do
it if you can't).
I don't think I have access to this LSM-computing stuff (and don't think
I need such access, unless we could integrate it with FDNPKG repos,
which sounds totally possible)
Post by Rugxulo
P.S. I just double-checked, and SoftMPU was updated two months ago
Cool piece of software, but I don't think it's much about "playing MIDI
files", it seems to be an emulator providing the MPU's "Intelligent"
mode for cards that don't support it (most cards don't have it as far as
I know, maybe only the Roland stuff had it - but there are very few
games that really need it also, since the 'intelligent' mode was more a
tool for trackers).

ciao
Mateusz
Jaroslav Beran
2014-08-12 20:16:15 UTC
Permalink
Hello,

I am working on some small game and one of points in my todo list is to
enable play background music. One possibility is to grab similar project.
But better way would be to use shared library if it is possible.

So my question is do you plan provide also shared library? :-)

Jarda
Post by Mateusz Viste
Hi DOSers,
Today, I decided to release publicly my latest project: DOSMid.
http://dosmid.sourceforge.net
DOSMid is a MIDI player for (free)DOS. It's a real mode application
designed to run on very modest hardware configurations. It plays both
MIDI and RMID files. It's released under a BSD license.
DOSMid is not a software MIDI emulator, thus it requires a MIDI-capable
hardware available via the standard MPU-401 interface. Many sound cards
provide such interface, although some need an additional 'wavetable'
chip to produce actual MIDI sound, or a special TSR (like AWEUTIL, for
SB32/SB64 cards).
DOSMid is still in a beta phase (v0.5), but its stable, and plays all my
MIDI files right. It doesn't come with many features yet, though.
I tested it only on my SoundBlaster 64 AWE card, as well as with my MIDI
piano keyboard, and it worked well with both. Unfortunately I don't have
any other MIDI hardware, but there's no reason I am aware of that would
make it non-functional with other hardware, as long as MPU-401
compatibility is there.
enjoy!
Mateusz
------------------------------------------------------------------------------
_______________________________________________
Freedos-user mailing list
https://lists.sourceforge.net/lists/listinfo/freedos-user
Mateusz Viste
2014-08-12 20:54:57 UTC
Permalink
Hi Jarda

Actually, there is no such thing like a "shared" library in DOS. Nonetheless, you can of course reuse DOSMid code (BSD, no strings attached). I wrote it so code reusal shall be easy - if you look into it, there are specialized modules for everything. The midi.c module would be the closest thing to a MIDI library. Simply snap it into your project and include its header file. You should also find usage explanations in the header. Let me know if anything is unclear, I will gladly help integrating DOSMid into your project (and improve its documentation if such need arise).

Note however, that you should probably not rely on MPU for music. Most el cheapo soundcards don't have a wavetable onboard, its something found only in high-end cards. Using midi is probably a good idea (and you are welcome to use dosmid for midi loading) but I think you should rely on FM synth (0x388 IIRC) for playback, or provide a configurable setting to the user: MPU/FM. Of course FM quality is poor, but should be acceptable for a game tune (and better than no music at all for sure).

Btw, any chance to find the beta of your game somewhere on the net already?

Mateusz
Post by Mateusz Viste
Hello,
I am working on some small game and one of points in my todo list is to
enable play background music. One possibility is to grab similar project.
But better way would be to use shared library if it is possible.
So my question is do you plan provide also shared library? :-)
Jarda
Post by Mateusz Viste
Hi DOSers,
Today, I decided to release publicly my latest project: DOSMid.
http://dosmid.sourceforge.net
DOSMid is a MIDI player for (free)DOS. It's a real mode application
designed to run on very modest hardware configurations. It plays both
MIDI and RMID files. It's released under a BSD license.
DOSMid is not a software MIDI emulator, thus it requires a
MIDI-capable
Post by Mateusz Viste
hardware available via the standard MPU-401 interface. Many sound
cards
Post by Mateusz Viste
provide such interface, although some need an additional 'wavetable'
chip to produce actual MIDI sound, or a special TSR (like AWEUTIL,
for
Post by Mateusz Viste
SB32/SB64 cards).
DOSMid is still in a beta phase (v0.5), but its stable, and plays all
my
Post by Mateusz Viste
MIDI files right. It doesn't come with many features yet, though.
I tested it only on my SoundBlaster 64 AWE card, as well as with my
MIDI
Post by Mateusz Viste
piano keyboard, and it worked well with both. Unfortunately I don't
have
Post by Mateusz Viste
any other MIDI hardware, but there's no reason I am aware of that
would
Post by Mateusz Viste
make it non-functional with other hardware, as long as MPU-401
compatibility is there.
enjoy!
Mateusz
Jaroslav Beran
2014-08-12 21:31:06 UTC
Permalink
Hi Mateusz,

I saw some possibility of creating dll in case of watcom but didnt sure if
it is usable under dos.

I understand well that BSD license allowes me to do many thinks with you
code. But idea is to provide api as shared or static library and keep it
under maintenance. In the past I read here about idea to do the same with
tcp stack. Ok, this activity will not affect legacy software, but it would
be nice to have library collection for new or active projects. In such case
all we can yield all synergies from shared code (shared knowledge,
maintenance, and so on)

I dont know if my game (another tetris) will really make happy somebody but
you can find it here:-)
https://bitbucket.org/berk76/tetris
Original aim was to play with TC 2.01 and FreeDos and test their
possibilities. Now I would like to add some additional improvements like
playing background sound and so on.

Jarda
Post by Mateusz Viste
Hi Jarda
Actually, there is no such thing like a "shared" library in DOS.
Nonetheless, you can of course reuse DOSMid code (BSD, no strings
attached). I wrote it so code reusal shall be easy - if you look into it,
there are specialized modules for everything. The midi.c module would be
the closest thing to a MIDI library. Simply snap it into your project and
include its header file. You should also find usage explanations in the
header. Let me know if anything is unclear, I will gladly help integrating
DOSMid into your project (and improve its documentation if such need arise).
Note however, that you should probably not rely on MPU for music. Most el
cheapo soundcards don't have a wavetable onboard, its something found only
in high-end cards. Using midi is probably a good idea (and you are welcome
to use dosmid for midi loading) but I think you should rely on FM synth
MPU/FM. Of course FM quality is poor, but should be acceptable for a game
tune (and better than no music at all for sure).
Btw, any chance to find the beta of your game somewhere on the net already?
Mateusz
On August 12, 2014 10:16:15 PM GMT+02:00, Jaroslav Beran <
Post by Mateusz Viste
Hello,
I am working on some small game and one of points in my todo list is to
enable play background music. One possibility is to grab similar project.
But better way would be to use shared library if it is possible.
So my question is do you plan provide also shared library? :-)
Jarda
Post by Mateusz Viste
Hi DOSers,
Today, I decided to release publicly my latest project: DOSMid.
http://dosmid.sourceforge.net
DOSMid is a MIDI player for (free)DOS. It's a real mode application
designed to run on very modest hardware configurations. It plays both
MIDI and RMID files. It's released under a BSD license.
DOSMid is not a software MIDI emulator, thus it requires a
MIDI-capable
Post by Mateusz Viste
hardware available via the standard MPU-401 interface. Many sound
cards
Post by Mateusz Viste
provide such interface, although some need an additional 'wavetable'
chip to produce actual MIDI sound, or a special TSR (like AWEUTIL,
for
Post by Mateusz Viste
SB32/SB64 cards).
DOSMid is still in a beta phase (v0.5), but its stable, and plays all
my
Post by Mateusz Viste
MIDI files right. It doesn't come with many features yet, though.
I tested it only on my SoundBlaster 64 AWE card, as well as with my
MIDI
Post by Mateusz Viste
piano keyboard, and it worked well with both. Unfortunately I don't
have
Post by Mateusz Viste
any other MIDI hardware, but there's no reason I am aware of that
would
Post by Mateusz Viste
make it non-functional with other hardware, as long as MPU-401
compatibility is there.
enjoy!
Mateusz
------------------------------------------------------------------------------
_______________________________________________
Freedos-user mailing list
https://lists.sourceforge.net/lists/listinfo/freedos-user
Mateusz Viste
2014-08-13 17:47:36 UTC
Permalink
Hi,

I confess I haven't tried to compile your tetris clone, but have a few
suggestions:
- you definitely should try to avoid these nasty BGI drivers...
(doesn't it clash with GPL anyway? I'm pretty sure it will, when you
will want to distribute an executable package),
- using a standard Makefile might be easier for many people than the
PRJ stuff (and faster to compile, no need to run the whole IDE),
- how about putting a screenshot somewhere?
- would be nice if you could distribute a pre-compiled version of the
game. I think this would be more appealing for people to try out, than
to have to compile it. Most gamers don't use a compiler very often (if
at all).

BTW, fun fact: only 32% of your sources is code. all the rest is... its
license :D

cheers,
Mateusz
Post by Jaroslav Beran
Hi Mateusz,
I saw some possibility of creating dll in case of watcom but didnt sure
if it is usable under dos.
I understand well that BSD license allowes me to do many thinks with you
code. But idea is to provide api as shared or static library and keep it
under maintenance. In the past I read here about idea to do the same
with tcp stack. Ok, this activity will not affect legacy software, but
it would be nice to have library collection for new or active projects.
In such case all we can yield all synergies from shared code (shared
knowledge, maintenance, and so on)
I dont know if my game (another tetris) will really make happy somebody
but you can find it here:-)
https://bitbucket.org/berk76/tetris
Original aim was to play with TC 2.01 and FreeDos and test their
possibilities. Now I would like to add some additional improvements like
playing background sound and so on.
Jarda
Hi Jarda
Actually, there is no such thing like a "shared" library in DOS.
Nonetheless, you can of course reuse DOSMid code (BSD, no strings
attached). I wrote it so code reusal shall be easy - if you look
into it, there are specialized modules for everything. The midi.c
module would be the closest thing to a MIDI library. Simply snap it
into your project and include its header file. You should also find
usage explanations in the header. Let me know if anything is
unclear, I will gladly help integrating DOSMid into your project
(and improve its documentation if such need arise).
Note however, that you should probably not rely on MPU for music.
Most el cheapo soundcards don't have a wavetable onboard, its
something found only in high-end cards. Using midi is probably a
good idea (and you are welcome to use dosmid for midi loading) but I
think you should rely on FM synth (0x388 IIRC) for playback, or
provide a configurable setting to the user: MPU/FM. Of course FM
quality is poor, but should be acceptable for a game tune (and
better than no music at all for sure).
Btw, any chance to find the beta of your game somewhere on the net already?
Mateusz
On August 12, 2014 10:16:15 PM GMT+02:00, Jaroslav Beran
Post by Mateusz Viste
Hello,
I am working on some small game and one of points in my todo list
is to
Post by Mateusz Viste
enable play background music. One possibility is to grab similar project.
But better way would be to use shared library if it is possible.
So my question is do you plan provide also shared library? :-)
Jarda
Post by Mateusz Viste
Hi DOSers,
Today, I decided to release publicly my latest project: DOSMid.
http://dosmid.sourceforge.net
DOSMid is a MIDI player for (free)DOS. It's a real mode application
designed to run on very modest hardware configurations. It plays
both
Post by Mateusz Viste
Post by Mateusz Viste
MIDI and RMID files. It's released under a BSD license.
DOSMid is not a software MIDI emulator, thus it requires a
MIDI-capable
Post by Mateusz Viste
hardware available via the standard MPU-401 interface. Many sound
cards
Post by Mateusz Viste
provide such interface, although some need an additional 'wavetable'
chip to produce actual MIDI sound, or a special TSR (like AWEUTIL,
for
Post by Mateusz Viste
SB32/SB64 cards).
DOSMid is still in a beta phase (v0.5), but its stable, and
plays all
Post by Mateusz Viste
my
Post by Mateusz Viste
MIDI files right. It doesn't come with many features yet, though.
I tested it only on my SoundBlaster 64 AWE card, as well as with my
MIDI
Post by Mateusz Viste
piano keyboard, and it worked well with both. Unfortunately I don't
have
Post by Mateusz Viste
any other MIDI hardware, but there's no reason I am aware of that
would
Post by Mateusz Viste
make it non-functional with other hardware, as long as MPU-401
compatibility is there.
enjoy!
Mateusz
------------------------------------------------------------------------------
_______________________________________________
Freedos-user mailing list
https://lists.sourceforge.net/lists/listinfo/freedos-user
------------------------------------------------------------------------------
_______________________________________________
Freedos-user mailing list
https://lists.sourceforge.net/lists/listinfo/freedos-user
Jaroslav Beran
2014-08-13 20:45:36 UTC
Permalink
Hello Mateusz,

thank you for your suggestions. This project is not ready for distribution
and it is still in progress.

Back to the original question. If I understand well you dont plan to
publish api as library. In my opinion it is quite pity because there is
potential for reusing it in other projects.



Jarda
Post by Mateusz Viste
Hi,
I confess I haven't tried to compile your tetris clone, but have a few
- you definitely should try to avoid these nasty BGI drivers...
(doesn't it clash with GPL anyway? I'm pretty sure it will, when you
will want to distribute an executable package),
- using a standard Makefile might be easier for many people than the
PRJ stuff (and faster to compile, no need to run the whole IDE),
- how about putting a screenshot somewhere?
- would be nice if you could distribute a pre-compiled version of the
game. I think this would be more appealing for people to try out, than
to have to compile it. Most gamers don't use a compiler very often (if
at all).
BTW, fun fact: only 32% of your sources is code. all the rest is... its
license :D
cheers,
Mateusz
Post by Jaroslav Beran
Hi Mateusz,
I saw some possibility of creating dll in case of watcom but didnt sure
if it is usable under dos.
I understand well that BSD license allowes me to do many thinks with you
code. But idea is to provide api as shared or static library and keep it
under maintenance. In the past I read here about idea to do the same
with tcp stack. Ok, this activity will not affect legacy software, but
it would be nice to have library collection for new or active projects.
In such case all we can yield all synergies from shared code (shared
knowledge, maintenance, and so on)
I dont know if my game (another tetris) will really make happy somebody
but you can find it here:-)
https://bitbucket.org/berk76/tetris
Original aim was to play with TC 2.01 and FreeDos and test their
possibilities. Now I would like to add some additional improvements like
playing background sound and so on.
Jarda
Hi Jarda
Actually, there is no such thing like a "shared" library in DOS.
Nonetheless, you can of course reuse DOSMid code (BSD, no strings
attached). I wrote it so code reusal shall be easy - if you look
into it, there are specialized modules for everything. The midi.c
module would be the closest thing to a MIDI library. Simply snap it
into your project and include its header file. You should also find
usage explanations in the header. Let me know if anything is
unclear, I will gladly help integrating DOSMid into your project
(and improve its documentation if such need arise).
Note however, that you should probably not rely on MPU for music.
Most el cheapo soundcards don't have a wavetable onboard, its
something found only in high-end cards. Using midi is probably a
good idea (and you are welcome to use dosmid for midi loading) but I
think you should rely on FM synth (0x388 IIRC) for playback, or
provide a configurable setting to the user: MPU/FM. Of course FM
quality is poor, but should be acceptable for a game tune (and
better than no music at all for sure).
Btw, any chance to find the beta of your game somewhere on the net already?
Mateusz
On August 12, 2014 10:16:15 PM GMT+02:00, Jaroslav Beran
Post by Mateusz Viste
Hello,
I am working on some small game and one of points in my todo list
is to
Post by Mateusz Viste
enable play background music. One possibility is to grab similar project.
But better way would be to use shared library if it is possible.
So my question is do you plan provide also shared library? :-)
Jarda
Post by Mateusz Viste
Hi DOSers,
Today, I decided to release publicly my latest project: DOSMid.
http://dosmid.sourceforge.net
DOSMid is a MIDI player for (free)DOS. It's a real mode
application
Post by Jaroslav Beran
Post by Mateusz Viste
Post by Mateusz Viste
designed to run on very modest hardware configurations. It plays
both
Post by Mateusz Viste
Post by Mateusz Viste
MIDI and RMID files. It's released under a BSD license.
DOSMid is not a software MIDI emulator, thus it requires a
MIDI-capable
Post by Mateusz Viste
hardware available via the standard MPU-401 interface. Many sound
cards
Post by Mateusz Viste
provide such interface, although some need an additional
'wavetable'
Post by Jaroslav Beran
Post by Mateusz Viste
Post by Mateusz Viste
chip to produce actual MIDI sound, or a special TSR (like
AWEUTIL,
Post by Jaroslav Beran
Post by Mateusz Viste
for
Post by Mateusz Viste
SB32/SB64 cards).
DOSMid is still in a beta phase (v0.5), but its stable, and
plays all
Post by Mateusz Viste
my
Post by Mateusz Viste
MIDI files right. It doesn't come with many features yet, though.
I tested it only on my SoundBlaster 64 AWE card, as well as with
my
Post by Jaroslav Beran
Post by Mateusz Viste
MIDI
Post by Mateusz Viste
piano keyboard, and it worked well with both. Unfortunately I
don't
Post by Jaroslav Beran
Post by Mateusz Viste
have
Post by Mateusz Viste
any other MIDI hardware, but there's no reason I am aware of that
would
Post by Mateusz Viste
make it non-functional with other hardware, as long as MPU-401
compatibility is there.
enjoy!
Mateusz
------------------------------------------------------------------------------
Post by Jaroslav Beran
_______________________________________________
Freedos-user mailing list
https://lists.sourceforge.net/lists/listinfo/freedos-user
------------------------------------------------------------------------------
Post by Jaroslav Beran
_______________________________________________
Freedos-user mailing list
https://lists.sourceforge.net/lists/listinfo/freedos-user
------------------------------------------------------------------------------
_______________________________________________
Freedos-user mailing list
https://lists.sourceforge.net/lists/listinfo/freedos-user
dmccunney
2014-08-13 22:15:44 UTC
Permalink
On Wed, Aug 13, 2014 at 4:45 PM, Jaroslav Beran
Post by Jaroslav Beran
Hello Mateusz,
Back to the original question. If I understand well you dont plan to publish
api as library. In my opinion it is quite pity because there is potential
for reusing it in other projects.
DOS doesn't *have* libraries in the Windows or Linux sense.

The only way to do approximately what you want is what Mateusz appears
to have done: write modular source code, so developers can pick the
parts that are useful to them and add them to the code for their
program when they build it.
Post by Jaroslav Beran
Jarda
______
Dennis
https://plus.google.com/u/0/105128793974319004519

Loading...