Is this the ultimate DIY hardware VU meter? - Page 3
Page 3 of 4 FirstFirst 1234 LastLast
Results 21 to 30 of 39
  1. #21
    Tech Mentor
    Join Date
    Sep 2010
    Posts
    444

    Default

    Quote Originally Posted by MiL0 View Post
    yeah - you can configure the software to display whatever you like on each VU. If you buy a 4 x width LCD display then you could display 4 decks' VU meters at the same time theoretically. Let me know what you have in mind and I'll reprogram the utility to fit your needs.

    In the medium/long term however, I'm looking to replace the USB LCD display with an LCD display that hooks directly up to an Arduino. This means you shouldn't need to run any immediadery software and everything should be plug'n'play. Apart from providing OSX compatibility (which wasn't possible before), it'll mean that anyone who's designing a new DIY controller should be able to use Arduino as the usb midi brain with an easy to implement VU meter.
    An arduino can be used to control everything? or would u still need a interface the "the brain' from livid instruments.
    Equipment------
    --HP Dv6T Select Editon. i5 6gb DDR3, backlit keys and touchscreen.

  2. #22
    Tech Guru MiL0's Avatar
    Join Date
    May 2009
    Location
    Brighton / Bangkok
    Posts
    1,386

    Default

    yeah the Arduino would receive inputs from buttons, encoders and potentiometers as well as output to an LCD display. My goal is to create a script that allows all these features and that anyone can upload to a ~£20 arduino to create their own perfect DIY controller.

  3. #23
    Tech Mentor
    Join Date
    Sep 2010
    Posts
    444

    Default

    But how many? I want to do a 4 channel mixer with a 4 band eq
    Equipment------
    --HP Dv6T Select Editon. i5 6gb DDR3, backlit keys and touchscreen.

  4. #24
    Tech Mentor
    Join Date
    Sep 2010
    Posts
    444
    Equipment------
    --HP Dv6T Select Editon. i5 6gb DDR3, backlit keys and touchscreen.

  5. #25
    Tech Guru MiL0's Avatar
    Join Date
    May 2009
    Location
    Brighton / Bangkok
    Posts
    1,386

    Default

    Quote Originally Posted by BennyJ View Post
    This uses a serial connection so would need to be wired up to a microprocessor style midi brain (like an arduino or midibox)

    Quote Originally Posted by BennyJ View Post
    This is just 10 led's mounted in a unit so could be used in any sort of circuit. You'd still need some sort of 'brain' to get the led's working but you've got a lot more choices (U-HID, joystick controllers, etc).

    The easiest thing to do would be to buy the USB LCD display that I linked to in my first post. Then you can use your pc and some software to control the LCD (make it display VU meters etc).

    Otherwise, you'll have to wait until someone gets it all working via an Arduino.

  6. #26
    Tech Mentor
    Join Date
    Sep 2010
    Posts
    444

    Default

    Ah ok makes sense
    Equipment------
    --HP Dv6T Select Editon. i5 6gb DDR3, backlit keys and touchscreen.

  7. #27
    Tech Mentor
    Join Date
    Feb 2011
    Location
    Southern Ontario, Canada
    Posts
    244

    Default

    Quote Originally Posted by MiL0 View Post
    Otherwise, you'll have to wait until someone gets it all working via an Arduino.
    Oh... like this? I can upload a schematic if anyone wants one... but essentially it uses 4x 75HC595 shift registers, two each for each channel (using 2 per channel actually allows for 16 leds, I didnt have enough spares on hand)...

    Code:
    #include "Midi.h" //from: http://timothytwillman.com/itp_blog/?page_id=240
    #define NUM_LEDS_CH1 12
    #define NUM_LEDS_CH2 12
    #define LATCH_CH1 6
    #define CLOCK_CH1 5
    #define DATA_CH1 7
    #define LATCH_CH2 9
    #define CLOCK_CH2 8
    #define DATA_CH2 10
    #define CHANNEL_A_LEVEL 1 //CC#
    #define CHANNEL_B_LEVEL 2 //CC#
    
    class MyMidi : public Midi {
      public:
    
      MyMidi(HardwareSerial &s) : Midi(s) {}
      
      void handleNoteOn(unsigned int channel, unsigned int note, unsigned int velocity) {digitalWrite(13, HIGH);}
      void handleNoteOff(unsigned int channel, unsigned int note, unsigned int velocity){digitalWrite(13, LOW);}
    
      void handleControlChange(unsigned int channel, unsigned int controller, unsigned int value) {
        if (channel != 4) return; // we only are about channel 4 atm
        if (controller == CHANNEL_A_LEVEL) {    
          byte mapped = map(value,0,127,0,NUM_LEDS_CH1);
          unsigned int graphCh1 = 0;
          for (byte i=0;i<mapped;i++) bitSet(graphCh1,i);
          digitalWrite(LATCH_CH1, LOW);
          shiftOut(DATA_CH1, CLOCK_CH1, MSBFIRST, highByte(graphCh1));
          shiftOut(DATA_CH1, CLOCK_CH1, MSBFIRST, lowByte(graphCh1));
          digitalWrite(LATCH_CH1, HIGH);
        }
        if (controller == CHANNEL_B_LEVEL) {
          byte mapped = map(value,0,127,0,NUM_LEDS_CH2);
          unsigned int graphCh2 = 0;
          for (byte i=0;i<mapped;i++) bitSet(graphCh2,i);
          digitalWrite(LATCH_CH2, LOW);
          shiftOut(DATA_CH2, CLOCK_CH2, MSBFIRST, highByte(graphCh2));
          shiftOut(DATA_CH2, CLOCK_CH2, MSBFIRST, lowByte(graphCh2));
          digitalWrite(LATCH_CH2, HIGH);
        }
      }
    };
    
    MyMidi midi(Serial);
    
    void setup() {
      pinMode(LATCH_CH1, OUTPUT);
      pinMode(DATA_CH1,  OUTPUT);
      pinMode(CLOCK_CH1, OUTPUT);
      pinMode(LATCH_CH2, OUTPUT);
      pinMode(DATA_CH2,  OUTPUT);
      pinMode(CLOCK_CH2, OUTPUT);
    
      digitalWrite(LATCH_CH1, LOW);
      shiftOut(DATA_CH1, CLOCK_CH1, MSBFIRST, 0);
      shiftOut(DATA_CH1, CLOCK_CH1, MSBFIRST, 0);
      digitalWrite(LATCH_CH1, HIGH);
    
      digitalWrite(LATCH_CH2, LOW);
      shiftOut(DATA_CH2, CLOCK_CH2, MSBFIRST, 0);
      shiftOut(DATA_CH2, CLOCK_CH2, MSBFIRST, 0);
      digitalWrite(LATCH_CH2, HIGH);
    
    //  Serial.begin(9600);
      midi.begin(0);
    //  Serial.println("Begin");
    }
    
    void loop() {
      midi.poll();
    }

  8. #28
    Tech Mentor
    Join Date
    Feb 2011
    Location
    Southern Ontario, Canada
    Posts
    244

    Default

    Ok, I was bored, so I whipped this up... I havent tested it, but from memory it should be right...

    Edit: minor correction to the schematic... R26 (in the midi in section) should be a 1k resistor

    Last edited by DjNecro; 02-12-2011 at 05:56 PM.

  9. #29
    Tech Guru MiL0's Avatar
    Join Date
    May 2009
    Location
    Brighton / Bangkok
    Posts
    1,386

    Default

    nice work man - you're definitely an asset on these forums! I can't wait until my arduino arrives so I can try some of this stuff out.

    I think it might be more useful to use an LCD display like my original post though, rather than LED's. Should mean less wiring but also an LCD display is arguably more versatile than LED's. Any ideas how easy it is to program LCD display code for the Arduino?

    edit: ah, there's a library here:

    http://www.arduino.cc/en/Tutorial/LCDLibrary

    looks really straightforward! should be fairly trivial to get a VU meter working...

    edit2: check out this colour LCD arduino shield:



    for sale here for $19.95: [ame="http://www.amazon.com/RGB-LCD-Shield-Arduino-color/dp/accessories/B003MTT0ZW"]Amazon.com: RGB LCD Shield for Arduino 65K color KIT: Electronics@@AMEPARAM@@http://ecx.images-amazon.com/images/I/512Lf%2BrPEmL.@@AMEPARAM@@512Lf%2BrPEmL[/ame]

    edit3: and here's a more standard LCD display like I used in my original post:

    [ame="http://www.amazon.com/LCD-Module-Arduino-White-Blue/dp/B003B258BU"]Amazon.com: LCD Module for Arduino 16 x 2, White on Blue: Everything Else@@AMEPARAM@@http://ecx.images-amazon.com/images/I/31P-Mk4fjgL.@@AMEPARAM@@31P-Mk4fjgL[/ame]

  10. #30
    Tech Mentor
    Join Date
    Feb 2011
    Location
    Southern Ontario, Canada
    Posts
    244

    Default

    you mean a normal lcd 2x20 type screen right? not the ones you have in your cdj2000 style build...

    More flexibility for sure, but not so much less wiring in the sense of the pin requirements of lcd's over using leds with multiplexers (64+ leds using 3 pins vs 7 pins for each lcd)

    They're fairly easy to program, however it can depend on the type of screen you have. The one you posted about is usb based... talking usb from an arduino is not an easy task... I would likely go with one like this: http://www.sparkfun.com/products/256

    It's pretty much the same thing, but without the usb controller built in... the downside is that it takes 7 digital pins to use (when used in 4bit mode).. There is plenty of example code out there... it can be as simple as this:

    Code:
      while (analogRead(aPinIn) == 0) {
        if (dispWaiting) {
          lcd.clear();
          lcd.setCursor(centerText("No Resistor..."),0);
          lcd.print("No Resistor...");
          lcd.setCursor(centerText("Waiting"),1);
          lcd.print("Waiting");
          dispWaiting = false;
        }
      }
    There would be a bit more involved for a vu meter, as you would probably want custom characters so you can use each column of the lcd characters...

Page 3 of 4 FirstFirst 1234 LastLast

Posting Permissions

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