PedalinoMini
Bounce2
Our great sponsors
PedalinoMini | Bounce2 | |
---|---|---|
6 | 5 | |
443 | 559 | |
- | - | |
7.7 | 6.4 | |
16 days ago | 3 months ago | |
C | C++ | |
GNU General Public License v3.0 only | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
PedalinoMini
-
Paralysis, but not the feature kind...
You could get the cheapest midi capable switcher, add a widi jack (~50$) and then build a small midi control device, to mount on your guitar. With pedalino mini such midi Controller could be built for ~20$. Here's a link to the project https://github.com/alf45tar/PedalinoMini
-
Small battery-powered looping rig help.
My setup is the xtone for guitar/vocals, a Korg nano studio pro, as a homemade midi foot switch board (based on this https://github.com/alf45tar/PedalinoMini) and loopy. I use the xtone for guitar effect switching and my switchboard for loopy foot control.
-
Best app/pedal combo for live looping on iPad?
I love using loopy and I made one of these: https://github.com/alf45tar/PedalinoMini/blob/master/README.md
-
Needing tips on my first midi controller build.
Pedalino Mini Is a good project to take a look at.
-
Not sure where else to post this. Looking to make a TRS Expression Pedal input to MIDI (USB?) converter - I'm surprised - it seems like this sort of thing doesn't really exist. I've found two of them on the internet and they're really expensive
Check out Pedalino. https://github.com/alf45tar/PedalinoMini
- Morningstar inspired midi controller, mostortion and deep six clones
Bounce2
-
Scoreboard/7 Segment display code help
// INCLUDES // Interfacing to programmable LED strips, see https://fastled.io/ #include // For debouncing button input, see https://github.com/thomasfredericks/Bounce2 #include // DEFINES // How many LEDs are used in each digit #define NUM_LEDS_PER_DIGIT 29 // Total number of LEDs in the strip #define NUM_LEDS 116 // The pin which is connected to the DataIn of the LED strip #define DATA_PIN 2 // If defined, timer shows minutes and seconds MM:SS, rather than seconds SSSS // #define DISPLAY_MMSS // CONSTANTS // The following array defines the sequence of LEDs that should be lit to represent each digit 0-9 // This will vary depending on the order in which the strip has been physically wired through // the segments, the number of LEDs in each segment, whether there are any unused LEDs in the strip // (e.g. between digits) etc. // Segments of a 7-segment display are generally labelled as follows: // /-A-\ // F B // --G-/ // E C // \-D-/ // The way I've wired the strips is: // - Strip is fed through the segments in the order G->B->A->F->E->D->C (then onto the next digit) // - There are 4 LEDs in each segment // - There is a single unused LED in the strip between segments F and E // - This makes the total length of 29 LEDs in the strip for each digit // - I'm packing these into a single 32-bit integer, and since bitwise operations are MSB, this will // be counted from the right-hand side, and then padded at the front with 3x0s up to 32 bits. // e.g. 0b000ccccddddeeee0ffffaaaabbbbgggg const uint32_t digits[10] = { 0b00011111111111101111111111110000, // 0 0b00011110000000000000000011110000, // 1 0b00000001111111100000111111111111, // 2 0b00011111111000000000111111111111, // 3 0b00011110000000001111000011111111, // 4 0b00011111111000001111111100001111, // 5 0b00011111111111101111111100001111, // 6 0b00011110000000000000111111110000, // 7 0b00011111111111101111111111111111, // 8 0b00011111111000001111111111111111, // 9 }; // Input pins const byte leftPin = 6; const byte startPin = 5; const byte rightPin = 4; // GLOBALS // The array of RGB values assigned to each LED in the strip CRGB leds[NUM_LEDS]; // Bounce objects to read debounced button input Bounce2::Button btnStart = Bounce2::Button(); Bounce2::Button btnLeft = Bounce2::Button(); Bounce2::Button btnRight = Bounce2::Button(); // The time at which the counter was (most recently) started unsigned long startTime; // Duration is specified in ms. So 1000 = 1 second, 60000 = 1 minute, etc. unsigned long timerDuration = 0; // Keep track of elapsed time from previous start/stop cycles unsigned long cumulativeElapsedTime; // Keep track of the current state of the device enum State {Inactive, Active}; State state = State::Inactive; // Count direction enum Mode {CountUp, CountDown}; Mode mode = Mode::CountUp; // FUNCTIONS // Set the values in the LED strip corresponding to a particular display/value void setDigit(int display, int val, CHSV colour){ for(int i=0;i(leds, NUM_LEDS); // Configure the debounced inputs btnStart.attach(startPin, INPUT_PULLUP); btnLeft.attach(leftPin, INPUT_PULLUP); btnRight.attach(rightPin, INPUT_PULLUP); state = State::Inactive; } // This function runs over and over void loop() { // Check whether any buttons have been pressed btnStart.update(); btnLeft.update(); btnRight.update(); // Grab the current timestamp unsigned long currentTime = millis(); // Calculate the value to be displayed static long timeValue = 0; // The colour hue in which the time will be displayed int timeHue = 170; // What to do next depends on the current state of the device if(state == State::Active) { if(mode == Mode::CountDown) { // The time remaining is the total game duration, less the time spent during the // current period of play, less the time elapsed during any previous sessions // or other deductions timeValue = timerDuration - (currentTime - startTime) - cumulativeElapsedTime; // Map colour hue from green -> red based on fraction of time remaining timeHue = map(timeValue, 0, timerDuration, 0, 100); // Countdown has reached zero if(timeValue <= 0) { timeValue = 0; state = State::Inactive; } } else if(mode == Mode::CountUp) { // Time is however long since we started counting, plus any previous existing time timeValue = (currentTime - startTime) + cumulativeElapsedTime; // Constant colour timeHue = 0; } // Toggle whether timer is active if(btnStart.pressed()) { Stop(); } } else if(state == State::Inactive){ // Cycle colour hue while paused (BPM, from_value, to_value) timeHue = beatsin8(20, 0, 40); // Subtract from countdown duration if(btnLeft.pressed()) { if(timerDuration >= 60000) { timerDuration -= 60000; } timeValue = timerDuration; Reset(); } // Add to countdown duration if(btnRight.pressed()) { timerDuration += 60000; timeValue = timerDuration; Reset(); } // Start timer if(btnStart.pressed()) { // Set mode depending on whether duration had been set if(timerDuration == 0) { mode = Mode::CountUp; } else { mode = Mode::CountDown; } // Activate the counter Start(); } } // Display as mm:ss #ifdef DISPLAY_MMSS // Use modulo to calculate "remainder" seconds int seconds = (timeValue / 1000) % 60; int minutes = timeValue / 60000; // Units setDigit(3, seconds%10, CHSV(timeHue, 255, 255)); // Tens setDigit(2,(seconds/10)%10, CHSV(timeHue, 255, 255)); // Hundreds setDigit(1, minutes%10, CHSV(timeHue, 255, 255)); // Thousands setDigit(0,(minutes/10)%10, CHSV(timeHue, 255, 255)); // Display in seconds #else // Units setDigit(3, (timeValue / 1000) % 10, CHSV(timeHue, 255, 255)); // Tens setDigit(2, (timeValue / 10000) % 10, CHSV(timeHue, 255, 255)); // Hundreds setDigit(1, (timeValue / 100000) % 10, CHSV(timeHue, 255, 255)); // Thousands setDigit(0, (timeValue / 1000000) % 10, CHSV(timeHue, 255, 255)); #endif // Send the updated values to the LED strip FastLED.show(); delay(20); }
-
Need Help
The associated library on Github has a short description of how to install the library.
-
AVR debounce with release?
I use the Bounce2 library. https://github.com/thomasfredericks/Bounce2
-
Morningstar inspired midi controller, mostortion and deep six clones
Thanks for the comments guys! As I said before I build everything with a teensy 3.1 I had for another project that never got made. There is a pretty good MIDI library for arduino/teensy that has great examples for send and receiving MIDI messages. Thats a great place to start getting the hang out of MIDI. The teensy site even has a diagram for building the pcb yourself , so thats what I also followed: https://www.pjrc.com/teensy/td_libs_MIDI.html. Another helpful library for using momentary switches with the arduino is the bounce library (https://github.com/thomasfredericks/Bounce2). I took this lib as a foundation for all the press events. As I said, the MC6 has a ton of different press events that you can assign messages to, but for my use case implementing all of those would've been an overkill. Another great source for understanding why such a library would be helpful is this site: https://www.coda-effects.com/2016/04/relay-bypass-conception-and-relay.html.
-
Crapdek v1.1, a simple stream deck. My first real creation with Arduino. Details, code, and more pics in comments.
There's a lot of discussion in here about how to debounce your buttons (fixing the "jittery" nature of your buttons). As a software developer, I can tell you the easiest way is to use someone else's code! check out: https://github.com/thomasfredericks/Bounce2
What are some alternatives?
libossia - A modern C++, cross-environment distributed object model for creative coding and interaction scoring
esp32-ble2mqtt - A BLE to MQTT bridge running on an ESP32
bluetooth - Cross-platform Bluetooth API for Go and TinyGo. Supports Linux, macOS, Windows, and bare metal using Nordic SoftDevice or HCI
Pigiron - Pigiron is a MIDI routing utility with an extensive OSC interface.
Band-Music-Controller-Project - This project is about showing what potential the Band 2 has as a standalone and app-less accessory. With Bluetooth enabled, this device can be a wrist-mounted music controller as well as a health tracker!
Magic-Pocket-Control-ESP32 - Blackmagic Design Camera Control for ESP32 devices (feat. LILYGO T-Display-S3, M5Stack M5CoreS3, M5Stack Basic, M5Stack M5StickC Plus, Freenove ESP32-S3-WROOM
Gesture-Detecting-Macro-Keyboard - Glorified Bluetooth macro keyboard with machine learning (TensorFlow Lite for Microcontrollers) running on an ESP32.
realearn - ReaLearn 2: Sophisticated MIDI/MCU/OSC learn for REAPER