GithubHelp home page GithubHelp logo

astriiddev / gameless-boy-chiptune-synth Goto Github PK

View Code? Open in Web Editor NEW
11.0 1.0 0.0 53 KB

MIDI Controlled wavetable synth based around DMG Gameboy wavetables for Arduino UNO

License: GNU General Public License v2.0

C 89.33% C++ 10.67%
chiptune mgb arduino nes synth synthesizer 8bit midi gameboy dmg-emulator

gameless-boy-chiptune-synth's Introduction

Gameless Boy Synth

MIDI Controlled wavetable synth based around DMG Gameboy wavetables for Arduino UNO

Inspired by trash80's mGB for arduinoboy and using wavetables generated by my DMG Gameboy, I decided to create a standalone chiptune synthesizer with an Arduino UNO. When I set out to begin this project, I had neither a gameboy nor a rom cart to run LSDJ or mGB so I wanted to build this to supplant my lack of gear. Now, over a year later, even though I now have both an everdrive and quite a few gameboys, I still wanted a standalone chiptune synth that was lowcost and compact and so I decided to finish the project I had started.

As the Gameless Boy is inspired by mGB, I decided to keep the MIDI channel layout the same. MIDI channels 1 and 2 are both pulse wave channels with varialbe pulse width. These pulse waves can be set to 12.5%, 25%, 50% (square wave--default on boot up), and 75% duty cycles. CC knob 48 is the the default to change the pulse width for each channel. MIDI channel 3 is triangle wave while channel 4 is a noise channel. As it is on mGB, MIDI channel 5 allows you to play the triangle wave and pulse waves together as three note polyphony.

The Gameless Boy is complete with pitch vibrato and pitch bend. Vibrato intensity is controlled by the mod wheel while its speed is controlled by CC knob 47 by default. Pitch bend is controlled by, obviously, the pitch bend wheel and have an octave up and octave down range. When in polyphony mode, pitch bend will only bend the last note that was played. This is an issue that I hope to rectify in later releases.

I hope to eventually build this into a full enclosure, complete with push-buttons to change the duty cycles, knobs for ADSR controls, and a preamp. But for now, the code is designed for simple MIDI-in and audio out circuitry.

Installation

This project is built on the Arduino MIDI and Mozzi libraries and they must be already added to your Arduino IDE library. Find them here: (https://github.com/FortySevenEffects/arduino_midi_library/releases/tag/5.0.2) & (https://github.com/sensorium/Mozzi)

It also uses custom wavetable files for Mozzi that I made from my DMG Gameboy. They are located in the tables folder in this project.

Special Thanks

Special thanks to trash80 for their inspiring mGB and ArduinoBoy projects.

Also special thanks to jidagraphy for their Mozzi Poly Synth code which helped me create the three note polyphony channel within the context of the Mozzi library. Without them, this project could not have been realized.

gameless-boy-chiptune-synth's People

Contributors

astriiddev avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.