Comments (11)
I'm currently using an M-Audio Midisport 1x1 connected to a Roland UM-One, works fine.
from mt32-pi.
Hi! I'm also interested in this topic. I was searching for a replacement for a real HW MT-32 to attach to my retro computers (mainly Ataris) that have MIDI interfaces. Is your solution intended to be able to act like this? And if so, how?
from mt32-pi.
Hey!
Yes - the idea is that your Pi becomes a drop-in replacement for an MT-32.
So... 3 years later (apologies!)... I've sortof "revived" this project - before, it was a minimal, tiny Linux image that booted directly to the MUNT MT-32 emulator, but now, it's a bare metal project. This means that there's no operating system, it's smaller, and it starts in about 4 seconds from cold boot!
Please note that it's in very early stages, there are audio quality issues (especially on Pi 3).
I'm waiting for a Pi 3 to arrive so that I can do better testing; currently I can only confirm that it works well on Pi 4.
I'll be writing some proper documentation soon, but essentially, it goes like this:
- Get the latest build by going to Actions --> Click top-most commit in list --> Click
sdcard
in the artifacts list. - Extract contents to a blank FAT32-formatted SD card.
- Add
MT32_CONTROL.ROM
andMT32_PCM.ROM
to the root of the SD card - you have to provide these for copyright reasons. - Plug a USB MIDI interface into the Pi, and connect some speakers to the headphone jack.
- Connect your vintage PC's MIDI OUT to the Pi's MIDI IN and vice versa.
The USB MIDI interface connected to the Pi can be any standard class-compliant USB MIDI interface. If it works on Windows or Linux without any drivers, there's a high chance of it working.
Examples:
[ Pi ] --> [ USB MIDI ] <===> [ USB MIDI ] <-- [ Modern PC ]
[ Pi ] --> [ USB MIDI ] <===> [ Gameport MIDI cable ] <-- [ Vintage PC ]
[ Pi ] --> [ USB MIDI ] <===> [ Atari ST or other machine with built-in MIDI ]
[ Pi ] --> [ USB MIDI ] <===> [ Synthesizer keyboard or controller ]
Some other notes:
- Audio quality from headphone jack is poor due to aliasing; you'll notice distortion with quieter sounds. I'm not sure if this can be improved or not, but my intention is to support I2S DACs for much better quality. I have some of these on the way so I'll be trying to add support soon. USB audio will not be supported however, because Circle (the baremetal framework) does not have any drivers (yet?).
- It runs "headless" - there's no video output, so no need to bother with a HDMI cable, unless you want to see the Pi's rainbow splash screen ๐ .
- You'll know it's up and running because the LEDs on your MIDI interface should light up to show it's been initialised, and you'll hear a slight pop from your speakers as the audio device starts up.
- The Pi's activity LED will flash when it receives MIDI notes.
- Cheap no-name USB MIDI interfaces are not recommended; they have reliability issues not unique to this project. I'm using an M-AUDIO USB Uno successfully. Feel free to contribute test results with your own MIDI interfaces and we can list known working ones!
from mt32-pi.
Very cool stuff. I followed your instructions and connected the whole thing (RPi 3B plus DigitalLife MIDI to USB) to my old ATARI Mega STE. The music works, but it seems as if there are slow downs or timing errors. Could it be that RPi's power management or dynamic clock changes are interfering with munt's timing? When testing against Munt on my windows pc that didn't occur and I remember reading about this cpu clock changes affecting munt on RPi: https://retropie.org.uk/forum/topic/12549/tutorial-installing-munt-mt-32-emulation-on-rpi-3 (cpu-governor stuff under numbers 12 and 13 there).
Does the bare metal approach allow for adjustments of that stuff?
from mt32-pi.
Thanks for testing!
When did you download the package? A couple of days ago I received a Pi 3 B+ and made some fixes to eliminate the stuttering. Basically the Pi was running at 700Mhz on startup and needed some additional code to bring it up to full speed - the stuttering was caused by it not running fast enough to handle more than a certain number of voices simultaneously playing. I pushed this new code yesterday. ๐
Could you redownload the latest code from Actions and make another test? You can just choose the "kernels" package and replace those files on the SD card; all the other files stay the same.
Cheers!
from mt32-pi.
I just downloaded and tested today. So I already had the most recent build. But I will download again just to make sure.
from mt32-pi.
By the way, was it distortion in the audio (crackling/popping) or more like MIDI notes being played 'late'? The latter is another problem that's on the TODO list (MIDI events need timestamping), though it shouldn't be very noticeable with the small buffer sizes I'm using.
from mt32-pi.
It was no crackling but rather notes missing or being played late.
from mt32-pi.
Okay, there's probably stuff to be done there - would you mind opening another issue about this topic?
If you can provide details of the MIDI file(s) you're playing, how it should sound versus how it actually sounds, and maybe a way I can reproduce the issue (e.g. can I play something from a PC or Atari ST emulator and hear the problem?), this will help me a lot.
Thanks!
from mt32-pi.
Just a last addition. I downloaded again and did a fresh card. On Pi3 it's still having the issues described. Then I tried my Pi4 just out of curiosity et voilรก: Pi4 seems to work without delays or missing notes. But it seems a bit noisy at least if I turn up volume in my speakers.
Will do further testing and let you know.
P.S. Perhaps you can add your desctription from the earlier post as readme file?
from mt32-pi.
Thanks - that's good to know.
Audio quality: yes, that's already known - I don't think that's going to get any better. The Pi's headphone jack is known to be very rudimentary (it's not a true DAC).
The best way to use this project will be with a DAC - here's a video showing the audio quality from the DAC I've been working with: https://www.youtube.com/watch?v=Q0_ay0dCnRU
I'm working on updating the README now. ๐
from mt32-pi.
Related Issues (20)
- Unusual Behaviour ๐ [BUG] HOT 1
- ๐ [BUG] mt32-pi / MiSTer IยฒC comms broken with recent Raspberry Pi firmware HOT 3
- USB Serial Midi / RTPMidi passthrough to GPIO / USB / RTP midi TX HOT 2
- Exc. Checksum Error - Mister AO486 Core - Some Titles HOT 1
- ๐ก [FEATURE] HOT 1
- ๐ก [FEATURE] Support for CP2104 serial devices HOT 7
- setup with pi400 HOT 1
- ๐ก [FEATURE] global stereo switch option HOT 3
- ๐ก [FEATURE] Continuous volume control with buttons HOT 4
- [ISSUE] Soundfont - SF2 file > 1gb will fail to load HOT 2
- ๐ [BUG] Soundfont - SF2 file > 1gb will fail to load HOT 7
- ๐ก [FEATURE] HOT 3
- ๐ก [FEATURE]
- ๐ [BUG] Some MIDI files play with wrong instruments in sound font mode HOT 13
- Power saving mode isn't work ob RPi 3A+ ๐ [BUG] HOT 4
- ๐ [BUG] HOT 3
- ๐ก [FEATURE] Play sounds from AKAI IMG/ISO
- ๐ [BUG] - Mixing Issue when playing MIDI files on Soundfont mode HOT 3
- A MIDI Player for playing .MID files from the SD Card
- MT32-pi won't boot on newest RPi 3 A+ models without firmware file upgrade ๐ [BUG]
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mt32-pi.