All Projects → RyoKosaka → Hellodrum Arduino Library

RyoKosaka / Hellodrum Arduino Library

Licence: mit
This is a library for making E-Drum with arduino.

Projects that are alternatives of or similar to Hellodrum Arduino Library

Arduino Applemidi Library
Send and receive MIDI messages over Ethernet (rtpMIDI or AppleMIDI)
Stars: ✭ 177 (+86.32%)
Mutual labels:  arduino, midi
Arduino midi library
MIDI for Arduino
Stars: ✭ 969 (+920%)
Mutual labels:  arduino, midi
Midi controller
This is a library for creating a MIDI controller using an Arduino or Teensy board.
Stars: ✭ 287 (+202.11%)
Mutual labels:  arduino, midi
Midi shield
Midi shield product 9595, available from SparkFun Electronics
Stars: ✭ 34 (-64.21%)
Mutual labels:  arduino, midi
Control Surface
Arduino library for creating MIDI controllers and other MIDI devices.
Stars: ✭ 377 (+296.84%)
Mutual labels:  arduino, midi
Esp8266audio
Arduino library to play MOD, WAV, FLAC, MIDI, RTTTL, MP3, and AAC files on I2S DACs or with a software emulated delta-sigma DAC on the ESP8266 and ESP32
Stars: ✭ 972 (+923.16%)
Mutual labels:  arduino, midi
Arduino Music Player
MOD/S3M/XM/IT Music Player for Arduino
Stars: ✭ 85 (-10.53%)
Mutual labels:  arduino
Ol3d
A tiny portable 3D graphics lib for micro controllers
Stars: ✭ 90 (-5.26%)
Mutual labels:  arduino
Arduinomidifader
Turning an old analog mixer into a MIDI controller
Stars: ✭ 84 (-11.58%)
Mutual labels:  arduino
Sustainable Green Plants
DIY high pressure aeroponics for the home
Stars: ✭ 84 (-11.58%)
Mutual labels:  arduino
Arduinogameboy
Arduino based Game Boy cartridge reader and writer. It can dump ROM and RAM to SD card.
Stars: ✭ 93 (-2.11%)
Mutual labels:  arduino
Nrf24 Esk8 Remote
A remote used to control an electric skateboard
Stars: ✭ 91 (-4.21%)
Mutual labels:  arduino
Adalight ws2812
This is a fork of Adalight working with WS2811/WS2812 LED using the last version of FastLED. 💡
Stars: ✭ 88 (-7.37%)
Mutual labels:  arduino
Beelan Lorawan
A LoRaWAN library for compatible arduino board
Stars: ✭ 87 (-8.42%)
Mutual labels:  arduino
Timeframe
Get your own time portal on your desk!
Stars: ✭ 90 (-5.26%)
Mutual labels:  arduino
Arduinoslovakia
Arduino sketches.
Stars: ✭ 85 (-10.53%)
Mutual labels:  arduino
Lwmem
Lightweight dynamic memory manager library for embedded systems with memory constraints. It implements malloc, calloc, realloc and free functions
Stars: ✭ 92 (-3.16%)
Mutual labels:  arduino
Audiokitsynthone
AudioKit Synth One: Open-Source iOS Synthesizer App
Stars: ✭ 1,258 (+1224.21%)
Mutual labels:  midi
Arduino core stm8
STM8 core support for Arduino
Stars: ✭ 87 (-8.42%)
Mutual labels:  arduino
Sketchbook starter kit v2.0
Stars: ✭ 90 (-5.26%)
Mutual labels:  arduino

HelloDrum Arduino Library

arduino-library-badge
This is a library for making E-Drum with Arduino.
Ver.0.7.7(11/1/2020) Work in progress.

Description

This is a library for making E-Drum with Arduino.
By using it with Arduino MIDI Library, you can make E-drum.

Project Page :https://open-e-drums.com/
Blog :https://open-e-drums.tumblr.com/
YouTube :https://www.youtube.com/channel/UCNCDcIO26xL_NhI04QY-v4A
3D Models of Pad :https://www.thingiverse.com/RyoKosaka/designs

This software is an alpha version, and is unsupported.
Use at your own risk.

Features

  • Single piezo pad, Dual piezo pad, 2-Zone cymbal, 3-Zone cymbal
  • Compatible with Roland's 2 zone pads (PD Series)
  • Compatible with YAMAHA's 3 zone pads (XP Series)
  • Compatible with YAMAHA's 3 zone cymbal(PCY135/PCY155) and Roland's 2 zone cymbals(CY12C/CY5/CY8)
  • Compatible with SoftPot, FSR and Optical(TCRT5000) type hi-hat controllers and Roland's hihat(VH10/VH11)
  • Sensing with MUX(4051 and 4067)
  • Setting mode with LCD or OLED
  • Setting mode with LCD Keypad Shield (DFRobot, HiLetgo)
  • Sensitivity, Threshold, Scan Time, Mask Time, Note Number, Velocity Curve can be set with each pad
  • Save setting values with EEPROM
  • Works with ESP32 and Teensy and AVR boards such as UNO and MEGA.
  • Works with MIDI Library, BLE-MIDI Library, USB-MIDI library.

How to Use

  • Initialize EEPROM
    If you want to use EEPROM to store the settings, you will need to initialize the EEPROM. Please write the sample code, example > EEPROM > InitializeEEPROM > InitializeEEPROM.ino, to your Arduino. Once it's written, the initialization is complete.

  • Coding

     #include <hellodrum.h>
     #include <MIDI.h>
     MIDI_CREATE_DEFAULT_INSTANCE();
    
     //Please name your piezo.
     //The piezo named snare is connected to the A0 pin
     HelloDrum snare(0);
    
     //Setting
     byte SNARE[6] = {
       80, //sensitivity 
       10, //threshold
       20, //scantime
       20, //masktime
       38, //note
       1   //curve type
     }; 
    
     void setup()
     {
         MIDI.begin(10);
         snare.setCurve(SNARE[5]); //Set velocity curve 
     }
    
     void loop()
     {
         //Sensing
         snare.singlePiezo(SNARE[0], SNARE[1], SNARE[2], SNARE[3]); //(sensitivity, threshold, scantime, masktime)
    
         //Sending MIDI signals
         if (snare.hit == true) {
             MIDI.sendNoteOn(SNARE[4], snare.velocity, 10);  //(note, velocity, channel)
             MIDI.sendNoteOff(SNARE[4], 0, 10);
         }
     }
    
  • Coding (MUX):

     #include <hellodrum.h>
     #include <MIDI.h>
     MIDI_CREATE_DEFAULT_INSTANCE();
    
     //Define MUX Pins
     HelloDrumMUX_4051 mux(2,3,4,0);//D2, D3, D4, A0
     
     //Please name your piezo.
     //The piezo named snare is connected to MUX 0 pin
     HelloDrum snare(0);
    
     //Setting
     byte SNARE[6] = {
       80,  //sensitivity
       10,  //threshold
       20,  //scantime
       20,  //masktime
       38,  //note
       1    //curve type
     }; 
    
     void setup()
     {
         MIDI.begin(10);
         snare.setCurve(SNARE[5]); //Set velocity curve 
     }
    
     void loop()
     {
         //scanning all pin of mux
         mux.scan();
    
         //Sensing
         snare.singlePiezoMUX(SNARE[0], SNARE[1], SNARE[2], SNARE[3]); //(sensitivity, threshold, scantime, masktime)
    
         //Sending MIDI signals
         if (snare.hit == true) {
             MIDI.sendNoteOn(SNARE[4], snare.velocity, 10);  //(note, velocity, channel)
             MIDI.sendNoteOff(SNARE[4], 0, 10);
         }
     }
    

    Check instruction.md for more info on coding.

Using Arduino MIDI Library

FortySevenEffects Arduino MIDI Library
There are three ways to communicate with a PC using MIDI with an arduino.

  1. Rewrite arduino's USB chip (UNO,MEGA only)
  2. Using Hairless MIDI (Easiest way)
  3. Using a MIDI terminal and a MIDI-USB cable
#include <hellodrum.h>
#include <MIDI.h>
MIDI_CREATE_DEFAULT_INSTANCE();

//...

Using USB-MIDI Library

lathoub Arduino-USBMIDI
If you are using atmega32u4 (Arduino Leonardo, Arduino Micro, Arduino Pro Micro...), you can use USB-MIDI library. No additional software is needed, the 32u4 is recognized as a MIDI device.

#include <hellodrum.h>
#include <USB-MIDI.h>
USBMIDI_CREATE_DEFAULT_INSTANCE();

//...

Using BLE-MIDI Library with ESP32

lathoub Arduino-BLE-MIDI
It is very easy to use BLE-MIDI with ESP32.
You can find a device named "BLE-MIDI".

#include <hellodrum.h>
#include <BLEMIDI_Transport.h>
#include <hardware/BLEMIDI_ESP32.h>
BLEMIDI_CREATE_DEFAULT_INSTANCE();

//...

Please check the KORG's documentation for instructions on how to connect.
KORG Bluetooth MIDI Connection Guide

Sensing Method and Setting Values

Be sure to check here first if it is not working properly.
Check sensing.md for sensing methods.
Check setting.md for setting values.

Circuit

Check circuit.md for how to connect the pad and the board.

Pads

The STL data of pads from 6 inches to 12 inches, hi-hat controllers(https://www.thingiverse.com/RyoKosaka/designs)

Release History

  • 0.7.7
    • Bug fix for ESP32
    • Add and Update sample codes about BLE-MIDI, USB-MIDI
  • 0.7.6
    • Bug fix for LCD and buttons
    • Add and Update sample codes
  • 0.7.5
    • Bug fix for ESP32
    • Bug fix for hihatControl()
    • Update sample codes
    • Add pullup mode to deal with floating pins (Beta)
    • Add debug mode
  • 0.7.4
    • Add velocity curve function
    • FSR() and TCRT5000() integrated into hihatControl()
    • Update circuits
    • Add circuit images
    • Update sensing algorithm
    • Add sensing figure
    • Update sample code
    • Organize the source code
  • 0.7.3
    • Update variables type
    • Add button function for LCD keypad shield
    • Add sample code "lcdShield.ino" for LCD keypad shield
  • 0.7.2
    • Update sample code
    • Add Knob function
    • Add sample code for Teensy
  • 0.7.1
    • Sensing with 16ch MUX(4067) is available
    • Update sample code
    • Organize folders and files
    • Add library.properties
    • Teensy3.2 has been tested
  • 0.7.0
    • Improved sensing
    • Dual Piezo sensing available (Test)
    • ESP32 EEPROM available
    • Setting mode with I2C LCD or I2C OLED available
    • Add sample code
  • 0.6.0
    • Sensing with MUX(4051) is available
    • Add BLE MIDI sample code with ESP32
    • Hihat Contorller with FSR is available
  • 0.5.0
    • Setting mode available
    • Display function by LCD is available
    • Saving function of setting items by EEPROM is available
    • Improved sensing of TCRT 5000 hi-hat controller
  • 0.1.0
    • Work in progress

ToDo

  • rimGain
  • retriggerCancel
  • rotaryEncoder

Author

@tnctrekit
Works

Licence

MIT

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].