VOGONS


First post, by Zorbid

User metadata
Rank Member
Rank
Member

I'd like to turn the music of the map of Scabb Island (Monkey 2) into a lullaby by stripping its drum track. I know that it is possible to turn channels off using either a real MT-32 or the Munt GUI, but I can't find an OS X binary, and my Homebrew install is broken beyond repair, making it hard to compile it myself.

Is it possible to display the Munt GUI from Boxer? Otherwise, could someone provide me OS X binaries?

Reply 1 of 17, by sergm

User metadata
Rank Oldbie
Rank
Oldbie

Sorry, I have no apples and can't therefore maintain an OS X build 🙁
But I think you may work around without Munt GUI (btw, I don't remember the way to mute MIDI channels there, NYI 😁) if you just record the MIDI in question and then use your favourite MIDI editor to make it sound the way you like.

Offtop:
Maybe someone can help with maintaining the OS X build? I put a word about in times of 1.0.0 release but nobody seems interested... 🙁

Reply 3 of 17, by sergm

User metadata
Rank Oldbie
Rank
Oldbie

Oh, great. Basically, I'd like to add a .dmg package to the main SourceForge download page. Not sure whether we still need to support PPC arch, but probably still need 32-bit binaries. The starting point should of course be compiling and testing 😉

Reply 4 of 17, by ufoufo512

User metadata
Rank Newbie
Rank
Newbie

Ok. I'll free up some hard disk space 😉, set up needed libraries and compile it. Might be weekend before I have time to focus on that.

I don't think PPC is needed anymore. I have access to my MacBook Pro running Mountain Lion on i5 and also an older white MacBook running Snow Leopard. I think that targeting Snow Leopard as an oldest operating system supported would be a good move, at least for pre build binaries.

Let's continue this with PMs or create a new thread. I might have some questions after I start... Although I have compiled the Qt version successfully at least once, I recall.

Edit: And if it makes any difference I have a MT-32 as well as a LAPC-I card, too.

Reply 5 of 17, by sergm

User metadata
Rank Oldbie
Rank
Oldbie

Sure, MT-32 Development is a good place for that. If you prefer, we can go on in #munt channel @ FreeNode (though, it became too silent recently 🙁 ).

IIRC, pre-built Qt worked just fine, so we may need not to build it (perhaps, for statically linking only). CMake is also provides ready to use binaries. GLib is a bit problem to get but maybe considered obsolete as well as smf2wav itself (the only thing that needs GLib actually). I suppose, Mac users tend to avoid terminal anyway 😁

Reply 6 of 17, by Dominus

User metadata
Rank DOSBox Moderator
Rank
DOSBox Moderator

I'll happily volunteer as tester 😉
Just don't want to mess with qt or I'd have volunteered as maintainer 😉
But please post a how-to anyway to follow up on how you make the binary..,

Windows 3.1x guide for DOSBox
60 seconds guide to DOSBox
DOSBox SVN snapshot for macOS (10.4-11.x ppc/intel 32/64bit) notarized for gatekeeper

Reply 7 of 17, by sergm

User metadata
Rank Oldbie
Rank
Oldbie

Hi, Dominus. Still love Qt? Hmm... Things change, maybe it is better than you expect. 😀

Anyway, it was easy to make the binaries for me when I tried CoreMIDI, making a useful dmg is rather a question. Actually, CMake provides their CPack packaging tool but it looks really weird to me on non-Windows systems just because it relies on NSIS and not on ugly shell scripts. So, I'd want something better. Same for Linux/POSIXes, btw.

As to compile, there is nothing special required. Assuming XCode is working, only those dependencies I listed above are needed. If you don't want smf2wav and GLib, you just remove the references to it in the main CMakeLists.txt file. Then, usual cmake ${path_to_sources} && make && sudo make install should succeed. No idea whether it is still compilable though as I changed many things since v.1.2.0.

Reply 8 of 17, by Dominus

User metadata
Rank DOSBox Moderator
Rank
DOSBox Moderator

he he, I just don't dare touch QT... 😀
I don't doubt I could make it to run on my system, it's just that I'm not sure how well I could do a shareable binary/dmg 😀

Windows 3.1x guide for DOSBox
60 seconds guide to DOSBox
DOSBox SVN snapshot for macOS (10.4-11.x ppc/intel 32/64bit) notarized for gatekeeper

Reply 10 of 17, by ufoufo512

User metadata
Rank Newbie
Rank
Newbie

I did so preliminary tests. I first downloaded Qt version 5.1.1. Couldn't compile with it, complains about wrong version (probably simple CMake issue, didn't look into it yet), so I downloaded Qt 4.8 version as well.

Now I get a bit further. Unfortunately, I still can't compile Qt project:

[ 35%] Generating ui_MidiConverterDialog.h
[ 37%] Generating ui_MidiPlayerDialog.h
Scanning dependencies of target mt32emu-qt
[ 38%] Building CXX object CMakeFiles/mt32emu-qt.dir/src/moc_AudioFileWriter.cxx.o
In file included from /Users/janischulze/Documents/Projects/oss/munt/munt/mt32emu_qt/src/moc_AudioFileWriter.cxx:9:
In file included from /Users/janischulze/Documents/Projects/oss/munt/munt/mt32emu_qt/src/AudioFileWriter.h:8:
/Users/janischulze/Documents/Projects/oss/munt/munt/mt32emu_qt/src/QSynth.h:27:11: error: no type named 'MIDIDelayMode' in
namespace 'MT32Emu'
MT32Emu::MIDIDelayMode midiDelayMode;
~~~~~~~~~^
/Users/janischulze/Documents/Projects/oss/munt/munt/mt32emu_qt/src/QSynth.h:121:33: error: no type named 'MIDIDelayMode' in
namespace 'MT32Emu'
void setMIDIDelayMode(MT32Emu::MIDIDelayMode midiDelayMode);
~~~~~~~~~^
2 errors generated.
make[2]: *** [CMakeFiles/mt32emu-qt.dir/src/moc_AudioFileWriter.cxx.o] Error 1
make[1]: *** [CMakeFiles/mt32emu-qt.dir/all] Error 2
make: *** [all] Error 2

I will take a closer look soon...

Reply 11 of 17, by sergm

User metadata
Rank Oldbie
Rank
Oldbie

Eek, looks like mt32emu_qt desynced with mt32emu library %
That enum MIDIDelayMode was added quite recently. If you have the library of older version installed in your system, it can probably cause interference.

Reply 12 of 17, by ufoufo512

User metadata
Rank Newbie
Rank
Newbie

Thanks. I deleted old version and compiled and installed a new version of the mt32emu. That almost did the trick of getting Qt version to compile.

I got following errors after that:
1) Protected member error

[ 58%] Building CXX object CMakeFiles/mt32emu-qt.dir/src/mididrv/TestDriver.cpp.o
/Users/janischulze/Documents/Projects/oss/munt/munt/mt32emu_qt/src/mididrv/TestDriver.cpp:36:14: error:
'waitForProcessingThread' is a protected member of 'MidiDriver'
MidiDriver::waitForProcessingThread(this, TEST1_EVENT_INTERVAL_NANOS);
^
/Users/janischulze/Documents/Projects/oss/munt/munt/mt32emu_qt/src/mididrv/MidiDriver.h:18:14: note: declared protected here
static void waitForProcessingThread(QThread *thread, MasterClockNanos timeout);
^
1 error generated.
make[2]: *** [CMakeFiles/mt32emu-qt.dir/src/mididrv/TestDriver.cpp.o] Error 1
make[1]: *** [CMakeFiles/mt32emu-qt.dir/all] Error 2
make: *** [all] Error 2

Solved that by making waitForProcessingThread public, which is a hack and probably not the right solution. Any comments?

2) Linker error

Linking CXX executable mt32emu-qt
Undefined symbols for architecture x86_64:
"_CFStringCreateWithCString", referenced from:
CoreMidiDriver::midiNotifyProc(MIDINotification const*, void*) in CoreMidiDriver.cpp.o
CoreMidiDriver::createDestination(MidiSession*, QString) in CoreMidiDriver.cpp.o
"___CFConstantStringClassReference", referenced from:
CFString in CoreMidiDriver.cpp.o

Solved that by adding Foundation framework to linker parameters along with existing CoreMidi framework for OSX, might be a correct solution.

After that I got the emulator running, now I next need to build a beatiful bundle out of it 😉

Reply 13 of 17, by sergm

User metadata
Rank Oldbie
Rank
Oldbie
ufoufo512 wrote:

Thanks. I deleted old version and compiled and installed a new version of the mt32emu.

In case you aren't aware, the preferred way to build things in POSIX world is using clean chroot environment. The package gets no extra dependencies this way, as well as it ensures better compatibility (I mean no undeclared dependencies in the package).

1) Protected member error

Ah, yep. MSVC & GCC don't throw even a warning, heh. 🤣 Btw, a similar thing happened with QtAudioDriver mt32emu-Qt cross-platform UI-enabled application development, so I just disabled it under Darwin. The righter way seems to be moving this protected call to TestMidiDriver::stop(). I'll fix, thanks.

Solved that by making waitForProcessingThread public, which is a hack and probably not the right solution. Any comments?

This reminds me how FreeBSD porters work all their life 😀 They constantly produce patches for Linux software in order to get it compile under BSD 🤣 It seems OS X inherited this way of porting software...

Solved that by adding Foundation framework to linker parameters along with existing CoreMidi framework for OSX, might be a correct solution.

Cool. This framework was not needed / added implicitly / whatever before. Thanks again.

Reply 14 of 17, by ufoufo512

User metadata
Rank Newbie
Rank
Newbie

Thanks for the tip for clean chroot environment, I will definitely look into it. Good thing that it helps just even to compile the project on Mac OSX. I won't hack too much 😊 , it just sometimes the urge to get something to compile is just too great 😈

Now that I got the Qt project running, I am facing another problem. There is only AudioFileWriter available as Device in Audio Output section. When the program is started there will be a text "Scanning audio devices..." but nothing seems to be found and a file chooser is displayed instead as for selecting where to create the file for audio file writing. The recording itself goes very well this way. Don't have any special sound device setup, just normal Macbook Pro stuff. I will debug this more deeply later.

BTW. I created a new thread. Let's continue relevant discussion there. Munt Mac OSX version discussion