5050 RGB LED strip controller

So I am looking for help with coding. I am willing to pay and work something out with someone who can code me the following

I want to control an RGB LED 5050 strip using an arduino with a rotary encoder which has a pushbutton function on it (it has 5 pins) Each number represents pushing the rotary encoder once.

  1. On
    At this point turning the rotary encoder will change the HUE of the LEDs.
  2. Change luminosity of LEDs using the microphone
    At this point turning the rotary encoder will change the HUE of the LEDs.
  3. Change hue of LEDS using the microphone
    At this point turning the rotary encoder will change the luminosity of the LEDs.
  4. Hue of LEDS change randomly, speed controlled by rotary encoder (ex. turning encoder gives a delay from 0-10)
  5. Off

I do have some code that will change the huge of the LEDs based of of an input from an electic mike so its just a matter of altering it now to do the rest.

  1. //Van der Stappen ©
  2. #define REDPIN 5
  3. #define GREENPIN 6
  4. #define BLUEPIN 3
  5. int redNow;
  6. int blueNow;
  7. int greenNow;
  8. int redNew;
  9. int blueNew;
  10. int greenNew;
  11. void setup()
  12. {
  13. pinMode(7,INPUT); //SIG of the Parallax Sound Impact Sensor connected to Digital Pin 7
  14. pinMode(REDPIN, OUTPUT);
  15. pinMode(GREENPIN, OUTPUT);
  16. pinMode(BLUEPIN, OUTPUT);
  17. redNow = random(255);
  18. blueNow = random(255);
  19. greenNow = random(255);
  20. redNew = redNow;
  21. blueNew = blueNow;
  22. greenNew = greenNow;
  23. }
  24. #define fade(x,y) if (x>y) x--; else if (x<y) x++;
  25. void loop()
  26. {
  27. boolean soundstate = digitalRead(7);
  28. if (soundstate == 1) {
  29. analogWrite(BLUEPIN, blueNow);
  30. analogWrite(REDPIN, redNow);
  31. analogWrite(GREENPIN, greenNow);
  32. redNew = random(255);
  33. blueNew = random(255);
  34. greenNew = random(255);
  35. // fade to new colors
  36. while ((redNow != redNew) ||
  37. (blueNow != blueNew) ||
  38. (greenNow != greenNew))
  39. {
  40. fade(redNow,redNew)
  41. fade(blueNow,blueNew)
  42. fade(greenNow,greenNew)
  43. analogWrite(BLUEPIN, blueNow);
  44. analogWrite(REDPIN, redNow);
  45. analogWrite(GREENPIN, greenNow);
  46. delay(1);
  47. }
  48. }
  49. else{
  50. digitalWrite(REDPIN,0);
  51. digitalWrite(GREENPIN,0);
  52. digitalWrite(BLUEPIN,0);
  53. }
  54. }
    "