This is an idea about a byte efficient protocol that describes the contents of an audio channel. At first, you may laugh…
It uses UNICODE characters as a method to condense the language needed to describe something in the field. There are Emoji for so many generic audio terms.
📛 Name Badge – What is their role in the production?
ℹ️ Information – Something specific about that person or their role
⚠️ Warning – a heads up about that person or their role
To describe a person at a microphone, their role and info about the microphone and how it’s connected to the system a series of Emojis followed by text can be concatenated
EXAMPLE CONCATINATION: 🆔 PRODUCTION ID⌚ PTP TIME STAMP😃NAME📛FUNCTIONℹINFORMATION⚠WARNING🎤MIC MODEL👻PHANTOM POWER🔌CONNECTION N🔌CONNECTION N+1🎚SENSITIVITY
Using this concatenation you can build up descriptions of the source
EXAMPLE STRING: 🆔 20191115⌚1163594296.344003000😃Axel📛Lead VocalℹBlonde hair glasses⚠Loves to grip mic🎤SM 58👻no🔌SNAKE 34🔌Channel 2🎚-60📗preset EQ
😃Security Guard 📛Position near the gate🎤SM58 👻no 🔌SNAKE 34🔌Channel 2🎚-60
Example of a guitar and the cabinet 😃Terry📛Rhythm Guitar Left 🎸Les Paul 🧲 P80📢Marshall 412🎙C414👻yes 🎚-50 🔌SNAKE 34🔌Channel 2
How to create a mix A mix is made of a web of sources at a particular level 🎨Mix 1🕸️ Axel🎚 -10🕸️ Person 2🎚 -10🕸️ Person 3🎚 -10🕸️ Person 4🎚 -10🕸️ Person 5🎚 -10
Give that mix to someone 🎨Mix 1🎚 -20 🎧WB13-3😃person 1 Headphones and on the person who receives the mix at a particular level
Use an EQ as a preset to insert 📗preset EQ📈 80 🎚 -2 📊 4.5k 🇶 1🎚 -2 📉 13k 🎚 -2
I did a quick test in Google sheets and it does parse the UNICODE as strings
Looking to replace the 204 frame motor I watched my favorite teach on the subject
and that pointed me to the plate on the motor I have
Reading deeper into this, this is an OLD style of motor frame. 204 Stopped being used in 1953… Of course, mine is a discontinued motor frame…
Looking more at this I see the 203 and the 204 frames are similar it’s the screw mounting width that is different. I think an adapter plate could work. The only dimension that matter is D and U. U is 3/4″ so the center of the motor must be 5″ from the bottom of the plate. Obviously P must be smaller or equal. Watch out for the boxes that stick off the side for the wiring to enter.
LOOKING AT A MODERN NEMA CHART:
A D of 5″ is no longer a standard. The closest D is 4.5″ that leaves 1/2′ for an adapter plate.
All the newer motors have 7/8 shaft meaning the pully will also need to be changed. The 145T looks interesting… Some shopping:
Wood dust and metal tools are enemies. The only way to keep the metal tools hapy ks to isolate them. I needed a way to them in their happy oiled up domain. I decided against cupboards and favoured Air tight drawers. There is a need for a gasket… but by design they should work without it when properly pushed back.
// Neopixels ATTACHED TO THESE PINS
#define FNT_NEO_PIXEL_PIN 48
//Number of Neopixels ATTACHED TO THESE PINS
#define N_PIXELS 5
//neopixel Index nick names. 0 is the bottom NEOPIXEL in the line
#define FNT_NEO_PIXEL_SEL 4
#define FNT_NEO_PIXEL_SUN 3
#define FNT_NEO_PIXEL_SKY 2
#define FNT_NEO_PIXEL_GRASS 1
#define FNT_NEO_PIXEL_EARTH 0
//POT VALUES
int FNT_POT_EARTH_STATE;
int FNT_POT_GRASS_STATE;
int FNT_POT_SKY_STATE;
int FNT_POT_SUN_STATE;
int FDR_POT_POSITION_STATE;
int FDR_POT_SLIDE_STATE;
int FDR_POT_POSITION_CHANGE;
int FDR_POT_SLIDE_CHANGE;
//FADER LED PANEL
int FDR_LED_KEY_CHON_STATE = 1;
int FDR_LED_KEY_ONLY_STATE = 1 ;
int FDR_LED_KEY_SEL_STATE = 1;
// FADER KEY
int FDR_KEY_CHON_STATE;
int FDR_KEY_ONLY_STATE;
int FDR_KEY_SEL_STATE;
// FADER KEY
int FDR_KEY_CHON_LAST_STATE;
int FDR_KEY_ONLY_LAST_STATE;
int FDR_KEY_SEL_LAST_STATE;
// FRONT LED
int FNT_LED_KEY_EARTH_STATE = 1 ;
int FNT_LED_KEY_GRASS_STATE = 1;
int FNT_LED_KEY_SEL_STATE = 1;
int FNT_LED_KEY_SKY_STATE = 1;
int FNT_LED_KEY_SUN_STATE = 1;
//FRONT KEYS
int FNT_KEY_EARTH_STATE ;
int FNT_KEY_GRASS_STATE ;
int FNT_KEY_SEL_STATE ;
int FNT_KEY_SKY_STATE ;
int FNT_KEY_SUN_STATE ;
//FRONT KEYS
int FNT_KEY_EARTH_LAST_STATE ;
int FNT_KEY_GRASS_LAST_STATE ;
int FNT_KEY_SEL_LAST_STATE ;
int FNT_KEY_SKY_LAST_STATE ;
int FNT_KEY_SUN_LAST_STATE ;
//Digital POTS
byte attenuation = 32; // Attenuation value of volume potentiometer gangs. Initially set to minimum volume.
byte tempattenuation = 0; // Holds attenuation value for second pot bitwise operation
byte PotScaler = 63;
//Debounce times
long lastDebounceTime = 0; // the last time the output pin was toggled
long debounceDelay = 2; // the debounce time; increase if the output flickers
int buttonState; // the current reading from the input pin
int lastButtonState = LOW; // the previous reading from the input pin
int StateMachinePodSelect = 1;
int StateMachinePodInput=0;
//POD 2 serial port
Serial3.begin(9600, SERIAL_8N1);
//SETUP THE DS1882 POTENTIONMETERS
Wire.begin(); // join i2c bus (address optional for master)
Wire.beginTransmission(40); //Setup the
Wire.write(B10000110); //B10000110
Wire.endTransmission();
delay(500);
Wire.beginTransmission(41); //Setup the
Wire.write(B10000110); //B10000110
Wire.endTransmission();
delay(500);
Wire.beginTransmission(42); //Setup the
Wire.write(B10000110); //B10000110
Wire.endTransmission();
delay(500);
CheckAnalog(); // Check the Analog value of the pots and the slider
PotScale(); // Scale the pot values into range of 1-64
//If the position or slide changes
if (!(FDR_POT_POSITION_CHANGE == FDR_POT_POSITION_SCALE) | !(FDR_POT_SLIDE_CHANGE == FDR_POT_SLIDE_SCALE)) {
// FDR_POT_SLIDE_STATE is converted into a percentage, multiplied by the lookup value of the fivepoint array
// fivepoint[FDR_POT_POSITION_STATE looks up the value stored in the array][ is the colum number 0 = Ls 4 = Rs]
ChangePot(0, 0, ((int)((float)FDR_POT_SLIDE_STATE / 1024 * fivepoint[FDR_POT_POSITION_STATE][0])));
ChangePot(0, 1, ((int)((float)FDR_POT_SLIDE_STATE / 1024 * fivepoint[FDR_POT_POSITION_STATE][1])));
ChangePot(1, 0, ((int)((float)FDR_POT_SLIDE_STATE / 1024 * fivepoint[FDR_POT_POSITION_STATE][2])));
ChangePot(1, 1, ((int)((float)FDR_POT_SLIDE_STATE / 1024 * fivepoint[FDR_POT_POSITION_STATE][3])));
ChangePot(2, 0, ((int)((float)FDR_POT_SLIDE_STATE / 1024 * fivepoint[FDR_POT_POSITION_STATE – 1][4])));
CheckKeys(); // Check if any keys have been pressed
LEDupdate(); // Update the LEDs on the keys
UpdateNeopixel(); // Update the colors of the neopixels
//KEY DBOUNCE – SUN
readingSUN = digitalRead(FNT_KEY_SUN_PIN);
if (readingSUN != FNT_KEY_SUN_LAST_STATE) {
lastDebounceTime = millis();
}
if ((millis() – lastDebounceTime) > debounceDelay) {
if (readingSUN != FNT_KEY_SUN_STATE) {
FNT_KEY_SUN_STATE = readingSUN;
StateMachinePodSelect = 1;
}
}
FNT_KEY_SUN_LAST_STATE = readingSUN;
default:
// if nothing else matches, do the default
// default is optional
break;
}
//DISPLAY TO SERIAL FOR TESTING
//DisplayKeyValues();
}
//▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░
// This function Changes the input of the POD2 using Serial 3
void PodInput(byte channel) {
//if you are not currently on this channel
if(StateMachinePodInput != channel){
//Get Ward-Beck Systems POD Attention
Serial3.write(0xF0);
//▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░
//This function writes the status of the LED state
void LEDupdate()
{
digitalWrite(FDR_LED_KEY_CHON_PIN, FDR_LED_KEY_CHON_STATE);
digitalWrite(FDR_LED_KEY_ONLY_PIN, FDR_LED_KEY_ONLY_STATE);
digitalWrite(FDR_LED_KEY_SEL_PIN, FDR_LED_KEY_SEL_STATE);
//▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░
//This functions gets the analog value and stores it into the STATE variables
void CheckAnalog() {
//▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░
// This function scales the state values as a percentage of the defined PotScaler
//▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░▓░
//This function recieves the Pot number(0-8), the section (0 or 1), and the value of Resistance (0-64)
void ChangePot(byte Pot, int Section, byte PotVal)
{
// Transmit to DS1808, device #40 (0x28) = 0101 000, LSB is auto sent by Arduino Wire
Wire.beginTransmission((40 + Pot));
// choose section 0 or 1
if (Section == 0) {
Wire.write(PotScaler – PotVal); // Write wiper value to the first pot
}
if (Section == 1) { // Section 1 needs a mask
Wire.write(((((PotScaler) – PotVal)) | 0b01000000)); // Write wiper value for second pot
}
Wire.endTransmission();
}
I love these Logitech Marble Mouse trackballs, I have one for every computer. After a few years they slow down physically. Cleaning the dust off does not help enough, something different needed to be applied. I’ve been researching lubricants and oils, doing some tests with households; but I think I’ve found the perfect fluid. Ian Gomes of Union Sound Company made a recommendation a few years back for Penny and Giles faders. A quick amazon search lead me to Lucas Silicone Shock fluid. I must report that it is the perfect product for this application. If you need a drop, I’ll send you a q-tip of it in the mail.
I needed a way of Generating Code, lots of code. In cadsoft eagle, the Keyboard Assignments are completely user customizable. They have a script language that allows you to modify the software. I’ve used hundreds of the ULP and SCRs and decided to write my own Generator.