The BIG Arduino MIDI controller thread - Page 13
Page 13 of 16 FirstFirst ... 3910111213141516 LastLast
Results 121 to 130 of 153
  1. #121
    Tech Mentor
    Join Date
    Sep 2013
    Posts
    159

    Default

    hmmn, actual ram isn't the issue, it would appear that the eeprom is only 1KB on the leonardo board, so I'd really have to cut that down to 32-48 to make sure there's plenty of space for 2 colours. I could use a different board, a due or a mega2560 would do it.

  2. #122
    Tech Convert
    Join Date
    Feb 2014
    Posts
    6

    Default

    Not wanting to hijack the thread but I am trying to make a DIY Arduino Uno HID controller, I've got some code to work with, (it is basically a many axis joystick) and I've had a simple example working (4 axis and about 10 buttons)
    I have just about figured out writing up the firmware to make the arduino HID (I've had it kicking out a 64 Byte report although it was random garbled data)
    I've run into problems with my lack of coding know how, so I'm starting again this time in a modular fashion.
    The aim for mark 1 is 48 *8bit pots and 128 *single bit buttons.

    Introduction over, question does anyone here know much about this topic? Could I get help here when I get stuck?

  3. #123
    Tech Mentor
    Join Date
    Sep 2013
    Posts
    159

    Default

    Hi, I don't know so much about HID, doesn't the software need to know about the HID coming from your controller to use it? What software are using with your controller?


    I'm also guessing that to put 128 buttons and 48 pots, you're going to need quite a few port expander chips, the uno only has something like 22-24? pins.

  4. #124
    Tech Convert
    Join Date
    Feb 2014
    Posts
    6

    Default

    Quote Originally Posted by ReggieUK View Post
    Hi, I don't know so much about HID, doesn't the software need to know about the HID coming from your controller to use it? What software are using with your controller?


    I'm also guessing that to put 128 buttons and 48 pots, you're going to need quite a few port expander chips, the uno only has something like 22-24? pins.
    The software is virtualdj, (and if you don't already know) in vdj you give a name to a piece of HID data (bit, bits, byte's etc) in a xml, and in another xml you assign a command to a name.

    (the uno has 6 analogue and 14 digital pins, [2 of which I can't use because of the firmware code])
    As of ICs, I have used 4*32 channel multiplexers for the buttons and 3*16 channel multiplexers for the analogue,
    Which has worked out pretty cheap. (finding nice pots and buttons will add to the cost)

    so I've used 5 digital pins for Muxing control, 3 or the 6 analogue for analogue in and 4 digital ins for the buttons.

    My device is working, I'm trying to figure out code hosting to share (Why is nothing simple anymore?)

    I'm now trying for a version 2 that has all of the above and an extra 32 * 10 bit analogue inputs, (I dislike the response of 8 bit sliders)

    I have the device outputting 128 bytes but there is an error somewhere that copies the original 64 bytes twice.
    I shall post a link to the code once I figure out how to host.

  5. #125
    Tech Mentor
    Join Date
    Sep 2013
    Posts
    159

    Default

    github is good for hosting. I wanted to do 32 buttons but I don't really want to mess with port expanders, so I've used an arduino mega2560, which has 54? digital io + 16 analog inputs. my analog inputs are very clean for 8 bits.

  6. #126
    Tech Mentor
    Join Date
    Sep 2013
    Posts
    159

    Default

    In my quest to build a controller, I have now built a precision pitch fader, it's fairly simple, just a decent 10k 128mm fader pot from ebay, arduino leonardo and an ads1115 breakout board from adafruit. Using an external power source for the ads1115 breakout.

    My original target was to be twice as good as the behringer cmd pl-1 which is 10bits (0-1023), what I've ended up with is 12bits :-) Well, it's actually 11.5bits because I haven't bothered to match the voltage to the gain amp, however at this stage it wasn't important, the fact remains that I now have a pitch fader with at least double the precision of the behringer, so I now have as good a pitch fader as the best on the market, which if I did my research correctly is a pioneer cdj-2000 nexus :-D

    I deal with the mismatch in max measured voltage and amp gain in software, I simply constrain the incoming values to just above their minimum and below their max values, then map those down to the 11bits I need, this gives a nice smooth linear reading and I can get on with mixing instead of wondering why I'm constantly chasing a tune.

  7. #127
    Tech Mentor
    Join Date
    Oct 2012
    Posts
    158

    Default

    Quote Originally Posted by locodog View Post
    The aim for mark 1 is 48 *8bit pots and 128 *single bit buttons.
    There is no such thing as "8 bit pot". What do you mean by this?
    Shantea Controls - Custom MIDI controllers: Official | Youtube | Instagram | Tindie
    DJ Mixes: Psychill, Psydub, Dub | House, Progressive, Techno | Dubstep

  8. #128
    Newbie
    Join Date
    May 2014
    Posts
    1

    Default

    Quote Originally Posted by ReggieUK View Post
    In my quest to build a controller, I have now built a precision pitch fader, it's fairly simple, just a decent 10k 128mm fader pot from ebay, arduino leonardo and an ads1115 breakout board from adafruit. Using an external power source for the ads1115 breakout.

    My original target was to be twice as good as the behringer cmd pl-1 which is 10bits (0-1023), what I've ended up with is 12bits :-) Well, it's actually 11.5bits because I haven't bothered to match the voltage to the gain amp, however at this stage it wasn't important, the fact remains that I now have a pitch fader with at least double the precision of the behringer, so I now have as good a pitch fader as the best on the market, which if I did my research correctly is a pioneer cdj-2000 nexus :-D

    I deal with the mismatch in max measured voltage and amp gain in software, I simply constrain the incoming values to just above their minimum and below their max values, then map those down to the 11bits I need, this gives a nice smooth linear reading and I can get on with mixing instead of wondering why I'm constantly chasing a tune.
    Could you post some pictures and perhaps the code you've written? I'm currently trying to do something similar, actually I am modding my Gemini G2V with Teensy3.1 for 14-bit MIDI, and this is something I'd love for the pitch control.
    Thanks in advance!

  9. #129
    Tech Mentor
    Join Date
    Sep 2013
    Posts
    159

    Default

    I would have thought that he means using a pot attached to an adc that's capable of outputting 0-255 values?

  10. #130
    Newbie
    Join Date
    Jun 2014
    Location
    México city
    Posts
    3

    Default Rotary encoder ending CC messages.

    Hi, i´m new to Arduino and i just make this little piece of code to read a rotary encoder and send cc messages based on the reads, at this time the code is working as expected, i hope this could be useful to other people.

    The code is based on a sketch by Max Wolf using the Arcore fork by Rkistner to send midi over usb with Arduino Leonardo you can google it to use with some atmega32u4 boards.
    ------------------------------------------------------------------------------------

    int PinA = 0; //declara las entradas del encoder
    int PinB = 1;
    int PinALast = LOW; // declara el ultimo valor de A
    int a = LOW;
    int b = LOW;

    void setup() {
    pinMode (PinA,INPUT);
    pinMode (PinB,INPUT);
    digitalWrite (PinA, HIGH);
    digitalWrite (PinB, HIGH);
    }
    // this is the part provided by Rkistner.
    void CC(byte channel, byte ccnumb, byte value) {
    MIDIEvent CC = {0x0B, 0xB0 | channel, ccnumb, value};
    MIDIUSB.write(CC);
    }

    void loop() { // the loop will read the values from the encoder
    a = digitalRead(PinA);
    b = digitalRead(PinB);
    delay (3); // delay to debounce, No needed if you connect a .10uf capacitor
    // between each pin (A, B) and the common pin
    if (a != PinALast) { // compares the pin with it's last value, if it has changed then...
    if(a == b) //if they are equals
    {
    CC(0, 16, 127); //send a 127 value on channel 0 to the midi CC channel number 16
    }
    else //otherwise send a 0 value on channel 0 to the midi CC channel number 16
    {
    CC(0, 16, 0);
    }
    PinALast = a;
    }
    }

    -----------------------------------------------------------------------------------

    You can see the code working here:
    Last edited by Rideonbeat; 07-28-2014 at 09:23 PM.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •