Code Monkey home page Code Monkey logo

midilin's Introduction

Arduino Midi Ribbon Controller

Demo

This project was inspired by Wintergatan's Modulin https://www.youtube.com/watch?v=MUdWeBYe3GY

Features

  • 2 x 24 quantized notes on a 50cm long neck
  • Able to switch between all 7 music modes while retaining quantization
  • +/- Semitone Tranpose and +/- Octave Tranpose
  • Finger pressure controls modulation
  • Volume controllable by adjusting the pot at the end of the neck
  • LED reacts to finger position
  • Pitchbend by using the analog stick

Demo

Main components

Theory by : https://synthhacker.blogspot.ca/2016/03/diy-midi-ribbon-controller.html Code adapted from https://github.com/deanm1278/arduinoRibbonController/blob/master/synth_v3.ino

Schematics

Schematics

Note : In the prototyping board, all nodes in a black rectangle are connected together

Note : The softpots are placed over the force sensitive resistors ( see picture below)

Pins connection

  • Softpots : A4,A2
  • FSRs : A5,A3
  • Pot : A8
  • Analog Stick : A7
  • Neopixel : D21

First time calibration

  • Set the A0 potentiometer all the way down on the midi shield.
  • Uncomment Serial.begin(115200) and comment Serial.begin(31250);
  • Uncomment calibrate() at line 168
  • To calibrate the softpots, open a serial console. When it says "waiting" press on one of the softstick and set the A0 potentiometer up on the midi shield. Once you see the confirmation in the console output turn it back down and proceed back to the next fret. Repeat for N_FRET times and repeat the same for the second softpot. When it's done the program will write the calibration in to the EEPROM and you may comment the line 168 and switch the serial to 31250 baud again.
  • The notes that are close to the Arduino are lower

Manual

  • Semitone Transpose : Pressing one of black buttons on the midi shield will transpose up and the other black button will transpose down
  • Octave Transpose : Pressing the middle button AND one of the black button with do an octave transpose
  • Change musical mode : Turning the "lower" knob will change the music mode. When switching modes, the LEDs will light up according the mode you've chosen (1-7)
  • You need to twist the "upper" knob all the way up for it to work. This is a bug
  • Change volume : use the volume knob at the end of the stick
  • Pitch bend : Use the analog stick for pitchben
  • Modulation : Modulation is controlled by how hard you press on the stick, the harder you press the more modulation.
  • The midi out of the midi shield need to be plugged into your audio interface/midi converter
  • Power the Arduino either by pluggin the USB cable or through battery

Complete Closeup

midilin's People

Contributors

hanyangzhao avatar marekyggdrasil avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

midilin's Issues

Variable name meanings

Hi, my apologies for getting in touch via Issues, but I found it to be the most relevant way. I'm reading through your code so I can adapt it to create a digital modulin (including synthesizer). I'm currently stuck at calibrating because my soldering iron and parts are far away at home, so I'm just trying to work on the code as much as possible.

What are the T_vals (and other T_- prefixed variables) and S_vals (and other S_- prefixed variables)?

Help needed, troubleshooting the Midilin

Hi @HanYangZhao ,

Thanks for this great GitHub, I have built my own Midilin but need some help making it work.

My setup:
I am using a prototyping board at the moment before making the final assembly.
Note that I am only using one ribbon at the moment (I broke the other one while soldering >.<)

WeChat Image_20200123215616
WeChat Image_20200123215631

The issues:

  1. When I calibrate the SoftPot, I follow the first time calibration instructions and upload the code to the arduino (with MIDI shield switch in PROG mode). Everything seems fine, however To calibrate each fret instead of using the middle button of the MIDI shield i have to use the A0 knob instead and turn it from counter clockwise and then clockwise to write each address, i think this is a first sign that something is wrong in my setup.
    I get this messages on my serial:

CODE

code end

After calibrating the 50 frets, some strange symbols appear.

At this point I am not sure what to do next. What I did is re-comment the Calibrate lines, re-upload the "original" code and finally switch the MIDI shield to RUN.

I tried to connect to Ableton using the Synth 1 plugin you recommended. Ableton recognizes there is a new MIDI input, however no signals are received from it and therefore no music is being played.

ableton

My USB to MIDI cable
WeChat Image_20200123215648

Please let me know if you notice something that could be the problem in my setup.
Thank you in advance!

Andy

my modulin almost ready

Hi, i know that it is a 6 years ago progect, but I built my own Midilin yesterday. I have some simply questions:

  1. Does it works with only 1 string? Do i have to change only the N_STR parameter?

  2. If yes, what I have to do after calibration? Recharge the sketch commenting "calibrate()" and "serialBegin(112500)"?

  3. Do i have to connect only the midi out to the computer?

Because now i can calibrate but it doesn't work (i use VST called Surge XT)

Thank you for your help, I'm exited for this beautiful project :)

Bye from Italy!

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.