Forums Radionics built a auto speaker muting circuit for radio broadcast

Viewing 3 posts - 1 through 3 (of 3 total)
  • Author
    Posts
  • #1052994
    General Lighting
    Moderator

      in “normal” radio production broadcast mixers are set up so when you fade up a mic channel the studio monitor speakers mute (you can still hear the program audio on the cans). However, these are bulky and cost about €500 at the cheapest, whereas something like a Soundcraft M series or Behringer X1222 is way cheaper.

      This is to avoid a great din of feedback, especially as unlike MC’ing the presenter does not virtually swallow the mic at close range. whilst you can of course use the control room/monitor output control to turn down the speakers, its easy to forget to do this, plus on my setup this feeds the cans for the program monitor!

      i manageed to knock up a way cheaper auto mute circuit using an arduino, an IR LED and a reed switch out of a old burglar alarm. Inside the fader knob I managed to insert some small but powerful rare earth magnets I had lying around, and tape the reed switch to the mixer so each time the mic fader (channel1) is brought up it triggers the arduino sketch. this lights up a red LED via a transistor and also sends the MUTE code to the amp on the IR led – and when the fader is back down MUTE is sent again to put the audio back up. There is also a button to manually trigger the fade.

      managed to get a few FETs out of a old monitor so will use these for more high power LEDs. this is the fritzing diagram and sketch, will add more later (as fritzing mangles the schematic , its probably quicker for me to write it by hand 😉 )

      its not the prettiest of solutions (could probably find a more compact reed switch) but it works and is way cheaper than a Sonifex console 🙂 – should be adaptable for any hi fi amp which uses IR remote control (most do these days)

      general-lighting-albums-alex-s-random-techie-stuff-picture81707-corrected-auto-mute-cct.png

      push button – pin 2
      IR led – pin 3
      reed switch – pin 12
      mic live LED – pin 13

      Code:
      /* Control a sony receiver via Arduino and IR
      / auto drop volume when mic fader active
      / using reed swich triggered by magnet in fader knob
      / 2011/2012 Alex@The Rats Nest, Ipswich, UK
      / IR code taken from http://www.arcfn.com/2009/08/multi-protocol-infrared-remote-library.html
      / and remote codes from here http://lirc.sourceforge.net/remotes/sony/RM-AAU014
      /
      / NB: This receiver uses 15 bit protocol
      / and only needs 50ms delay after each command sent twice
      / per button press
      */

      #include
      IRsend irsend;

      // define the constants for the remote code
      // and timing delays

      #define VOLUME_UP 0x240C
      #define VOLUME_DOWN 0x640C
      #define MUTE 0x140C
      #define IR_delay1 35
      #define IR_delay2 35
      #define REPEATS 2

      int incomingbyte = 0;
      boolean vol_dropped = false ;
      boolean vol_state = false ;

      // button handling vars

      const int buttonPin = 2; // the number of the pushbutton pin
      const int reedPin= 12; // reed switch
      const int ledPin = 13; // the number of the LED pin

      // Variables will change:
      int ledState = HIGH; // the current state of the output pin
      int buttonState; // the current reading from the input pin
      int lastButtonState = LOW; // the previous reading from the input pin
      int reedState ;
      int lastReedState = HIGH;
      // the following variables are long’s because the time, measured in miliseconds,
      // will quickly become a bigger number than can be stored in an int.
      long lastDebounceTime = 0; // the last time the output pin was toggled
      long debounceDelay = 30; // the debounce time; increase if the output flickers
      long lastDebounceTime2 = 0;

      void setup()
      {
      Serial.begin(9600);
      pinMode(buttonPin, INPUT);
      pinMode(reedPin, INPUT);
      pinMode(ledPin, OUTPUT);
      }

      void ir_emit(int code, int repeats)
      {
      for (int i = 0 ; i < (repeats-1) ; i++) { irsend.sendSony(code, 15); delay(IR_delay1); irsend.sendSony(code, 15); delay(IR_delay1); irsend.sendSony(code, 15); delay(IR_delay1); irsend.sendSony(code, 15); delay(IR_delay2); } } void drop_vol() { vol_state = vol_dropped ; vol_dropped = !vol_dropped; // check if vol needs dropping and send IR if so if (vol_dropped && (!vol_state)) { ir_emit(MUTE,REPEATS); } if (vol_state && (!vol_dropped)) { ir_emit(MUTE,REPEATS); } vol_state = vol_dropped ; } void loop() { // set the LED using the state of the volume drop digitalWrite(ledPin, int(vol_dropped)); // read the state of the switch into a local variable: int reading = digitalRead(buttonPin); // check to see if you just pressed the button // (i.e. the input went from LOW to HIGH), and you've waited // long enough since the last press to ignore any noise: // If the switch changed, due to noise or pressing: if (reading != lastButtonState) { // reset the debouncing timer lastDebounceTime = millis(); } if ((millis() - lastDebounceTime) > debounceDelay) {
      // whatever the reading is at, it’s been there for longer
      // than the debounce delay, so take it as the actual current state:
      buttonState = reading;
      }
      // save the reading. Next time through the loop,
      // it’ll be the lastButtonState:
      lastButtonState = reading;

      // read the state of the reed switch into a local variable:
      reading = digitalRead(reedPin);
      if (reading != lastReedState) {

      lastDebounceTime2 = millis();
      }

      if ((millis() – lastDebounceTime2) > debounceDelay) {

      reedState = reading;
      }

      lastReedState = reading;

      if (buttonState && (!lastButtonState)) {
      drop_vol();
      }

      if (reedState != lastReedState) {
      drop_vol();
      }

      incomingbyte = Serial.read();
      // get current state

      if (incomingbyte != -1) {
      Serial.print(“I received: “);
      Serial.println(incomingbyte, DEC);
      }
      switch (incomingbyte)
      {
      case 50: // 2 – vol down on num pad
      ir_emit(VOLUME_DOWN,REPEATS);
      break;
      case 56: // 8 = vol up on keybad
      ir_emit(VOLUME_UP,REPEATS);
      break;
      case 48: // 0 = use this as flag for now
      drop_vol();

      }

      }

      #1253061
      cheeseweasel
      Participant

        That’s really cool actually, only just read it properly and realised you’ve got it acting as a remote control for your hifi amp.

        I’d quite like to get one of those Arduino boards and have a play with it. I know a few theatre techs use them for all sorts of odd little jobs and bodges where things on-stage need to be controlled by the lampie etc. Would be a good way for me to learn some basic programming skills and practical electronics.

        #1253060
        General Lighting
        Moderator

          now updated using a relay to switch LED’s when the mic is live (even found a red fresnel lens for these from a old bike light what fell apart when I went over on some leftover railway tracks by the dockside and landed in a cold mud puddle)

          general-lighting-albums-alex-s-random-techie-stuff-picture81711-automute-3.png

        Viewing 3 posts - 1 through 3 (of 3 total)
        • You must be logged in to reply to this topic.

        Forums Radionics built a auto speaker muting circuit for radio broadcast