urbster1 wrote:

have you thought about using Famitracker instead and just importing the MIDI into it? granted you won't have a wav channel but it might be fairly close

The project is a tribute to the gameboy so having the physical gameboy play the music is an important part of it. But that's a cool program.

herr_prof wrote:

You might have better results using midi to MML to gbs. This thread covers it:

http://chipmusic.org/forums/topic/2946/ … lsdj-cart/

Will have less headaches on the performance end, at the expense of some more work on the composition end.

Wow. Thank you. I wish I had known about this sooner. MML to gbs definitely seems to be the best way to go for what I'm doing, and having the song physically live on a cartridge and be able to play on it's own would be amazing. I'm definitely going to look into this deeper. But this is happening in two weeks and as easy as MML looks to code from a MIDI conversion, I don't think I'm going to have the time to figure out what to do as much as I would like. The music is a little complicated. Plus I don't have a cart flasher. And I tried getting the conversion programs to work just now, but XKMCP wasn't cooperating with the MML I converted...

For now I'm going to make work what I can with my current mGB setup for the first "performance" of this thing. It won't be perfect, but I'm building up the song now and it's sounding pretty good. It will work for a first performance. I'll look into converting to MML & gbs afterwards.

If anyone is able to shed some light with what's going on with mGB that'd be a great help.

Thanks so much!

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.

catskull wrote:

I just checked over the arduinoboy code and I don't see anything that would restrict the pitch range. The problem must lay in mGB. I also checked over the mGB code but I don't understand assembly enough to make heads or tails of what's going on.

I still need to actually set this up and try to replicate the issue. I believe that it's happening and it doesn't seem like it should be.

For your setup, I would not recommend overclocking. You would have to enable/disable the overclock real time and even if you made that work, there's a pretty decent possibility it could crash the gameboy. If I'm wrong, someone please tell me.

Yeah I also get the sense this shouldn't be happening. I'm hoping this is a unique problem that has an easy fix? Although I'm in the dark on how to modify the Arduino, I bought it pre-built from catskull.

I also took a look at the code. I couldn't make much sense of it either.

I agree, overclocking seems equivalent to giving it steroids to fix what might be a really simple issue, not sure if I want to do that to the poor thing.

herr_prof wrote:

Anyways you are probably better off doing like carillion or something if your goals are A midi composition, and b running on hardware.

I looked up carillon. Is it able to receive MIDI data from an external source? That's the medium I'm working in, not a sequencer. The documentation also recommends only using a Gameboy color and I'm using a DMG. From what I can tell that's not going to work for me.

I experimented more with pitch bending on my mGB setup yesterday and found some other odd behaviors...I'm going to make a video later today so you can see/hear this. Hopefully that might make clear what's going on.

I'll have a look into over clocking and see if that can help me out. Thanks for the pointer.

My project involves using a gameboy so I'm not looking for a fancier synth. Guess you have to make to with the limitations that you have! But this is frustrating because from what I can tell this isn't a limitation with how the gameboy can make sound. I think this is a limitation in how it's able to interpret the information it's receiving from the Arduinoboy.  I'm attempting to recreate original gameboy music that I've transcribed as detailed as possible and I feel like this setup is massively unequipped to do what I want :\

Really? The sound chip is more than capable of making ridiculously high tones. Is there no workaround other than pitch shifting? I find it hard to believe that the sound chip is incapable of making tones that so much original game boy music uses.

Hey folks. So I'm having an issue with my arduinoboy setup and baffled that I can't find anyone else with this issue. Hopefully someone else has had a similar problem to this?

Here's my setup: I'm sending MIDI out of my computer through arduinoboy to a DMG-01 with mGB. Almost everything works perfectly. Except there seems to be a cap on the Midi note range coming out of the Gameboy. From what I can tell, anything that isn't between MIDI notes 36-80 plays an entirely different note. Notes above 80 play the same super low note(which sounds like MIDI note 36). Notes below 36 mostly play what sounds like MIDI note 36 but with a few other random notes scattered around. This lets me only be able to use notes C2-G#5 which is a big problem for what I'm doing.

I've tested sending MIDI out of two different programs, LogicX, and MaxMSP, and have gotten the same results, so this definitely seems to be a problem with either my arduinoboy or mGB. Has anyone else had this problem?

Also, I've found a way to circumvent this issue by using the pitch bend to bend the note up an octave or two, but this workaround ties up the pitch bend and doesn't allow me to program in vibrato. Worst case scenario I can't have vibrato...but that would really suck big time. Anyone have any ideas?