Here's the end game: this is for a music commission for a toy museum (In where I'm wearing the hat of a classical composer - sort of). I've transcribed music from the top 15 Gameboy games according to Wikipedia and have written a "mash up" piece mismatching melodies with the wrong accompaniment, having Tetris morph into Zelda into Super Mario Land into Kirby - that sort of thing, it's fun. I've written this in a music notation software and the song exists as a MIDI file. I'm using Logic on my computer to playback the MIDI and send it through the arduinoboy to mGB. I'm also controlling the pulse waves, envelopes, and pitch shifting/vibrato via MIDI messages, attempting to recreate the original music as closely as possible.
I made a video here that shows what's going on: https://www.youtube.com/watch?v=SeZsoSXZaws
There are some loud sounds. Probably don't want to wear headphones.
Setup: The keyboard is connected to a computer, which through Logic outputs MIDI to the Arduinoboy, which sends data to the Gameboy and interpreted by mGB. Audio from the Gameboy is being routed to a speaker.
There's a strange pitch limitation that might be a mGB bug. In the video I only show this happening on the upper bound on the WAV channel, however this also occurs on the other channels and on the lower bound. On WAV, notes after G#4 (MIDI 68) don't play correctly. They sound as if they were the lowest note the sound chip can produce. However pitches play correctly to a certain point if the pitch shift is being used, and the new upper limit becomes what would be the pitch B7 regardless of how the pitch shifter is set. If pitch shifting is done outside of this range, some very strange microtonal sounds result. A possible avenue for some cool experimentation, but I think this upper limit is a bug with mGB and if you'll excuse the dumb pun it's pretty "limiting"...the Gameboy is definitely capable of producing the notes that aren't working as you can tell by the microtonal randomness the pitch shifting produces.
When I'm clicking with the mouse mouse button, I am sending a MIDI message that sets the pitch shifter range to it's highest possible value: 127. In the mGB documentation it says the shifter only works up to an octave (12) and in mGB itself you can set it up to 48, but you can set it to be as large a value as the MIDI can send(127), and it will still function. However when the pitch shifter is set this high there is some sort of overflow happening in the software and it results in some very unusual scales and notes, some of which are far outside what can be normally produced. If what's happening here can be reverse engineered, I'm thinking that I may be able to cheat and get the few higher notes that I need (in WAV: C8, C#8, D8, etc.) if this upper bound issue can't be solved.