trash80 / arduinoboy Goto Github PK
View Code? Open in Web Editor NEWOfficial ArduinoBoy Repository for serial MIDI communication to the Nintendo Gameboy.
License: GNU General Public License v2.0
Official ArduinoBoy Repository for serial MIDI communication to the Nintendo Gameboy.
License: GNU General Public License v2.0
When trying to compile the code in the Arduino IDE, I get the following error:
Error: lo register required -- `sub ip,#1'
I'm trying to build this with an Arduino Nano Every.
I get a compilation error that "PIND" is not declared.
Is there a workaround of some sort for the Nano Every?
./Mode_LSDJ_Keyboard.ino: In function 'void sendKeyboardByteToGameboy(byte)':
./Arduinoboy.ino:231:48: error: 'PIND' was not declared in this scope
#define GB_SET(bit_cl,bit_out,bit_in) PORTD = (PIND & B11111000) | ((bit_in<<2) | ((bit_out)<<1) | bit_cl)
^
./Mode_LSDJ_Keyboard.ino:209:3: note: in expansion of macro 'GB_SET'
GB_SET(0,0,0);
^~~~~~
./Arduinoboy.ino:231:48: note: suggested alternative: 'PIN0'
#define GB_SET(bit_cl,bit_out,bit_in) PORTD = (PIND & B11111000) | ((bit_in<<2) | ((bit_out)<<1) | bit_cl)
^
./Mode_LSDJ_Keyboard.ino:209:3: note: in expansion of macro 'GB_SET'
GB_SET(0,0,0);
^~~~~~
./Mode_LSDJ_Midiout.ino: In function 'boolean getIncommingSlaveByte()':
./Arduinoboy.ino:231:48: error: 'PIND' was not declared in this scope
#define GB_SET(bit_cl,bit_out,bit_in) PORTD = (PIND & B11111000) | ((bit_in<<2) | ((bit_out)<<1) | bit_cl)
^
./Mode_LSDJ_Midiout.ino:254:3: note: in expansion of macro 'GB_SET'
GB_SET(0,0,0);
^~~~~~
./Arduinoboy.ino:231:48: note: suggested alternative: 'PIN0'
#define GB_SET(bit_cl,bit_out,bit_in) PORTD = (PIND & B11111000) | ((bit_in<<2) | ((bit_out)<<1) | bit_cl)
^
./Mode_LSDJ_Midiout.ino:254:3: note: in expansion of macro 'GB_SET'
GB_SET(0,0,0);
^~~~~~
./Mode_LSDJ_SlaveSync.ino: In function 'void sendClockTickToLSDJ()':
./Arduinoboy.ino:231:48: error: 'PIND' was not declared in this scope
#define GB_SET(bit_cl,bit_out,bit_in) PORTD = (PIND & B11111000) | ((bit_in<<2) | ((bit_out)<<1) | bit_cl)
^
./Mode_LSDJ_SlaveSync.ino:91:5: note: in expansion of macro 'GB_SET'
GB_SET(0,0,0);
^~~~~~
./Arduinoboy.ino:231:48: note: suggested alternative: 'PIN0'
#define GB_SET(bit_cl,bit_out,bit_in) PORTD = (PIND & B11111000) | ((bit_in<<2) | ((bit_out)<<1) | bit_cl)
^
./Mode_LSDJ_SlaveSync.ino:91:5: note: in expansion of macro 'GB_SET'
GB_SET(0,0,0);
^~~~~~
./Mode_MidiGb.ino: In function 'void sendByteToGameboy(byte)':
./Arduinoboy.ino:231:48: error: 'PIND' was not declared in this scope
#define GB_SET(bit_cl,bit_out,bit_in) PORTD = (PIND & B11111000) | ((bit_in<<2) | ((bit_out)<<1) | bit_cl)
^
./Mode_MidiGb.ino:107:8: note: in expansion of macro 'GB_SET'
GB_SET(0,1,0);
^~~~~~
./Arduinoboy.ino:231:48: note: suggested alternative: 'PIN0'
#define GB_SET(bit_cl,bit_out,bit_in) PORTD = (PIND & B11111000) | ((bit_in<<2) | ((bit_out)<<1) | bit_cl)
^
./Mode_MidiGb.ino:107:8: note: in expansion of macro 'GB_SET'
GB_SET(0,1,0);
^~~~~~
./Arduinoboy.ino:231:48: error: 'PIND' was not declared in this scope
#define GB_SET(bit_cl,bit_out,bit_in) PORTD = (PIND & B11111000) | ((bit_in<<2) | ((bit_out)<<1) | bit_cl)
^
./Mode_MidiGb.ino:110:8: note: in expansion of macro 'GB_SET'
GB_SET(0,0,0);
^~~~~~
./Arduinoboy.ino:231:48: note: suggested alternative: 'PIN0'
#define GB_SET(bit_cl,bit_out,bit_in) PORTD = (PIND & B11111000) | ((bit_in<<2) | ((bit_out)<<1) | bit_cl)
^
./Mode_MidiGb.ino:110:8: note: in expansion of macro 'GB_SET'
GB_SET(0,0,0);
^~~~~~
./Mode_Nanoloop.ino: In function 'boolean sendTickToNanoloop(boolean, boolean)':
./Arduinoboy.ino:231:48: error: 'PIND' was not declared in this scope
#define GB_SET(bit_cl,bit_out,bit_in) PORTD = (PIND & B11111000) | ((bit_in<<2) | ((bit_out)<<1) | bit_cl)
^
./Mode_Nanoloop.ino:74:8: note: in expansion of macro 'GB_SET'
GB_SET(0,1,0);
^~~~~~
./Arduinoboy.ino:231:48: note: suggested alternative: 'PIN0'
#define GB_SET(bit_cl,bit_out,bit_in) PORTD = (PIND & B11111000) | ((bit_in<<2) | ((bit_out)<<1) | bit_cl)
^
./Mode_Nanoloop.ino:74:8: note: in expansion of macro 'GB_SET'
GB_SET(0,1,0);
^~~~~~
./Arduinoboy.ino:231:48: error: 'PIND' was not declared in this scope
#define GB_SET(bit_cl,bit_out,bit_in) PORTD = (PIND & B11111000) | ((bit_in<<2) | ((bit_out)<<1) | bit_cl)
^
./Mode_Nanoloop.ino:77:8: note: in expansion of macro 'GB_SET'
GB_SET(0,0,0);
^~~~~~
./Arduinoboy.ino:231:48: note: suggested alternative: 'PIN0'
#define GB_SET(bit_cl,bit_out,bit_in) PORTD = (PIND & B11111000) | ((bit_in<<2) | ((bit_out)<<1) | bit_cl)
^
./Mode_Nanoloop.ino:77:8: note: in expansion of macro 'GB_SET'
GB_SET(0,0,0);
^~~~~~
./Arduinoboy.ino:231:48: error: 'PIND' was not declared in this scope
#define GB_SET(bit_cl,bit_out,bit_in) PORTD = (PIND & B11111000) | ((bit_in<<2) | ((bit_out)<<1) | bit_cl)
^
./Mode_Nanoloop.ino:82:5: note: in expansion of macro 'GB_SET'
GB_SET(0,1,0);
^~~~~~
./Arduinoboy.ino:231:48: note: suggested alternative: 'PIN0'
#define GB_SET(bit_cl,bit_out,bit_in) PORTD = (PIND & B11111000) | ((bit_in<<2) | ((bit_out)<<1) | bit_cl)
^
./Mode_Nanoloop.ino:82:5: note: in expansion of macro 'GB_SET'
GB_SET(0,1,0);
^~~~~~
exit status 1
Compilation error: 'PIND' was not declared in this scope
While using pitch bend in the wave channel, a popping occurs whenever the PB is brought back to value 64. After a good number of pops the channel's waveform will change (audibly but not on the display). In order to restore the original waveform, I need to move the waveform manually to a different shape and then toggle back to the original shape.
I am using Arduinoboy software 1.3.3, a DMG-01 Play-it-Loud, and an Arduinoboy made by Xiwi Electronics.
if i dont wanna use the 面包板,how can i make the pcb (over the arduino
I have an issue where my arduinoboy randomly cycles through modes. I compiled the Code and after several attempts it finally compiled without any Error. I wanted to try it out, but pressing the mode button won't do anything. Sometimes it randomly starts to cycle through the modes and when it comes to MGB i can play notes with my Midi Keyboard and the Green Status Led Lights up correctly. This ist Just temporarely because of the mode cycle. MGB does Not detect anything and I was not able to ever hear a Sound in MGB while I was playing a Note. LSDJ has the Same Problem. Maybe someone knows how to fix it. I have tried several hours and days but I ended writing this text Here. My Setup is a Catskull DIY Kit, a Arduino Uno and a Gameboy Color with Ezflash Junior and the Roms.
Any way to solve this issue? Tying to flash the files to a Teensy 2.0 on a PCB made with Trash80s schematic for the teensboy.
Arduinoboy:187: error: cannot convert 'usb_serial_class*' to 'HardwareSerial*' in initialization
HardwareSerial *serial = &Serial;
Using library EEPROM at version 2.0 in folder: C:\Users\avonb\Desktop\arduino-1.8.9\hardware\teensy\avr\libraries\EEPROM
cannot convert 'usb_serial_class*' to 'HardwareSerial*' in initialization
/tmp/596570401/Arduinoboy/Mode_LSDJ_Keyboard.ino:47:32: error: 'class PS2Keyboard' has no member named 'readScanCode'; did you mean 'readUnicode'?
Having trouble compiling for Arduino Uno. Compiling for original ArduinoBoy design.
Using a Teensy 3.2, I can compile and upload the sketch fine.
It goes through the startup animation on the LEDs.
I can select a mode with the button.
It even remembers the mode when I restart.
I'm trying to use mGB mode.
But when sending midi from my computer, using Live, through USB, I don't get any status LED changes (or any sound on my gameboy).
The settings in the Arduino IDE are:
Board: "Teensy 3.2 / 3.1"
USB Type: "MIDI"
CPU Speed: "96 MHz (overclock)"
Optimize: "Faster"
Keyboard Layout: "US English"
Port: "HID=#### MIDI (Teensy 3.2"
I can also see a "Teensy MIDI" in my Audio MIDI Setup on macOS and can see "Teensy MIDI" in Live as a "Midi to" output.
I've used the same pins as in the original code. I updated all the libraries in the Arduino IDE. I tried other USB Types to see if there was some serial debugging info printed.
Here is a picture of my breadboard layout.
I also have an Arduino UNO with a which I can send midi to fine with a USB to DIN 5 cable.
I'm not sure where I have gone wrong, since the start up and mode selection appear to work. Does anybody have any ideas?
Teensyduino 1.41+ changed the values returned by usbMIDI.getType(). Instead of 0, 1, 2, etc. it now returns the hex values described here: https://www.pjrc.com/teensy/td_midi.html
This is easily fixed by modifying the switch statement in modeMidiGbUsbMidiReceive
in Mode_MidiGB
.
There is another issue where MIDI_INTERFACE
does not seem to get defined anymore. This could be an error on my part as I was not able to find anything about it but after manually defining it and applying the above fix everything is working again.
Other modes might need fixing too, I have only tested mGB on a teensy LC.
Don't want it to seem like this page is endorsing any one vendor, but here are a few places you can find a pre-made arduinoboy:
https://catskullelectronics.com/
http://store.kitsch-bent.com/product/usb-boy
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.