Running Procedure from main code from a library

Due to (un)popular demand; my (horrible) code!

I started over with the pasting in of files, and documented things i changed, so it should be easier to follow.
theres 4 tabs for the code, which i will now rattle off...

RGB_Controller

// #include <NECIRrcv.h> not included anymore

//Assignments
#define red_out 9
#define green_out 5
#define blue_out 6
#define red_in 0
#define green_in 1
#define blue_in 2
#define speakerpin 4
#define btn1 2
#define ir_pin 12
#define led 13
#define max_state 5

//Logitech Remote Codes
#define Test 4194694920
#define Input 4127848200
#define Effect 3793614600
#define Settings 3760191240
#define Power 4010866440
#define Sub_up 4228118280
#define Sub_down 4261541640
#define Centre_up 4244829960
#define Centre_down 4177983240
#define Surround_up 4278253320
#define Surround_down 4211406600
#define Volume_up 3843749640
#define Volume_down 4044289800
#define Mute 3910596360

//Fade Variables
float redinc, greeninc, blueinc;
float floattemp;

//Global Variables
int state = 0;
int delaytime = 0;
int delaytime2 = 0;
int increment = 0;
unsigned long ir_code;

   //NECIRrcv ir(ir_pin); was here

void setup()
{ 
  ir_set(ir_pin);  //moved set to here
  
  //Reset PWM outputs
  analogWrite(red_out, 255);
  analogWrite(green_out, 255);
  analogWrite(blue_out, 255);

  //Set Pinmodes
  pinMode(red_out, OUTPUT);      
  pinMode(green_out, OUTPUT); 
  pinMode(blue_out, OUTPUT); 
  pinMode(speakerpin, OUTPUT);
  pinMode(btn1, INPUT);
  
  //Setup IR, Serial, Interrupts, Timers
  ir_begin();
  Serial.begin(19200);
  attachInterrupt(0, btn1_press, RISING);

  //Startup Sequence
  play_tone(1915, 70);
  play_tone(1136, 70);
  play_tone(800, 70);
  play_tone(400, 100);
  fade_pot(1, 0);
  state = 0;
  toggle_pin(led);
}

void loop()
{
  Serial.println(state);
  ir_check();
  
  switch (state){
    case -2:
      set_rgb(0,0,0);
      break;
    case -1:
     if ((analogRead(red_out) > 0) 
     || (analogRead(green_out) > 0) 
     || (analogRead(blue_out) > 0))
       fade_pot(-1,0);
     break;
    case 0:
      manual_mix();
      break;
    case 1:
      effect_1();
      break;
    case 2:
      effect_2();
      break;  
     case 3:
      effect_3();
      break;   
     case 4:
      effect_4();
      break; 
     case 5:
      effect_5();
      break;   
  }
}

void logWrite(int colour,int pwmval)   //adapted version of analogWrite
{
  if (pwmval < 0)
    analogWrite(colour, 255);
  else if (pwmval > 255)
    analogWrite(colour, 0);
  else
    analogWrite(colour, 255-pwmval);
}

void set_rgb(int red, int green, int blue){
    logWrite(red_out, red);
    logWrite(green_out, green);
    logWrite(blue_out, blue);
}

void toggle_pin(int pin){
    digitalWrite(pin, !digitalRead(pin));
}

void play_tone(int tone, int duration) {
  for (long i = 0; i < duration * 1000L; i += tone * 2) {
    digitalWrite(speakerpin, HIGH);
    delayMicroseconds(tone);
    digitalWrite(speakerpin, LOW);
    delayMicroseconds(tone);
  }
}

void btn1_press(){
  state_inc(true);
  kill_effects();
}

void state_inc(boolean up){
  if (up == true){
    if (state != max_state){
      beep_std();
      state++;
    }else{
      beep_high();
    }
  } else {
    if (state != 0){
      beep_std();
      state--;
    }else{
      beep_low();
    }
  }
}

void beep_std(){
  play_tone(1000, 20);
}

void beep_low(){
  play_tone(1800, 20);
}

void beep_high(){
  play_tone(700, 20);
}

void ir_check(){ 
  if (ir_available()){
    ir_code = ir_read();
    switch (ir_code){
     case Power:
        if (state == -1){
          beep_low();
          state = -2;   
        }else{
          beep_high();
          beep_low();
          state = -1;
        }
        break;
      case Volume_up:
        state_inc(true);
        break;
      case Volume_down:
        state_inc(false);
        break;          
    }
    kill_effects();
  }
}

Effects

void manual_mix(){
  set_rgb(analogRead(red_in)/4, analogRead(green_in)/4, analogRead(blue_in)/4);
}

void effect_1(){
  fade_pot(-1, 0);
  fade_pot(1,0);
}

void effect_2(){
      increment = 1;
      delaytime = 2;
      for(int i = 0 ; i <= 255; i+=increment){ 
        logWrite(red_out, i);
        delay(delaytime);   
       } 
       for(int i = 255 ; i >= 0; i-=increment){ 
        logWrite(red_out, i);
        delay(delaytime);   
       } 
       for(int i = 0 ; i <= 255; i+=increment){ 
        logWrite(green_out, i);
        delay(delaytime);   
       } 
       for(int i = 255 ; i >= 0; i-=increment){ 
        logWrite(green_out, i);
        delay(delaytime);   
       } 
      for(int i = 0 ; i <= 255; i+=increment){ 
        logWrite(blue_out, i);
        delay(delaytime);   
       } 
       for(int i = 255 ; i >= 0; i-=increment){ 
        logWrite(blue_out, i);
        delay(delaytime);   
       } 
}


void effect_3(){
      increment = 1;
      delaytime = 2;
      for(int i = 0 ; i <= 255; i+=increment){ 
        set_rgb(i, 255-i, 0);
        delay(delaytime);   
       } 
       for(int i = 0 ; i <= 255; i+=increment){ 
        set_rgb(0, i, 255-i);
        delay(delaytime);   
       } 
       for(int i = 0 ; i <= 255; i+=increment){ 
        set_rgb(255-i, 0, i);
        delay(delaytime);   
       } 
}

void effect_4(){
      increment = 1;
      delaytime = 2;
      for(int i = 0 ; i <= 255; i+=increment){ 
        logWrite(red_out, i);
        delay(delaytime);   
       } 
       for(int i = 255 ; i >= 0; i-=increment){ 
        logWrite(red_out, i);
        delay(delaytime);   
       } 
       for(int i = 0 ; i <= 255; i+=increment){ 
        logWrite(green_out, i);
        delay(delaytime);   
       } 
       for(int i = 255 ; i >= 0; i-=increment){ 
        logWrite(green_out, i);
        delay(delaytime);   
       } 
      for(int i = 0 ; i <= 255; i+=increment){ 
        logWrite(blue_out, i);
        delay(delaytime);   
       } 
       for(int i = 255 ; i >= 0; i-=increment){ 
        logWrite(blue_out, i);
        delay(delaytime);   
       } 
}

void effect_5(){
    increment = 1;
    delaytime = 2000;
    delaytime2 = 100;
    for (int i = 1; i <= 3; i+=increment){
     switch (i) {
      case 1:
      set_rgb(255,0,0);
      break;
      case 2:
      set_rgb(0,255,0);
      break;
      case 3:
      set_rgb(0,0,255);
      break;
     }
     delay (delaytime2);
     set_rgb(0,0,0);
     delay (delaytime);
    }
}

void kill_effects(){
      delaytime = 0;
      delaytime2 = 0;
      increment = 1000;

}

void fade_pot(byte updown, int minimum){
  increment = 1;
  delaytime = 8; 
  if (updown == 1){
    for (int i = minimum ; i < 1001 ; i++){
      if (i>250) i+=increment;
      if (i>500) i+=increment;
      if (i>750) i+=increment;
      fade_pot_helper(i);
    }
  } else {
    for (int i = 1001 ; i > minimum ; i-=increment){
      if (i>250) i-=increment;
      if (i>500) i-=increment;
      if (i>750) i-=increment;
      fade_pot_helper(i);
    }
  }
}

void fade_pot_helper(int i){
    floattemp = analogRead(red_in);
    redinc = floattemp/4000;
    floattemp = analogRead(green_in);
    greeninc = floattemp/4000;
    floattemp = analogRead(blue_in);
    blueinc = floattemp/4000;
    set_rgb(redinc * i, greeninc * i, blueinc * i);
    delay(delaytime);  
}