Offline

Hello! I am still fairly new to electronic modding and have essentially zero programming knowledge.  I have a project going to use an arduino and some buttons to make a midi controller which I was hoping to use with the gameboy.  As it currently stands I have an arduinoboy I purchased and I could wire that to the arduino based midi controller to get it connected to the gameboy, however I would assume this is inefficient and I could use one arduino with the buttons connected to it and have it directly communicate with the gameboy. That being said I know arduinos have a limit to how much code and how many gpio ports they have, so essentially how feasible is it to connect my 8 or so buttons I was going to use as a midi controller to the existing arduinoboy and combine the programs into one? Would they clash too much or use the same ports making it impossible? Is it more trouble than its worth? (especially for someone who knows nothing about programming) Let me know thoughts and opinions on this! Please and thank you smile

Offline
Sea of Souls

Well, given an Arduinoboy made with an Atmega168 has 9 remaining GPIO, it would be feasible to add 8 buttons.
To add these into code though, we'll need to know exactly what you want to do with them and which mode you'll be using on the arduinoboy.

EDIT: Also, what arduinoyboy will you be soldering these buttons to? I only assumed it was running on an Atmega168.

Last edited by Orgia Mode (Jan 19, 2020 6:20 am)

Offline
Toronto, Ontario, Canada
soulgun16 wrote:

...essentially how feasible is it to connect my 8 or so buttons I was going to use as a midi controller to the existing arduinoboy and combine the programs into one?

I'm confident that this would be totally possible. Obviously, it depends a bit on the complexity of the functionality you want to add, but you could do a whole lot even within the limitations of a pretty basic atmel microcontroller.

soulgun16 wrote:

Would they clash too much or use the same ports making it impossible?

Most atmel chips, and therefore most Arduinos and Arduinoboys, have plenty of spare digital pins available for use as inputs and outputs.

soulgun16 wrote:

Is it more trouble than its worth? (especially for someone who knows nothing about programming)

If you know nothing about programming then this project is definitely well out of your grasp for now. Arduinos make great platforms for learning electronics and software engineering but this project would require a lot of time invested in building up those skills before you could even begin to tackle this particular project.

Whether it's worth your time or not, that's a different question. If you already want to learn these skills then I don't think it would be a bad idea spending a year or so working towards those goals. I think that with hard work it would be possible for someone, depending on their aptitude, to learn the necessary skills in even as little as a few months if they worked at it.

Last edited by jefftheworld (Jan 19, 2020 1:27 pm)

Offline
Orgia Mode wrote:

Well, given an Arduinoboy made with an Atmega168 has 9 remaining GPIO, it would be feasible to add 8 buttons.
To add these into code though, we'll need to know exactly what you want to do with them and which mode you'll be using on the arduinoboy.

EDIT: Also, what arduinoyboy will you be soldering these buttons to? I only assumed it was running on an Atmega168.

I'm currently using the teensyboy pro from catskull, I'd likely try to make my own arduinoboy for this though using another teensy, unless you think it's worth it/easier to use an uno maybe.  My biggest thing stopping me from making my own is that I have a hard time fully understanding what to wire to what to make one and I haven't found a super intuitive wiring guide, I do have the real estate for a bigger Arduino.  I'm just making a one octave piano for starters, thus the 8 buttons.

Offline
jefftheworld wrote:
soulgun16 wrote:

Is it more trouble than its worth? (especially for someone who knows nothing about programming)

If you know nothing about programming then this project is definitely well out of your grasp for now. Arduinos make great platforms for learning electronics and software engineering but this project would require a lot of time invested in building up those skills before you could even begin to tackle this particular project.

Yeah, I figured its probably on the easier side of things but still requires a decent amount of startup knowledge, I would be mostly unsure of how I would make the midi code communicate with the arduinoboy code directly since the midi controller code would be designed to output midi and the arduinoboy would be designed to be listening for input midi, and I'm not sure how to get them to talk together within the same code, I only plan to use mGB for this project though

Offline
Sea of Souls

Ok, since that one has DIN MIDI, I suggest making a separate midi controller with a secondary Arduino. You can make it far more interesting than just 8 keys. In fact, you can break out every mGB cc control to a knob as well as your keys. AND you can use an example code to start with! All you do is fill in the blanks. Besides, isn't an octave 12 keys...? I think the currently available TeensyBoyPro only has 8 extra GPIO and man, 8 keys would be so boring.

Watch part 1 and 2, then get back with us if you like the idea.
https://www.youtube.com/watch?v=DXhxdsGREsU

Offline
Orgia Mode wrote:

Ok, since that one has DIN MIDI, I suggest making a separate midi controller with a secondary Arduino. You can make it far more interesting than just 8 keys. In fact, you can break out every mGB cc control to a knob as well as your keys. AND you can use an example code to start with! All you do is fill in the blanks. Besides, isn't an octave 12 keys...? I think the currently available TeensyBoyPro only has 8 extra GPIO and man, 8 keys would be so boring.

Watch part 1 and 2, then get back with us if you like the idea.
https://www.youtube.com/watch?v=DXhxdsGREsU

Notes and Volts! He's great, that's the exact guide I was going to use for my project! I found out about them thanks to look mum no computer, also you are correct, I was not thinking about the sharps/flats. So I'll just go with the double idea then, thanks for the help! I think I'll order an uno tonight and try to start getting everything going big_smile

Offline
Sea of Souls

Excellent. Here is a list of CC values for mgb if you want to get started adding them to the N&V code:
https://github.com/trash80/mGB

Offline
Orgia Mode wrote:

Excellent. Here is a list of CC values for mgb if you want to get started adding them to the N&V code:
https://github.com/trash80/mGB

Thank you! I have one last question, I know the N&V says uno, but I have a nano laying around, is it possible that I can use that instead? I thought I heard they use the same chip.

Offline
Sea of Souls

yes

Offline
Orgia Mode wrote:

yes

Perfect, thank you! I ordered some new wires for it and I'm gonna start on it tomorrow, I'll post here afterwords for anyone interested.

Offline
London, UK

if you decide to use teensy to make the Midi controller, I found this guys MIDI controller libraries super useful:

this one works now;

https://github.com/tttapa/MIDI_controller

this one's being developed but does more stuff:

https://github.com/tttapa/Control-Surface

Obviously it's good to learn a bit of the code that's going on underneath, but these saved a LOT of coding from scratch when I was building this controller:

https://www.instagram.com/p/BySJNnbHybz/

(I think I agree there's not MUCH point building the arduinoboy and controller in the same box unless that's all you want to use the controller for ever for absolutely 100% certain. Possibly more complicated to hack up the arduinoboy code than it is to code a controller from scratch to talk to an arduinoboy you already know works, and it's not like an extra  teensy is very expensive)

Last edited by Duck (Jan 20, 2020 10:51 am)

Offline
London, UK

also, if you need more buttons than you have pins, it's super easy to use multiplexer chips to have one pin read loads of signals.

Teensy is a bit more set up to use MIDI off the bat, and there's a really simple guide to using multiplexer chips halfway down this page:

https://www.pjrc.com/teensy/td_midi.html

the controller I shared above is running all those buttons/sliders and faders from one Teensy (and a lot of multiplexers)

Last edited by Duck (Jan 20, 2020 10:50 am)

Offline
Duck wrote:

also, if you need more buttons than you have pins, it's super easy to use multiplexer chips to have one pin read loads of signals.

Teensy is a bit more set up to use MIDI off the bat, and there's a really simple guide to using multiplexer chips halfway down this page:

https://www.pjrc.com/teensy/td_midi.html

the controller I shared above is running all those buttons/sliders and faders from one Teensy (and a lot of multiplexers)

Thank you! I will definitely check all of that out big_smile

Offline
Toronto, Ontario, Canada
soulgun16 wrote:

...I would be mostly unsure of how I would make the midi code communicate with the arduinoboy code directly since the midi controller code would be designed to output midi and the arduinoboy would be designed to be listening for input midi, and I'm not sure how to get them to talk together within the same code, I only plan to use mGB for this project though

Your Arduinoboy wouldn't be running a realtime operating system (RTOS), so it wouldn't be two programs that talk to each other through an OS but rather a single program that extends the Arduinoboy functionality to include your desired button-based inputs.

I don't think it would be on the easier side for someone who has not programmed embedded systems.

Offline
jefftheworld wrote:
soulgun16 wrote:

...I would be mostly unsure of how I would make the midi code communicate with the arduinoboy code directly since the midi controller code would be designed to output midi and the arduinoboy would be designed to be listening for input midi, and I'm not sure how to get them to talk together within the same code, I only plan to use mGB for this project though

Your Arduinoboy wouldn't be running a realtime operating system (RTOS), so it wouldn't be two programs that talk to each other through an OS but rather a single program that extends the Arduinoboy functionality to include your desired button-based inputs.

I don't think it would be on the easier side for someone who has not programmed embedded systems.

Oh alright, I see what your saying, thanks for the input!