Reply 20 of 192, by jxhicks
- Rank
- Newbie
I just ordered the Roland USB cable, I may have to order an Odroid to try with it. I've been wanting to mess with one anyway. That'll probably have to wait until the next paycheck comes around 😉
I just ordered the Roland USB cable, I may have to order an Odroid to try with it. I've been wanting to mess with one anyway. That'll probably have to wait until the next paycheck comes around 😉
Perhaps munt needs some ARM optimization, let's get sergm on it... 😉
Not necessarily. MUNT needs something like a 800+ Coppermine to run well on x86 from what I've read, and the original RPi is most certainly slower than that. Apparently the compiler did a decent enough job optimizing things itself.
Ok so I tried this on another notebook. This one has an AMD APU, an E-300 processor. 1.3 GHz. While everything works, there is quite a lag / delay between what's on the screen and what you hear. And on occasions the timings are off as well.
It seems that the 1.7 GHz Celeron notebook isn't that slow actually.
For those wanting to try this on a Linux machine, here are some guidelines (not a full guide):
1- You'll need to compile Munt. CMAKE will inform you of the libraries it needs, so download them as needed. For the RPi I also had to compile JACK2, since the version on the repositories is bugged.
2- IMPORTANT: Remember to activate optimizations. I believe you had to use "make edit-cache" or something like that to set the build to "Release"... or just edit the Makefiles and add /O3 to the default compiler flags for both C and C++. If you don't do that, it will run horribly
3- Install Munt (sudo make install)
3- Compile Munt's ALSA server (go to the subfolder and just use MAKE, then SUDO MAKE INSTALL). It goes without saying that you'll need to use the ALSA sound system in Linux. Also, you'll need to place the ROM files in the ROM subfolder before compiling/installing, the Makefile will copy them to the right place and set the necessary permissions. Also, it will only use MT32 ROM files if there are no CM32L roms in that directory. I had trouble with CM32L ROMs, so I just used MT32 ones.
4- Install timidity-daemon and fluid-soundfont-gs (or whatever soundfont you prefer). Remember to edit /etc/timidity/timidity.cfg, comment the default soundfont (which isn't very good) and uncomment BOTH fluidsynth lines (GM and GS). Restart the timidity service (or the PC).
5- Plug the USB MIDI interface
6- Then just use aconnect (from alsa-utils) to connect one input to one output. In my case, "aconnect 24:0 128:0" connects the MIDI IN to timidity.
7- To use munt, start mt32d as a background process (separate console window running in the background, or using & if you know your way through Linux console multitasking capabilities). Running as root is advisable, as mt32d automatically raises its priority when started as root. Also, play with the command line attributes. For me, the best combo is "sudo mt32d -m -i 100 -x 100", which starts it with a fixed 100ms buffer. Then run aconnect with whatever port mt32d managed to grab. In my pc, it is "aconnect 24:0 129:0"
8- In my PC, Timidity and Munt cannot be used at the same time. Timidity is fine running as a daemon in the background, so just leave Timidity alone when using Munt. And only start Munt when you're going to use it.
9- Have fun.
Btw, this is working great on my 1.73GHz Pentium M laptop.
I have a little something to add to this! I am able to use my LG G3 Android phone with the Roland UM-ONE Mk2 and an app called MIDI Voyager as a MIDI module! I have the Roland plugged into my Win98 retro machine into the gameport of my Diamond MX300. I chose MPU-401 as the MIDI playback in Win98 and set MIDI Voyager to use a USB device. It auto-detected the UM-ONE as it has compatibility built in. I ran an audio cable from my phone's headphone jack to the Line-In on the MX300 and VOILA!
The coolest part is that MIDI Voyager allows the use of multiple SoundFonts! I have a bunch loaded and switch between them flawlessly. 🤣
iPhones have this as well. Through the camera connection kit you can connect an USB/Midi adapter as well and then connect a Roland device.
Tested it out with Exult (which will display sysex messages on an MT32).
(But the iOS hardware doesn't allow line-in except through the dock/lightning port, which has already the camera connection kit/usb/midi adapter plugged in - and iOS restrictions wouldn't allow simultaneous line-in playback and Exult play)
Unfortunately I'm experiencing a bad hanging note bug in every game I've tried (Doom2, Space Quest 4, and the Orion Conspiracy). I'll look for other MIDI players on Android to see if there's a better solution. So close...
Despite not holding Apple in high regard,this is one area where I believe an iPad would do better than an Android device. There is that one official Roland app that should do the trick.
I'm going to try a side install of Linux on my Android TV box and see how Munt and Timidity perform.
All hail the Great Capacitor Brand Finder
Just remember to change some options to get a Release build, as the default target has no optimizations turned on.
I specify a release build on the cmake run. Also, I'm going to specify CFLAGS and CXXFLAGS as per the ARM documentation for my processor.
Does Munt have runtime processor detection?
All hail the Great Capacitor Brand Finder
Not sure, I don't think so
Okay, best to be as specific for the optimizer as I can.
All hail the Great Capacitor Brand Finder
wrote:Okay, best to be as specific for the optimizer as I can.
Any success? Tried running Munt on my RK3188 based stick running Ubuntu 12.04, but it skips a bit to often.
Used this command for optimization: cmake -DCMAKE_BUILD_TYPE=RELEASE ..
wrote:wrote:Okay, best to be as specific for the optimizer as I can.
Any success? Tried running Munt on my RK3188 based stick running Ubuntu 12.04, but it skips a bit to often.
Used this command for optimization: cmake -DCMAKE_BUILD_TYPE=RELEASE ..
I believe that when I tried it both in my RPi and currently on my Pentium M laptop I used the ALSA server (mt32d) and not the fully fledged interface. If you try using it, be sure to start it with SUDO (it sets a few threads to a higher priority if you do it this way) and disable the whole dynamic buffer size thing. I used the follwing command line:
sudo mt32 -m -i 100 -x 100 -d hw:0
Then just use aconnect to bridge one MIDI In to another MIDI Out
Actually I made a little script to set things up both for MT-32 emulation with MUNT and as a GM device with FluidSynth with the following script:
#!/bin/bash
set -m
if test "$1" = 'mt32'
then
sudo -v
sudo mt32d -m -i 100 -x 100 -d hw:0 &
sleep 2
mport=$(pmidi -l | grep MT\-32 | grep Standard | sed 's/\(.\{5\}\)\(.*\)/\1/')
rport=$(pmidi -l | grep UM\-ONE | sed 's/\(.\{5\}\)\(.*\)/\1/')
aconnect $rport $mport
#fg %sudo\ mt32d
read -n 1 -s
sudo killall mt32d
else
fluidsynth --server --audio-driver=alsa --no-shell -o audio.alsa.device=hw:0 /usr/share/sounds/sf2/Chaos_V20.sf2 &
sleep 2
fport=$(pmidi -l | grep FLUID | sed 's/\(.\{5\}\)\(.*\)/\1/')
rport=$(pmidi -l | grep UM\-ONE | sed 's/\(.\{5\}\)\(.*\)/\1/')
aconnect $rport $fport
read -n 1 -s
sudo killall fluidsynth
fi
Looks like the Ubuntu image I'm using is kind of crippled lacking modules such as the ALSA MIDI. Have to figure out some way of how to boot an updated kernel.
Installed the chroot on my RK3066 box, but like you there were no ALSA modules installed. I'm going to have to prep an SD card boot image which will take more time.
All hail the Great Capacitor Brand Finder