diff --git a/stereo_mix/drivers/adc.h b/stereo_mix/drivers/adc.h index 277381d..07117ba 100644 --- a/stereo_mix/drivers/adc.h +++ b/stereo_mix/drivers/adc.h @@ -38,15 +38,7 @@ class Adc { inline int16_t cv_value(AdcChannel channel) { -#ifdef NEW_HARDWARE - return this->values_[ADC_GROUP_CV + channel] - 32768; -#else - if (channel >= ADC_CHANNEL_PAN_1) { - return this->values_[ADC_GROUP_CV + channel] - 32768; - } else { - return this->values_[ADC_GROUP_CV + channel] >> 1; - } -#endif + return -(this->values_[ADC_GROUP_CV + channel] - 32768); } inline uint16_t value(int32_t channel) const diff --git a/stereo_mix/drivers/dacs.h b/stereo_mix/drivers/dacs.h index 3ad66dd..0b0fc8b 100644 --- a/stereo_mix/drivers/dacs.h +++ b/stereo_mix/drivers/dacs.h @@ -10,8 +10,8 @@ namespace stereo_mix { GPIO_TypeDef* kMDacPorts[] = { GPIOB, GPIOB, GPIOB, GPIOB }; const uint16_t kMDacPins[] = { GPIO_PIN_8, GPIO_PIN_9, GPIO_PIN_10, GPIO_PIN_11 }; -GPIO_TypeDef* kOffsetDacPorts[] = { GPIOA, GPIOA, GPIOA, GPIOA }; -const uint16_t kOffsetDacPins[] = { GPIO_PIN_8, GPIO_PIN_9, GPIO_PIN_10, GPIO_PIN_11 }; +GPIO_TypeDef* kOffsetDacPorts[] = { GPIOA, GPIOB, GPIOB, GPIOC }; +const uint16_t kOffsetDacPins[] = { GPIO_PIN_15, GPIO_PIN_7, GPIO_PIN_15, GPIO_PIN_13 }; class Dacs { // MCP4xx2 dac implementation public: @@ -19,6 +19,7 @@ class Dacs { // MCP4xx2 dac implementation { __HAL_RCC_GPIOA_CLK_ENABLE(); __HAL_RCC_GPIOB_CLK_ENABLE(); + __HAL_RCC_GPIOC_CLK_ENABLE(); __HAL_RCC_SPI1_CLK_ENABLE(); HAL_NVIC_SetPriority(SPI1_IRQn, 0, 0); diff --git a/stereo_mix/drivers/leds.h b/stereo_mix/drivers/leds.h index e2f970c..ef40e19 100644 --- a/stereo_mix/drivers/leds.h +++ b/stereo_mix/drivers/leds.h @@ -1,74 +1,140 @@ #pragma once #include "../resources.h" +#include "peripherals.h" +#include "stm32f030x8.h" +#include "stm32f0xx_hal_gpio_ex.h" +#include "stm32f0xx_hal_rcc.h" +#include "stm32f0xx_hal_tim.h" +#include "stm32f0xx_hal_tim_ex.h" #include "stmlib/utils/dsp.h" #include "stm32f0xx_hal_gpio.h" #include +#include using namespace stereo_mix; using namespace stmlib; +enum LedColor { + LED_COLOR_GREEN, + LED_COLOR_RED, + LED_COLOR_ORANGE +}; + const uint8_t kNumChannels = 4; -static const uint16_t kGpioPins[] = { GPIO_PIN_7, GPIO_PIN_15, GPIO_PIN_13, GPIO_PIN_14 }; -static GPIO_TypeDef* kGpioPorts[] = { GPIOB, GPIOB, GPIOC, GPIOC }; +static GPIO_TypeDef* kGpioPorts[] = { GPIOA, GPIOA, GPIOA, GPIOA }; +static const uint16_t kGpioPins[] = { GPIO_PIN_8, GPIO_PIN_9, GPIO_PIN_10, GPIO_PIN_11 }; + +static GPIO_TypeDef* kGpioColorPorts[] = {GPIOC, GPIOC, GPIOF, GPIOF}; +static const uint16_t kGpioColorPins[] = {GPIO_PIN_14, GPIO_PIN_15, GPIO_PIN_6, GPIO_PIN_7}; class Leds { public: Leds() { + __HAL_RCC_GPIOA_CLK_ENABLE(); __HAL_RCC_GPIOB_CLK_ENABLE(); __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOF_CLK_ENABLE(); + GPIO_InitTypeDef gpioInit; for (size_t i = 0; i < kNumChannels; i++) { gpioInit.Mode = GPIO_MODE_OUTPUT_PP; + gpioInit.Pin = kGpioColorPins[i]; + gpioInit.Pull = GPIO_NOPULL; + gpioInit.Speed = GPIO_SPEED_FREQ_MEDIUM; + HAL_GPIO_Init(kGpioColorPorts[i], &gpioInit); + + HAL_GPIO_WritePin(kGpioColorPorts[i], kGpioColorPins[i], GPIO_PIN_RESET); + } + + + __HAL_RCC_TIM1_CLK_ENABLE(); + + htim1.Init.Prescaler = 1; + htim1.Init.CounterMode = TIM_COUNTERMODE_UP; + htim1.Init.Period = 4095; // 12 bit + htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + HAL_TIM_PWM_Init(&htim1); + + TIM_MasterConfigTypeDef sMasterConfig; + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig); + + TIM_OC_InitTypeDef sConfigOC; + sConfigOC.OCMode = TIM_OCMODE_PWM1; + sConfigOC.Pulse = 100; + sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; + sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; + HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1); + HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_2); + HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_3); + HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_4); + + for(size_t i = 0; i < kNumChannels; i++) { + gpioInit.Mode = GPIO_MODE_AF_PP; gpioInit.Pin = kGpioPins[i]; gpioInit.Pull = GPIO_NOPULL; gpioInit.Speed = GPIO_SPEED_FREQ_MEDIUM; + gpioInit.Alternate = GPIO_AF2_TIM1; HAL_GPIO_Init(kGpioPorts[i], &gpioInit); - - intensities[i] = 0; - blinking[i] = false; } + + HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1); + HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_2); + HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_3); + HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_4); } + void Write() { -#ifdef DEBUG_PIN - for (size_t i = 0; i < kNumChannels - 1; i++) { -#else - for (size_t i = 0; i < kNumChannels; i++) { - -#endif - bool in_blink_phase = blink_counter > (0x2000 / 2) || !blinking[i]; - if (intensities[i] && lut_led_gamma[intensities[i] >> 8] >= pwm_counter && in_blink_phase) { - kGpioPorts[i]->BSRR |= kGpioPins[i]; - } else { - kGpioPorts[i]->BRR |= kGpioPins[i]; + for(size_t i = 0; i < kNumChannels; i++) { + LedColor targetColor = colors[i]; + uint16_t intensity = intensities[i]; + if(colors[i] == LED_COLOR_ORANGE) { + if(toggle[i]) targetColor = LED_COLOR_RED; + else targetColor = LED_COLOR_GREEN; + toggle[i] = !toggle[i]; } + + if(targetColor == LED_COLOR_RED) { + HAL_GPIO_WritePin(kGpioColorPorts[i], kGpioColorPins[i], GPIO_PIN_SET); + intensity = 65534 - lut_led_red_gamma[intensity >> 4]; + } else if(targetColor == LED_COLOR_GREEN) { + HAL_GPIO_WritePin(kGpioColorPorts[i], kGpioColorPins[i], GPIO_PIN_RESET); + intensity = lut_led_green_gamma[intensity >> 4]; + } + + __HAL_TIM_SET_COMPARE(&htim1, i, intensity >> 4); } - pwm_counter++; - blink_counter++; - if(blink_counter > 0x2000) blink_counter = 0; } + void set_intensity_signed(uint8_t channel, int16_t intensity) { + if(channel >= kNumChannels) return; - void set_intensity(uint8_t channel, uint16_t intensity) + if(intensity < 0) { + colors[channel] = LED_COLOR_RED; + intensities[channel] = (-intensity) << 1; + } else { + colors[channel] = LED_COLOR_GREEN; + intensities[channel] = (intensity) << 1; + } + + } + + void set_intensity_unsigned(uint8_t channel, uint16_t intensity, LedColor color) { if (channel >= kNumChannels) return; intensities[channel] = intensity; - } - void set_blinking(uint8_t channel, bool blink) - { - if (channel >= kNumChannels) - return; - blinking[channel] = blink; + colors[channel] = color; } private: - uint8_t pwm_counter; - uint16_t blink_counter; uint16_t intensities[kNumChannels]; - bool blinking[kNumChannels]; + bool toggle[kNumChannels]; + LedColor colors[kNumChannels]; }; diff --git a/stereo_mix/drivers/peripherals.c b/stereo_mix/drivers/peripherals.c index 162ecac..60033db 100644 --- a/stereo_mix/drivers/peripherals.c +++ b/stereo_mix/drivers/peripherals.c @@ -3,6 +3,7 @@ ADC_HandleTypeDef hadc1 = { .Instance = ADC1 }; DMA_HandleTypeDef hdma1_channel1 = { .Instance = DMA1_Channel1 }; SPI_HandleTypeDef hspi1 = { .Instance = SPI1 }; +TIM_HandleTypeDef htim1 = { .Instance = TIM1 }; TIM_HandleTypeDef htim3 = { .Instance = TIM3 }; TIM_HandleTypeDef htim6 = { .Instance = TIM6 }; diff --git a/stereo_mix/drivers/peripherals.h b/stereo_mix/drivers/peripherals.h index 35b9d8c..ed39356 100644 --- a/stereo_mix/drivers/peripherals.h +++ b/stereo_mix/drivers/peripherals.h @@ -5,6 +5,7 @@ extern ADC_HandleTypeDef hadc1; extern DMA_HandleTypeDef hdma1_channel1; extern SPI_HandleTypeDef hspi1; +extern TIM_HandleTypeDef htim1; extern TIM_HandleTypeDef htim3; extern TIM_HandleTypeDef htim6; diff --git a/stereo_mix/hardware_design/pcb/assembly/stereo_mix_back_digital_2020-04-04.zip b/stereo_mix/hardware_design/pcb/assembly/stereo_mix_back_digital_2020-04-04.zip deleted file mode 100644 index e067672..0000000 Binary files a/stereo_mix/hardware_design/pcb/assembly/stereo_mix_back_digital_2020-04-04.zip and /dev/null differ diff --git a/stereo_mix/hardware_design/pcb/assembly/stereo_mix_back_digital_2020-07-05.zip b/stereo_mix/hardware_design/pcb/assembly/stereo_mix_back_digital_2020-07-05.zip new file mode 100644 index 0000000..4fc3fe0 Binary files /dev/null and b/stereo_mix/hardware_design/pcb/assembly/stereo_mix_back_digital_2020-07-05.zip differ diff --git a/stereo_mix/hardware_design/pcb/assembly/stereo_mix_back_digital_bottom_bom.csv b/stereo_mix/hardware_design/pcb/assembly/stereo_mix_back_digital_bottom_bom.csv index 7a9f516..920ca87 100644 --- a/stereo_mix/hardware_design/pcb/assembly/stereo_mix_back_digital_bottom_bom.csv +++ b/stereo_mix/hardware_design/pcb/assembly/stereo_mix_back_digital_bottom_bom.csv @@ -1,21 +1,22 @@ Comment,Designator,Footprint,LCSC Part # +1.0nF,C19 C20 C21 C22 C67 C68 C69 C70,C0402, 1k,R95 R96,R0402, -4.7nF,C19 C20 C21 C22,C0402, 8MHz,X1,NX5032, 10k,R85,R0402, 10uF,C37 C38 C39 C41,CASE-A_3216, -10uF,C49 C50 C51 C52 C53 C54 C55 C56,C0402, +10uF,C49 C50 C51 C52 C53 C54 C55 C56,C0805, 10uF,C65 C66,CASE-A_3216, 15k,R9 R10 R11 R12 R41 R42 R43 R44,R0402, +20k,R73 R74 R75 R76 R97 R98 R99 R100,R0402, 22pF,C26 C27,C0402, 22uF,C47 C48,C0805, -33k,R73 R74 R75 R76,R0402, -47k,R13 R14 R15 R16 R17 R18 R19 R20 R45 R46 R47 R48 R49 R50 R51 R52,R0402, +47k,R13 R14 R15 R16 R17 R18 R19 R20 R45 R46 R47 R48 R49 R50 R51 R52 R86 R87,R0402, 91k,R1 R3 R5 R7 R33 R35 R37 R39,R0402, 100R,R91 R92 R93 R94,R0402, -100k,R2 R4 R6 R8 R21 R22 R24 R27 R29 R30 R31 R32 R34 R36 R38 R40 R53 R54 R55 R56 R61 R62 R63 R64 R66 R68 R70 R72 R81 R82 R83 R84 R88 R89,R0402, +100k,R2 R4 R6 R8 R21 R22 R24 R27 R29 R30 R31 R32 R34 R36 R38 R40 R53 R54 R55 R56 R61 R62 R63 R64 R66 R68 R70 R72 R88 R89,R0402, 100nF,C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13 C14 C15 C16 C17 C18 C23 C24 C25 C28 C29 C30 C31 C34 C35 C40 C42 C43 C44 C45 C46 C57 C58 C59 C60 C61 C62 C63 C64,C0402, -200k,R65 R67 R69 R71 R77 R78 R79 R80,R0402, +120k,R65 R67 R69 R71 R81 R82 R83 R101,R0402, +200k,R77 R78 R79 R80,R0402, 220pF,C32 C33,C0402, 300k,R23 R25 R26 R28 R57 R58 R59 R60,R0402, 470R,R90,R0402, diff --git a/stereo_mix/hardware_design/pcb/assembly/stereo_mix_back_digital_bottom_cpl.csv b/stereo_mix/hardware_design/pcb/assembly/stereo_mix_back_digital_bottom_cpl.csv index abb1c79..3b8803e 100644 --- a/stereo_mix/hardware_design/pcb/assembly/stereo_mix_back_digital_bottom_cpl.csv +++ b/stereo_mix/hardware_design/pcb/assembly/stereo_mix_back_digital_bottom_cpl.csv @@ -11,7 +11,7 @@ C9, 3.18,88.58,Bottom,90.0 C10, 3.18,66.99,Bottom,90.0 C11, 3.18,45.40,Bottom,90.0 C12, 3.18,23.50,Bottom,90.0 -C13,55.56,33.02,Bottom,0.0 +C13,64.66,33.76,Bottom,0.0 C14,62.87,55.25,Bottom,180.0 C15,62.87,98.43,Bottom,180.0 C16,62.87,76.84,Bottom,180.0 @@ -28,8 +28,8 @@ C26,41.91, 1.27,Bottom,180.0 C27,36.83, 1.27,Bottom,180.0 C28,42.23, 6.67,Bottom,0.0 C29,32.38,15.88,Bottom,180.0 -C30,43.50, 8.89,Bottom,90.0 -C31,57.79,37.47,Bottom,180.0 +C30,43.60, 8.89,Bottom,90.0 +C31,31.12,45.72,Bottom,0.0 C32,18.10,14.61,Bottom,0.0 C33, 7.30,13.34,Bottom,0.0 C34,14.61, 9.53,Bottom,0.0 @@ -40,20 +40,20 @@ C39,58.42, 3.49,Bottom,180.0 C40,20.32, 5.40,Bottom,180.0 C41,45.40, 6.03,Bottom,270.0 C42,45.40, 1.27,Bottom,180.0 -C43,55.56,84.77,Bottom,270.0 -C44,55.56,63.18,Bottom,270.0 +C43,56.36,84.77,Bottom,270.0 +C44,56.83,63.18,Bottom,270.0 C45,55.56,41.59,Bottom,270.0 -C46,56.20,17.78,Bottom,270.0 +C46,55.09,20.80,Bottom,270.0 C47,29.21, 7.62,Bottom,270.0 C48,58.42, 6.67,Bottom,0.0 -C49,54.29,84.77,Bottom,270.0 -C50,54.29,63.18,Bottom,270.0 -C51,54.29,41.59,Bottom,270.0 -C52,54.93,17.78,Bottom,270.0 -C53,57.79,98.43,Bottom,180.0 -C54,62.87,78.11,Bottom,180.0 -C55,62.87,56.52,Bottom,180.0 -C56,55.56,31.75,Bottom,0.0 +C49,56.20,80.80,Bottom,0.0 +C50,56.83,59.05,Bottom,0.0 +C51,56.83,37.78,Bottom,0.0 +C52,53.34,20.64,Bottom,270.0 +C53,56.83,98.58,Bottom,180.0 +C54,62.87,78.74,Bottom,180.0 +C55,62.87,57.15,Bottom,180.0 +C56,61.12,34.29,Bottom,180.0 C57,59.69,85.09,Bottom,180.0 C58,59.69,63.50,Bottom,180.0 C59,59.69,41.91,Bottom,180.0 @@ -64,10 +64,14 @@ C63,38.10,41.91,Bottom,180.0 C64,38.10,20.32,Bottom,180.0 C65, 5.71, 2.54,Bottom,0.0 C66,12.07, 2.54,Bottom,180.0 +C67,19.69,85.09,Bottom,90.0 +C68,19.69,63.50,Bottom,90.0 +C69,19.69,41.91,Bottom,90.0 +C70,19.69,20.32,Bottom,90.0 D1,58.74,12.70,Bottom,0.0 D2,31.12, 2.86,Bottom,180.0 D3,20.32, 2.54,Bottom,0.0 -IC1,63.18,33.02,Bottom,270.0 +IC1,31.75,40.01,Bottom,270.0 IC2,50.80, 3.81,Bottom,0.0 R1, 6.99,95.25,Bottom,270.0 R2, 5.71,95.25,Bottom,270.0 @@ -152,31 +156,37 @@ R80,20.96,20.32,Bottom,270.0 R81,22.23,85.09,Bottom,90.0 R82,22.23,63.50,Bottom,90.0 R83,22.23,41.91,Bottom,90.0 -R84,22.23,20.32,Bottom,90.0 R85,53.98, 8.26,Bottom,270.0 +R86, 5.71, 1.27,Bottom,180.0 +R87,12.07, 1.27,Bottom,0.0 R88,17.78,13.34,Bottom,0.0 R89, 7.62,12.07,Bottom,0.0 R90,23.50, 2.86,Bottom,0.0 R91,49.53,79.06,Bottom,0.0 R92,49.53,57.47,Bottom,0.0 -R93,49.53,35.88,Bottom,0.0 +R93,50.24,35.27,Bottom,0.0 R94,49.85,14.29,Bottom,0.0 R95, 1.91, 2.54,Bottom,180.0 R96,15.88, 2.54,Bottom,0.0 +R97,18.41,85.09,Bottom,90.0 +R98,18.41,63.50,Bottom,90.0 +R99,18.41,41.91,Bottom,90.0 +R100,18.41,20.32,Bottom,90.0 +R101,22.23,20.32,Bottom,90.0 U1,60.96,95.25,Bottom,270.0 U2,60.96,73.66,Bottom,270.0 U3, 6.35,90.17,Bottom,0.0 U4, 6.35,68.58,Bottom,0.0 -U5,50.16,90.17,Bottom,180.0 -U6,50.16,68.58,Bottom,180.0 +U5,50.16,90.81,Bottom,180.0 +U6,50.16,69.22,Bottom,180.0 U7,35.88,96.52,Bottom,270.0 U8,35.56,74.93,Bottom,270.0 U9,60.96,52.07,Bottom,270.0 -U10,50.16,30.48,Bottom,270.0 +U10,60.96,30.48,Bottom,270.0 U11, 6.35,46.99,Bottom,0.0 U12, 6.35,25.40,Bottom,0.0 -U13,50.16,46.99,Bottom,180.0 -U14,50.16,22.86,Bottom,180.0 +U13,50.16,47.63,Bottom,180.0 +U14,50.16,26.67,Bottom,180.0 U15,35.56,53.34,Bottom,270.0 U16,35.56,31.75,Bottom,270.0 U17,20.32,90.17,Bottom,0.0 diff --git a/stereo_mix/hardware_design/pcb/stereo_mix_back_digital.brd b/stereo_mix/hardware_design/pcb/stereo_mix_back_digital.brd index 0212203..23a6581 100644 --- a/stereo_mix/hardware_design/pcb/stereo_mix_back_digital.brd +++ b/stereo_mix/hardware_design/pcb/stereo_mix_back_digital.brd @@ -1,12 +1,12 @@ - + - + - + @@ -34,9 +34,9 @@ - + - + @@ -120,7 +120,7 @@ - + @@ -165,11 +165,2061 @@ -jhbruhn 2020 +jhbruhn 2020 -stereo_mix v4 +stereo_mix v5 gib + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +/home/jhbruhn/Downloads/260322bfe49b091852bc7901a328687b.bmp @@ -673,24 +2723,44 @@ OSHW_LOGO >NAME >VALUE - - - - - - - - - - - - - - - - - ->NAME + +<b>OMRON SWITCH</b> + + + + + + + + + + + + + + + + + + + + + + + + +>NAME + + +<B>LED</B><p> +3 mm, round + + + + + +>NAME +>VALUE @@ -1036,7 +3106,7 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - + @@ -1206,9 +3276,9 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - + + + @@ -1218,13 +3288,13 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - + - + @@ -1234,21 +3304,15 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - - - - - - - + + + @@ -1318,9 +3382,9 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - + + + @@ -1396,9 +3460,9 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - + + + @@ -1496,13 +3560,13 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - + - + @@ -1512,60 +3576,42 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - + - + - + - + - - - - - - - - - - - - - - - - - - @@ -1732,25 +3778,25 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - + - + - + - + @@ -1774,7 +3820,7 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - + @@ -1787,9 +3833,9 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - + + + @@ -1809,11 +3855,11 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - - - + + + + + @@ -1869,35 +3915,35 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - + - + - + - + - + - + - + - + @@ -2013,11 +4059,11 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - - - + + + + + @@ -2099,39 +4145,27 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - + + + - - - - - + + + + + - - + + + + + - - - - - - - - - - - - - - - - - - - - + + + + + @@ -2139,11 +4173,11 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - - - + + + + + @@ -2157,53 +4191,53 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + @@ -2217,11 +4251,11 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - - - + + + + + @@ -2278,13 +4312,13 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - + - + @@ -2301,65 +4335,117 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - - - + + + + + - - - - - + + + + + - - - - - + + - - - - - + + - - - - - + + - - - - - + + - - - - - + + + - - - - - + + + - - - - - + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2373,7 +4459,6 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - @@ -2383,9 +4468,6 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - @@ -2507,18 +4589,6 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - - - - - - - - - - @@ -2541,66 +4611,193 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2659,14 +4856,14 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - + + + - - - - + + + + @@ -2711,7 +4908,7 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - + @@ -2792,9 +4989,6 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - @@ -2862,9 +5056,7 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - + @@ -2881,11 +5073,17 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - + + + + + + + @@ -2910,10 +5108,14 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - + + + + + @@ -3041,14 +5243,17 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - + + + + + @@ -3133,12 +5338,15 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - + + - + + - + + @@ -3222,6 +5430,44 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3238,15 +5484,6 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - - - - - - - @@ -3264,20 +5501,19 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - + + + + + + - - - - - @@ -3293,13 +5529,20 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - - - + + + + + + + + + + + + @@ -3314,14 +5557,13 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - + + - - - + + @@ -3428,17 +5670,19 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - + + - - - - + + + + + + + @@ -3457,10 +5701,7 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - - + @@ -3527,6 +5768,11 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF + + + + + @@ -3678,7 +5924,7 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - + @@ -3730,31 +5976,32 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - - - + + + + - + - - + + - + + + + + - - @@ -3789,7 +6036,7 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - + @@ -3826,16 +6073,16 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - - - - - - - - + + + + + + + + + + @@ -3852,9 +6099,11 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - + + + + + @@ -3883,8 +6132,8 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - + + @@ -3903,11 +6152,9 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - + - @@ -3923,16 +6170,15 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - - - - - - - - + + + + + + + + + @@ -4019,22 +6265,20 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - - - - + + + - - + + + @@ -4122,11 +6366,6 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - - - @@ -4135,28 +6374,36 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - + - + + + + + + + + + + + - - + - + @@ -4174,10 +6421,13 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - + + + + + @@ -4192,14 +6442,16 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - - - - + + - + + + + + + + @@ -4263,11 +6515,7 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - - - + @@ -4278,9 +6526,9 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - + + + @@ -4288,13 +6536,15 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - - - - - + + + + + + + + + @@ -4378,40 +6628,39 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - - - - - + - - + - - - - - - - - + + + + + + + + + + + + + + + + + - - - - + @@ -4424,15 +6673,31 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - + - - + + + + + + + + + + + + + + + + + + + + @@ -4447,18 +6712,20 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - - - - - - - - - - + + + + + + + + + + + + + + @@ -4518,20 +6785,27 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - - - + - - + + - - - - + + + + + + + + + + + + + + + @@ -4555,11 +6829,11 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - - - + + + + + @@ -4616,7 +6890,6 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - @@ -4631,7 +6904,7 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - + @@ -4659,19 +6932,20 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF + + + + + + - - - - - - + @@ -4691,11 +6965,9 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - @@ -4708,21 +6980,19 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - - - - - - - - - - - - + + + + + + + + + + + + @@ -4741,37 +7011,16 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - - @@ -4790,27 +7039,31 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - + - - - - - - + + + + + + + + + + + + - - @@ -4836,12 +7089,11 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - + @@ -4859,21 +7111,30 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - + + - - + + + + + + + + + + + + - - @@ -4890,148 +7151,157 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - + - - - - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - + - - - - - + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + - - + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -5043,17 +7313,9 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - - - - - - - + @@ -5069,59 +7331,28 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - - - - - - + - - + - - - + - - - - - - - - - - - - - - - - - - - - - + - @@ -5133,18 +7364,62 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -5157,11 +7432,9 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - + - - + @@ -5173,19 +7446,16 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - + + + - - - - + @@ -5194,32 +7464,8 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - - - - - - - - - - - - - - - - - - - - - - @@ -5228,26 +7474,56 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - - - + + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -5264,8 +7540,6 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - @@ -5275,8 +7549,6 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - @@ -5299,8 +7571,6 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - @@ -5314,14 +7584,12 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - - + + @@ -5331,8 +7599,8 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - + + @@ -5340,56 +7608,77 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - - + + + - - - - + - - - + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - + - - + + + + + + + + + + + + + + + + + @@ -5441,28 +7730,29 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - + - - - - - - - - + + + + + + + + + @@ -5495,19 +7785,23 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - - - - - - + + + + + + + + + + + + @@ -5533,15 +7827,7 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - - - - - - - + @@ -5553,16 +7839,22 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - + + + + + + + + + + - - - - + @@ -5571,13 +7863,7 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - - - - @@ -5585,53 +7871,51 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + @@ -5647,10 +7931,11 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - + + + @@ -5720,385 +8005,6 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -6127,64 +8033,416 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -6267,18 +8525,26 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - + - - - - - - - + + + + + + + + + + + + + + + + + @@ -6286,386 +8552,360 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - @@ -6677,43 +8917,28 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - - - - - - - - - - - - + + - + + + + + + + + + - - - - - - - - - - - @@ -6722,15 +8947,27 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - + + + + + + + + + + + + + + + + + + - - - @@ -6751,207 +8988,182 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - - - - + - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - + - - - - - - - - - - - - + - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + @@ -6981,14 +9193,16 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF - + + - + + @@ -6996,6 +9210,255 @@ Source: http://www.onsemi.co.jp .. LM137M-D.PDF + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/stereo_mix/hardware_design/pcb/stereo_mix_back_digital.sch b/stereo_mix/hardware_design/pcb/stereo_mix_back_digital.sch index 32032d0..bb9700d 100644 --- a/stereo_mix/hardware_design/pcb/stereo_mix_back_digital.sch +++ b/stereo_mix/hardware_design/pcb/stereo_mix_back_digital.sch @@ -1,6 +1,6 @@ - + @@ -15617,24 +15617,104 @@ Source: http://www.vishay.com/docs/20008/dcrcw.pdf >NAME >VALUE - - - - - - - - - - - - - - - - - ->NAME + + + + + + + + + + + + + + + + + +>NAME +>Value + + +<b>OMRON SWITCH</b> + + + + + + + + + + + + + + + + + + + + + + + + +>NAME + + + + + + + + + + + + + + +<b>OMRON SWITCH</b> + + + + + + + + + + + + + + + + + + + + + + + + +>NAME + + +<B>LED</B><p> +3 mm, round + + + + + +>NAME +>VALUE @@ -15725,46 +15805,54 @@ CONN_05x2 >Name >Value - - - - - - - - - - - - - - - - ->NAME + + + + + + + + + + + + + + +>NAME +>VALUE + + + + - - - - + + + + + + + + + + + + + + + + + + + - - - - - - ->NAME - - - - - - - - - - + +>NAME +>VALUE +R +G + + @@ -15859,20 +15947,68 @@ PTH and SMD connector options available.</p> - + +<b>Momentary Switch</b> +Button commonly used for reset or general input. Spark Fun Electronics SKU : COM-00097 - - + - + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -18634,13 +18770,11 @@ Source: http://www.st.com/stonline/products/literature/ds/7194/ld1117axx.pdf - - + + - - @@ -18695,25 +18829,19 @@ Source: http://www.st.com/stonline/products/literature/ds/7194/ld1117axx.pdf - - + + - - + + - - + + - - - - - - @@ -18759,10 +18887,10 @@ Source: http://www.st.com/stonline/products/literature/ds/7194/ld1117axx.pdf - - - - + + + + @@ -18800,14 +18928,14 @@ Source: http://www.st.com/stonline/products/literature/ds/7194/ld1117axx.pdf - - - - - - - - + + + + + + + + @@ -18902,10 +19030,6 @@ Source: http://www.st.com/stonline/products/literature/ds/7194/ld1117axx.pdf - - - - @@ -18936,10 +19060,6 @@ Source: http://www.st.com/stonline/products/literature/ds/7194/ld1117axx.pdf - - - - @@ -18956,22 +19076,34 @@ Source: http://www.st.com/stonline/products/literature/ds/7194/ld1117axx.pdf - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -19670,62 +19802,6 @@ Source: http://www.st.com/stonline/products/literature/ds/7194/ld1117axx.pdf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -20035,38 +20111,6 @@ Source: http://www.st.com/stonline/products/literature/ds/7194/ld1117axx.pdf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -20884,9 +20928,6 @@ Source: http://www.st.com/stonline/products/literature/ds/7194/ld1117axx.pdf @@ -20899,9 +20940,6 @@ Source: http://www.st.com/stonline/products/literature/ds/7194/ld1117axx.pdf @@ -20914,7 +20952,6 @@ Source: http://www.st.com/stonline/products/literature/ds/7194/ld1117axx.pdf @@ -20927,9 +20964,6 @@ Source: http://www.st.com/stonline/products/literature/ds/7194/ld1117axx.pdf - - - @@ -20942,7 +20976,6 @@ Source: http://www.st.com/stonline/products/literature/ds/7194/ld1117axx.pdf @@ -20955,7 +20988,6 @@ Source: http://www.st.com/stonline/products/literature/ds/7194/ld1117axx.pdf @@ -20968,9 +21000,6 @@ Source: http://www.st.com/stonline/products/literature/ds/7194/ld1117axx.pdf @@ -20983,7 +21012,6 @@ Source: http://www.st.com/stonline/products/literature/ds/7194/ld1117axx.pdf @@ -21277,19 +21305,13 @@ Source: http://www.st.com/stonline/products/literature/ds/7194/ld1117axx.pdfChannel 4 PAN Channel 3 PAN Channel 2 PAN +All Inputs -8.0V to 8.0V - - - - - - - @@ -21298,39 +21320,18 @@ Source: http://www.st.com/stonline/products/literature/ds/7194/ld1117axx.pdf - - - - - - - - - - - - - - - - - - - - - @@ -21513,28 +21514,72 @@ Source: http://www.st.com/stonline/products/literature/ds/7194/ld1117axx.pdf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - @@ -21616,6 +21661,30 @@ Source: http://www.st.com/stonline/products/literature/ds/7194/ld1117axx.pdf + + + + + + + + + + + + + + + + + + + + + + + + @@ -21659,97 +21728,107 @@ Source: http://www.st.com/stonline/products/literature/ds/7194/ld1117axx.pdf + + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + + + - - + - - - - - - - - - + + + + + + + + + + + - - - - - - - - - + + + + + + + + + + + - - + - - - - - - - - - + + + + + + + + + + + @@ -21805,36 +21884,17 @@ Source: http://www.st.com/stonline/products/literature/ds/7194/ld1117axx.pdf - - - - - - - - - - - - - - - - - - - - - - + + @@ -21854,60 +21914,21 @@ Source: http://www.st.com/stonline/products/literature/ds/7194/ld1117axx.pdf - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + @@ -21952,93 +21973,240 @@ Source: http://www.st.com/stonline/products/literature/ds/7194/ld1117axx.pdf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + MCU + + + + + + + + + + +MCU +Pots +Switches/LEDs + + +Programming - - - + + + - - + + - - - + + + - - - + + + - - - + + + - - + + - - + + - - - + + + - - + + - - - + + + - - - + + + - - + + - - - + + + - - + + - - + + - - - + + + - - + + - - - + + + - - + + - - + + - - + + - - - + + + @@ -22123,60 +22291,24 @@ Source: http://www.st.com/stonline/products/literature/ds/7194/ld1117axx.pdf - - + + - - + + + - - + + + - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + @@ -22210,6 +22342,50 @@ Source: http://www.st.com/stonline/products/literature/ds/7194/ld1117axx.pdf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -22217,71 +22393,71 @@ Source: http://www.st.com/stonline/products/literature/ds/7194/ld1117axx.pdf - + - - + + - - - + + + - + - - - - - + + + + + - + - + - - + + - + - + - - - + + + - + - + - - - - + + + + - - + + - + - - - + + + - + @@ -22354,199 +22530,191 @@ Source: http://www.st.com/stonline/products/literature/ds/7194/ld1117axx.pdf - - - - - - - - - + + + + + + + - - - - - - - - - + + + + + + + - - - - - - - - - + + + + + + + - - - - - - - - - + + + + + + + - + - - + - - + - - + - - + - - + - - + - - + - - - - - - - - - - - - - - + - - + - - + - - - - - - - - - - + - + - - + + - + - + @@ -22555,11 +22723,11 @@ Source: http://www.st.com/stonline/products/literature/ds/7194/ld1117axx.pdf - + - - - + + + @@ -22596,86 +22764,86 @@ Source: http://www.st.com/stonline/products/literature/ds/7194/ld1117axx.pdf - + - - - + + + - - + + - - + + - - - + + + - - - + + + - - + + - - + + - + - + - - + + - + - - + + - - - + - - - - + - - - - - @@ -22790,8 +22958,8 @@ Source: http://www.st.com/stonline/products/literature/ds/7194/ld1117axx.pdf - - @@ -22801,10 +22969,9 @@ Source: http://www.st.com/stonline/products/literature/ds/7194/ld1117axx.pdf - + - - @@ -22815,8 +22982,8 @@ Source: http://www.st.com/stonline/products/literature/ds/7194/ld1117axx.pdf - - @@ -22827,140 +22994,200 @@ Source: http://www.st.com/stonline/products/literature/ds/7194/ld1117axx.pdf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + + - + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -22968,6 +23195,15 @@ Source: http://www.st.com/stonline/products/literature/ds/7194/ld1117axx.pdf Output + + + + + + + +Power/Buffering +Amplifier @@ -22976,11 +23212,11 @@ Source: http://www.st.com/stonline/products/literature/ds/7194/ld1117axx.pdf - - + + - - + + @@ -22998,20 +23234,20 @@ Source: http://www.st.com/stonline/products/literature/ds/7194/ld1117axx.pdf - - - - + + + + - - - + + + - - + + - - + + @@ -23084,8 +23320,8 @@ Source: http://www.st.com/stonline/products/literature/ds/7194/ld1117axx.pdf - - + + @@ -23145,24 +23381,24 @@ Source: http://www.st.com/stonline/products/literature/ds/7194/ld1117axx.pdf - + - + - - + + - - - + + + - + @@ -23243,17 +23479,30 @@ Source: http://www.st.com/stonline/products/literature/ds/7194/ld1117axx.pdf Power + + + + + + + + + + +Power Input ++3V3 V Supply +-10V Reference - - - + + + - - + + - - + + @@ -23297,31 +23546,31 @@ Source: http://www.st.com/stonline/products/literature/ds/7194/ld1117axx.pdf - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - - + + + - - + + @@ -23339,7 +23588,7 @@ Source: http://www.st.com/stonline/products/literature/ds/7194/ld1117axx.pdf - + @@ -23373,16 +23622,16 @@ Source: http://www.st.com/stonline/products/literature/ds/7194/ld1117axx.pdf - + - - + + - + @@ -23406,21 +23655,21 @@ Source: http://www.st.com/stonline/products/literature/ds/7194/ld1117axx.pdf - + - + - + @@ -23434,21 +23683,21 @@ Source: http://www.st.com/stonline/products/literature/ds/7194/ld1117axx.pdf - + - - diff --git a/stereo_mix/processor.cc b/stereo_mix/processor.cc index d534a56..08f9eb9 100644 --- a/stereo_mix/processor.cc +++ b/stereo_mix/processor.cc @@ -25,7 +25,6 @@ void Processor::Process(int16_t cvs[], uint16_t* outs) // calculate value for ui int32_t lin = vol_offset + (vol_cv << 3) * 3; lin = ClipU16(lin); - lin *= !mute; this->linear_vol = lin; uint16_t vol_pot_exp = Interpolate124(lut_linear_to_exp, vol_pot); @@ -41,8 +40,6 @@ void Processor::Process(int16_t cvs[], uint16_t* outs) vol = ClipU16(vol); - this->previous_vol = vol; - int32_t pan_cv = (cv_input_pan * static_cast(pan_att)) >> 15; // full attenuate gives 2x amplification :) pan_cv = Clip16(pan_cv); int32_t pan = pan_pot + ((pan_cv) * 2); diff --git a/stereo_mix/processor.h b/stereo_mix/processor.h index aefebeb..a61f6b3 100644 --- a/stereo_mix/processor.h +++ b/stereo_mix/processor.h @@ -30,12 +30,15 @@ class Processor { mute = m; } + inline bool is_muted() { + return mute; + } + uint16_t linear_volume() { return linear_vol; } private: - uint16_t previous_vol; uint16_t linear_vol; int16_t cv_input_pan = 0; @@ -45,7 +48,7 @@ class Processor { int16_t pan_offset = 0; int16_t vol_att; int16_t pan_att; - uint16_t log_exp_mix_cv = 32767;//32767; // -> linear + uint16_t log_exp_mix_cv = 32767; // -> linear uint16_t log_exp_mix_pot = 0; // -> exp diff --git a/stereo_mix/resources.cc b/stereo_mix/resources.cc index 8aaf073..7a86bf2 100644 --- a/stereo_mix/resources.cc +++ b/stereo_mix/resources.cc @@ -3112,7 +3112,1036 @@ const uint16_t lut_right_cos_pan[] = { 140, 120, 100, 80, 60, 40, 20, 0, }; -const uint16_t lut_led_gamma[] = { +const uint16_t lut_led_red_gamma[] = { + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 1, 1, 1, + 1, 1, 1, 1, + 1, 1, 1, 1, + 1, 1, 1, 1, + 1, 1, 1, 1, + 1, 1, 1, 1, + 1, 1, 1, 1, + 1, 1, 1, 2, + 2, 2, 2, 2, + 2, 2, 2, 2, + 2, 2, 2, 2, + 2, 2, 2, 2, + 2, 3, 3, 3, + 3, 3, 3, 3, + 3, 3, 3, 3, + 3, 3, 3, 4, + 4, 4, 4, 4, + 4, 4, 4, 4, + 4, 4, 5, 5, + 5, 5, 5, 5, + 5, 5, 5, 5, + 6, 6, 6, 6, + 6, 6, 6, 6, + 6, 7, 7, 7, + 7, 7, 7, 7, + 7, 8, 8, 8, + 8, 8, 8, 8, + 9, 9, 9, 9, + 9, 9, 9, 10, + 10, 10, 10, 10, + 10, 11, 11, 11, + 11, 11, 11, 12, + 12, 12, 12, 12, + 12, 13, 13, 13, + 13, 13, 14, 14, + 14, 14, 14, 15, + 15, 15, 15, 15, + 16, 16, 16, 16, + 16, 17, 17, 17, + 17, 18, 18, 18, + 18, 18, 19, 19, + 19, 19, 20, 20, + 20, 20, 21, 21, + 21, 21, 22, 22, + 22, 22, 23, 23, + 23, 24, 24, 24, + 24, 25, 25, 25, + 26, 26, 26, 26, + 27, 27, 27, 28, + 28, 28, 28, 29, + 29, 29, 30, 30, + 30, 31, 31, 31, + 32, 32, 32, 33, + 33, 33, 34, 34, + 34, 35, 35, 35, + 36, 36, 37, 37, + 37, 38, 38, 38, + 39, 39, 40, 40, + 40, 41, 41, 41, + 42, 42, 43, 43, + 43, 44, 44, 45, + 45, 46, 46, 46, + 47, 47, 48, 48, + 49, 49, 49, 50, + 50, 51, 51, 52, + 52, 53, 53, 53, + 54, 54, 55, 55, + 56, 56, 57, 57, + 58, 58, 59, 59, + 60, 60, 61, 61, + 62, 62, 63, 63, + 64, 64, 65, 65, + 66, 66, 67, 67, + 68, 69, 69, 70, + 70, 71, 71, 72, + 72, 73, 74, 74, + 75, 75, 76, 76, + 77, 78, 78, 79, + 79, 80, 81, 81, + 82, 82, 83, 84, + 84, 85, 85, 86, + 87, 87, 88, 89, + 89, 90, 91, 91, + 92, 93, 93, 94, + 95, 95, 96, 97, + 97, 98, 99, 99, + 100, 101, 101, 102, + 103, 104, 104, 105, + 106, 106, 107, 108, + 109, 109, 110, 111, + 111, 112, 113, 114, + 114, 115, 116, 117, + 118, 118, 119, 120, + 121, 121, 122, 123, + 124, 125, 125, 126, + 127, 128, 129, 129, + 130, 131, 132, 133, + 134, 134, 135, 136, + 137, 138, 139, 140, + 140, 141, 142, 143, + 144, 145, 146, 146, + 147, 148, 149, 150, + 151, 152, 153, 154, + 155, 156, 156, 157, + 158, 159, 160, 161, + 162, 163, 164, 165, + 166, 167, 168, 169, + 170, 171, 172, 173, + 174, 175, 176, 177, + 178, 179, 180, 181, + 182, 183, 184, 185, + 186, 187, 188, 189, + 190, 191, 192, 193, + 194, 195, 196, 197, + 198, 199, 201, 202, + 203, 204, 205, 206, + 207, 208, 209, 210, + 212, 213, 214, 215, + 216, 217, 218, 220, + 221, 222, 223, 224, + 225, 227, 228, 229, + 230, 231, 232, 234, + 235, 236, 237, 238, + 240, 241, 242, 243, + 245, 246, 247, 248, + 250, 251, 252, 253, + 255, 256, 257, 258, + 260, 261, 262, 263, + 265, 266, 267, 269, + 270, 271, 273, 274, + 275, 277, 278, 279, + 281, 282, 283, 285, + 286, 287, 289, 290, + 292, 293, 294, 296, + 297, 298, 300, 301, + 303, 304, 306, 307, + 308, 310, 311, 313, + 314, 316, 317, 318, + 320, 321, 323, 324, + 326, 327, 329, 330, + 332, 333, 335, 336, + 338, 339, 341, 342, + 344, 345, 347, 349, + 350, 352, 353, 355, + 356, 358, 359, 361, + 363, 364, 366, 367, + 369, 371, 372, 374, + 375, 377, 379, 380, + 382, 384, 385, 387, + 389, 390, 392, 394, + 395, 397, 399, 400, + 402, 404, 405, 407, + 409, 411, 412, 414, + 416, 417, 419, 421, + 423, 424, 426, 428, + 430, 431, 433, 435, + 437, 439, 440, 442, + 444, 446, 448, 449, + 451, 453, 455, 457, + 459, 460, 462, 464, + 466, 468, 470, 472, + 474, 475, 477, 479, + 481, 483, 485, 487, + 489, 491, 493, 495, + 496, 498, 500, 502, + 504, 506, 508, 510, + 512, 514, 516, 518, + 520, 522, 524, 526, + 528, 530, 532, 534, + 536, 538, 540, 542, + 545, 547, 549, 551, + 553, 555, 557, 559, + 561, 563, 565, 567, + 570, 572, 574, 576, + 578, 580, 582, 585, + 587, 589, 591, 593, + 595, 598, 600, 602, + 604, 606, 609, 611, + 613, 615, 618, 620, + 622, 624, 626, 629, + 631, 633, 636, 638, + 640, 642, 645, 647, + 649, 652, 654, 656, + 659, 661, 663, 666, + 668, 670, 673, 675, + 677, 680, 682, 684, + 687, 689, 692, 694, + 696, 699, 701, 704, + 706, 709, 711, 714, + 716, 718, 721, 723, + 726, 728, 731, 733, + 736, 738, 741, 743, + 746, 748, 751, 753, + 756, 759, 761, 764, + 766, 769, 771, 774, + 777, 779, 782, 784, + 787, 790, 792, 795, + 797, 800, 803, 805, + 808, 811, 813, 816, + 819, 821, 824, 827, + 829, 832, 835, 838, + 840, 843, 846, 848, + 851, 854, 857, 859, + 862, 865, 868, 871, + 873, 876, 879, 882, + 885, 887, 890, 893, + 896, 899, 902, 904, + 907, 910, 913, 916, + 919, 922, 925, 927, + 930, 933, 936, 939, + 942, 945, 948, 951, + 954, 957, 960, 963, + 966, 969, 972, 975, + 978, 981, 984, 987, + 990, 993, 996, 999, + 1002, 1005, 1008, 1011, + 1014, 1017, 1020, 1023, + 1026, 1029, 1033, 1036, + 1039, 1042, 1045, 1048, + 1051, 1054, 1058, 1061, + 1064, 1067, 1070, 1073, + 1077, 1080, 1083, 1086, + 1089, 1093, 1096, 1099, + 1102, 1106, 1109, 1112, + 1115, 1119, 1122, 1125, + 1129, 1132, 1135, 1138, + 1142, 1145, 1148, 1152, + 1155, 1158, 1162, 1165, + 1168, 1172, 1175, 1179, + 1182, 1185, 1189, 1192, + 1196, 1199, 1202, 1206, + 1209, 1213, 1216, 1220, + 1223, 1227, 1230, 1234, + 1237, 1241, 1244, 1248, + 1251, 1255, 1258, 1262, + 1265, 1269, 1272, 1276, + 1279, 1283, 1287, 1290, + 1294, 1297, 1301, 1305, + 1308, 1312, 1315, 1319, + 1323, 1326, 1330, 1334, + 1337, 1341, 1345, 1348, + 1352, 1356, 1359, 1363, + 1367, 1371, 1374, 1378, + 1382, 1386, 1389, 1393, + 1397, 1401, 1404, 1408, + 1412, 1416, 1420, 1424, + 1427, 1431, 1435, 1439, + 1443, 1447, 1450, 1454, + 1458, 1462, 1466, 1470, + 1474, 1478, 1482, 1485, + 1489, 1493, 1497, 1501, + 1505, 1509, 1513, 1517, + 1521, 1525, 1529, 1533, + 1537, 1541, 1545, 1549, + 1553, 1557, 1561, 1565, + 1569, 1574, 1578, 1582, + 1586, 1590, 1594, 1598, + 1602, 1606, 1610, 1615, + 1619, 1623, 1627, 1631, + 1635, 1640, 1644, 1648, + 1652, 1656, 1661, 1665, + 1669, 1673, 1678, 1682, + 1686, 1690, 1695, 1699, + 1703, 1707, 1712, 1716, + 1720, 1725, 1729, 1733, + 1738, 1742, 1746, 1751, + 1755, 1760, 1764, 1768, + 1773, 1777, 1781, 1786, + 1790, 1795, 1799, 1804, + 1808, 1813, 1817, 1821, + 1826, 1830, 1835, 1839, + 1844, 1848, 1853, 1858, + 1862, 1867, 1871, 1876, + 1880, 1885, 1889, 1894, + 1899, 1903, 1908, 1912, + 1917, 1922, 1926, 1931, + 1936, 1940, 1945, 1950, + 1954, 1959, 1964, 1968, + 1973, 1978, 1983, 1987, + 1992, 1997, 2002, 2006, + 2011, 2016, 2021, 2025, + 2030, 2035, 2040, 2045, + 2050, 2054, 2059, 2064, + 2069, 2074, 2079, 2083, + 2088, 2093, 2098, 2103, + 2108, 2113, 2118, 2123, + 2128, 2133, 2138, 2143, + 2148, 2153, 2158, 2163, + 2168, 2173, 2178, 2183, + 2188, 2193, 2198, 2203, + 2208, 2213, 2218, 2223, + 2228, 2233, 2238, 2244, + 2249, 2254, 2259, 2264, + 2269, 2274, 2280, 2285, + 2290, 2295, 2300, 2305, + 2311, 2316, 2321, 2326, + 2332, 2337, 2342, 2347, + 2353, 2358, 2363, 2369, + 2374, 2379, 2384, 2390, + 2395, 2400, 2406, 2411, + 2417, 2422, 2427, 2433, + 2438, 2444, 2449, 2454, + 2460, 2465, 2471, 2476, + 2482, 2487, 2493, 2498, + 2503, 2509, 2514, 2520, + 2526, 2531, 2537, 2542, + 2548, 2553, 2559, 2564, + 2570, 2576, 2581, 2587, + 2592, 2598, 2604, 2609, + 2615, 2621, 2626, 2632, + 2638, 2643, 2649, 2655, + 2660, 2666, 2672, 2678, + 2683, 2689, 2695, 2701, + 2706, 2712, 2718, 2724, + 2729, 2735, 2741, 2747, + 2753, 2759, 2764, 2770, + 2776, 2782, 2788, 2794, + 2800, 2806, 2812, 2817, + 2823, 2829, 2835, 2841, + 2847, 2853, 2859, 2865, + 2871, 2877, 2883, 2889, + 2895, 2901, 2907, 2913, + 2919, 2925, 2932, 2938, + 2944, 2950, 2956, 2962, + 2968, 2974, 2980, 2987, + 2993, 2999, 3005, 3011, + 3017, 3024, 3030, 3036, + 3042, 3049, 3055, 3061, + 3067, 3074, 3080, 3086, + 3092, 3099, 3105, 3111, + 3118, 3124, 3130, 3137, + 3143, 3149, 3156, 3162, + 3168, 3175, 3181, 3188, + 3194, 3201, 3207, 3213, + 3220, 3226, 3233, 3239, + 3246, 3252, 3259, 3265, + 3272, 3278, 3285, 3291, + 3298, 3305, 3311, 3318, + 3324, 3331, 3337, 3344, + 3351, 3357, 3364, 3371, + 3377, 3384, 3391, 3397, + 3404, 3411, 3417, 3424, + 3431, 3438, 3444, 3451, + 3458, 3465, 3471, 3478, + 3485, 3492, 3499, 3505, + 3512, 3519, 3526, 3533, + 3540, 3546, 3553, 3560, + 3567, 3574, 3581, 3588, + 3595, 3602, 3609, 3616, + 3623, 3630, 3636, 3643, + 3650, 3657, 3665, 3672, + 3679, 3686, 3693, 3700, + 3707, 3714, 3721, 3728, + 3735, 3742, 3749, 3756, + 3764, 3771, 3778, 3785, + 3792, 3799, 3807, 3814, + 3821, 3828, 3835, 3843, + 3850, 3857, 3864, 3872, + 3879, 3886, 3894, 3901, + 3908, 3915, 3923, 3930, + 3937, 3945, 3952, 3960, + 3967, 3974, 3982, 3989, + 3997, 4004, 4011, 4019, + 4026, 4034, 4041, 4049, + 4056, 4064, 4071, 4079, + 4086, 4094, 4101, 4109, + 4116, 4124, 4132, 4139, + 4147, 4154, 4162, 4170, + 4177, 4185, 4193, 4200, + 4208, 4216, 4223, 4231, + 4239, 4246, 4254, 4262, + 4269, 4277, 4285, 4293, + 4301, 4308, 4316, 4324, + 4332, 4340, 4347, 4355, + 4363, 4371, 4379, 4387, + 4395, 4402, 4410, 4418, + 4426, 4434, 4442, 4450, + 4458, 4466, 4474, 4482, + 4490, 4498, 4506, 4514, + 4522, 4530, 4538, 4546, + 4554, 4562, 4570, 4578, + 4586, 4595, 4603, 4611, + 4619, 4627, 4635, 4643, + 4652, 4660, 4668, 4676, + 4684, 4693, 4701, 4709, + 4717, 4726, 4734, 4742, + 4750, 4759, 4767, 4775, + 4784, 4792, 4800, 4809, + 4817, 4825, 4834, 4842, + 4851, 4859, 4867, 4876, + 4884, 4893, 4901, 4910, + 4918, 4927, 4935, 4944, + 4952, 4961, 4969, 4978, + 4986, 4995, 5003, 5012, + 5021, 5029, 5038, 5046, + 5055, 5064, 5072, 5081, + 5090, 5098, 5107, 5116, + 5124, 5133, 5142, 5151, + 5159, 5168, 5177, 5186, + 5194, 5203, 5212, 5221, + 5230, 5238, 5247, 5256, + 5265, 5274, 5283, 5292, + 5300, 5309, 5318, 5327, + 5336, 5345, 5354, 5363, + 5372, 5381, 5390, 5399, + 5408, 5417, 5426, 5435, + 5444, 5453, 5462, 5471, + 5480, 5489, 5499, 5508, + 5517, 5526, 5535, 5544, + 5553, 5563, 5572, 5581, + 5590, 5599, 5609, 5618, + 5627, 5636, 5646, 5655, + 5664, 5673, 5683, 5692, + 5701, 5711, 5720, 5729, + 5739, 5748, 5757, 5767, + 5776, 5786, 5795, 5804, + 5814, 5823, 5833, 5842, + 5852, 5861, 5871, 5880, + 5890, 5899, 5909, 5918, + 5928, 5937, 5947, 5957, + 5966, 5976, 5985, 5995, + 6005, 6014, 6024, 6034, + 6043, 6053, 6063, 6072, + 6082, 6092, 6102, 6111, + 6121, 6131, 6141, 6150, + 6160, 6170, 6180, 6190, + 6200, 6209, 6219, 6229, + 6239, 6249, 6259, 6269, + 6279, 6288, 6298, 6308, + 6318, 6328, 6338, 6348, + 6358, 6368, 6378, 6388, + 6398, 6408, 6418, 6429, + 6439, 6449, 6459, 6469, + 6479, 6489, 6499, 6509, + 6520, 6530, 6540, 6550, + 6560, 6571, 6581, 6591, + 6601, 6611, 6622, 6632, + 6642, 6653, 6663, 6673, + 6684, 6694, 6704, 6715, + 6725, 6735, 6746, 6756, + 6766, 6777, 6787, 6798, + 6808, 6819, 6829, 6840, + 6850, 6861, 6871, 6882, + 6892, 6903, 6913, 6924, + 6934, 6945, 6956, 6966, + 6977, 6987, 6998, 7009, + 7019, 7030, 7041, 7051, + 7062, 7073, 7083, 7094, + 7105, 7116, 7126, 7137, + 7148, 7159, 7170, 7180, + 7191, 7202, 7213, 7224, + 7235, 7245, 7256, 7267, + 7278, 7289, 7300, 7311, + 7322, 7333, 7344, 7355, + 7366, 7377, 7388, 7399, + 7410, 7421, 7432, 7443, + 7454, 7465, 7476, 7487, + 7498, 7510, 7521, 7532, + 7543, 7554, 7565, 7576, + 7588, 7599, 7610, 7621, + 7633, 7644, 7655, 7666, + 7678, 7689, 7700, 7712, + 7723, 7734, 7746, 7757, + 7768, 7780, 7791, 7803, + 7814, 7825, 7837, 7848, + 7860, 7871, 7883, 7894, + 7906, 7917, 7929, 7940, + 7952, 7963, 7975, 7986, + 7998, 8010, 8021, 8033, + 8044, 8056, 8068, 8079, + 8091, 8103, 8114, 8126, + 8138, 8150, 8161, 8173, + 8185, 8197, 8208, 8220, + 8232, 8244, 8256, 8267, + 8279, 8291, 8303, 8315, + 8327, 8339, 8351, 8363, + 8374, 8386, 8398, 8410, + 8422, 8434, 8446, 8458, + 8470, 8482, 8494, 8506, + 8519, 8531, 8543, 8555, + 8567, 8579, 8591, 8603, + 8615, 8628, 8640, 8652, + 8664, 8676, 8689, 8701, + 8713, 8725, 8738, 8750, + 8762, 8774, 8787, 8799, + 8811, 8824, 8836, 8848, + 8861, 8873, 8886, 8898, + 8910, 8923, 8935, 8948, + 8960, 8973, 8985, 8998, + 9010, 9023, 9035, 9048, + 9060, 9073, 9086, 9098, + 9111, 9123, 9136, 9149, + 9161, 9174, 9187, 9199, + 9212, 9225, 9237, 9250, + 9263, 9275, 9288, 9301, + 9314, 9327, 9339, 9352, + 9365, 9378, 9391, 9404, + 9416, 9429, 9442, 9455, + 9468, 9481, 9494, 9507, + 9520, 9533, 9546, 9559, + 9572, 9585, 9598, 9611, + 9624, 9637, 9650, 9663, + 9676, 9689, 9702, 9716, + 9729, 9742, 9755, 9768, + 9781, 9795, 9808, 9821, + 9834, 9847, 9861, 9874, + 9887, 9901, 9914, 9927, + 9940, 9954, 9967, 9981, + 9994, 10007, 10021, 10034, + 10047, 10061, 10074, 10088, + 10101, 10115, 10128, 10142, + 10155, 10169, 10182, 10196, + 10209, 10223, 10237, 10250, + 10264, 10277, 10291, 10305, + 10318, 10332, 10346, 10359, + 10373, 10387, 10400, 10414, + 10428, 10442, 10455, 10469, + 10483, 10497, 10511, 10524, + 10538, 10552, 10566, 10580, + 10594, 10608, 10621, 10635, + 10649, 10663, 10677, 10691, + 10705, 10719, 10733, 10747, + 10761, 10775, 10789, 10803, + 10817, 10831, 10846, 10860, + 10874, 10888, 10902, 10916, + 10930, 10944, 10959, 10973, + 10987, 11001, 11016, 11030, + 11044, 11058, 11073, 11087, + 11101, 11116, 11130, 11144, + 11159, 11173, 11187, 11202, + 11216, 11230, 11245, 11259, + 11274, 11288, 11303, 11317, + 11332, 11346, 11361, 11375, + 11390, 11404, 11419, 11433, + 11448, 11463, 11477, 11492, + 11507, 11521, 11536, 11551, + 11565, 11580, 11595, 11609, + 11624, 11639, 11654, 11668, + 11683, 11698, 11713, 11728, + 11742, 11757, 11772, 11787, + 11802, 11817, 11832, 11847, + 11862, 11876, 11891, 11906, + 11921, 11936, 11951, 11966, + 11981, 11996, 12011, 12027, + 12042, 12057, 12072, 12087, + 12102, 12117, 12132, 12147, + 12163, 12178, 12193, 12208, + 12223, 12239, 12254, 12269, + 12284, 12300, 12315, 12330, + 12346, 12361, 12376, 12392, + 12407, 12422, 12438, 12453, + 12469, 12484, 12499, 12515, + 12530, 12546, 12561, 12577, + 12592, 12608, 12623, 12639, + 12654, 12670, 12686, 12701, + 12717, 12732, 12748, 12764, + 12779, 12795, 12811, 12826, + 12842, 12858, 12874, 12889, + 12905, 12921, 12937, 12953, + 12968, 12984, 13000, 13016, + 13032, 13048, 13063, 13079, + 13095, 13111, 13127, 13143, + 13159, 13175, 13191, 13207, + 13223, 13239, 13255, 13271, + 13287, 13303, 13319, 13335, + 13351, 13368, 13384, 13400, + 13416, 13432, 13448, 13465, + 13481, 13497, 13513, 13529, + 13546, 13562, 13578, 13595, + 13611, 13627, 13644, 13660, + 13676, 13693, 13709, 13725, + 13742, 13758, 13775, 13791, + 13808, 13824, 13841, 13857, + 13874, 13890, 13907, 13923, + 13940, 13956, 13973, 13989, + 14006, 14023, 14039, 14056, + 14073, 14089, 14106, 14123, + 14139, 14156, 14173, 14190, + 14206, 14223, 14240, 14257, + 14274, 14290, 14307, 14324, + 14341, 14358, 14375, 14392, + 14409, 14425, 14442, 14459, + 14476, 14493, 14510, 14527, + 14544, 14561, 14578, 14595, + 14613, 14630, 14647, 14664, + 14681, 14698, 14715, 14732, + 14750, 14767, 14784, 14801, + 14818, 14836, 14853, 14870, + 14887, 14905, 14922, 14939, + 14957, 14974, 14991, 15009, + 15026, 15043, 15061, 15078, + 15096, 15113, 15131, 15148, + 15166, 15183, 15201, 15218, + 15236, 15253, 15271, 15288, + 15306, 15323, 15341, 15359, + 15376, 15394, 15412, 15429, + 15447, 15465, 15482, 15500, + 15518, 15536, 15553, 15571, + 15589, 15607, 15625, 15643, + 15660, 15678, 15696, 15714, + 15732, 15750, 15768, 15786, + 15804, 15822, 15840, 15858, + 15876, 15894, 15912, 15930, + 15948, 15966, 15984, 16002, + 16020, 16038, 16056, 16074, + 16093, 16111, 16129, 16147, + 16165, 16184, 16202, 16220, + 16238, 16257, 16275, 16293, + 16312, 16330, 16348, 16367, + 16385, 16403, 16422, 16440, + 16459, 16477, 16496, 16514, + 16532, 16551, 16569, 16588, + 16607, 16625, 16644, 16662, + 16681, 16699, 16718, 16737, + 16755, 16774, 16793, 16811, + 16830, 16849, 16867, 16886, + 16905, 16924, 16942, 16961, + 16980, 16999, 17018, 17036, + 17055, 17074, 17093, 17112, + 17131, 17150, 17169, 17188, + 17207, 17226, 17245, 17264, + 17283, 17302, 17321, 17340, + 17359, 17378, 17397, 17416, + 17435, 17454, 17474, 17493, + 17512, 17531, 17550, 17569, + 17589, 17608, 17627, 17646, + 17666, 17685, 17704, 17724, + 17743, 17762, 17782, 17801, + 17821, 17840, 17859, 17879, + 17898, 17918, 17937, 17957, + 17976, 17996, 18015, 18035, + 18054, 18074, 18093, 18113, + 18133, 18152, 18172, 18192, + 18211, 18231, 18251, 18270, + 18290, 18310, 18330, 18349, + 18369, 18389, 18409, 18429, + 18448, 18468, 18488, 18508, + 18528, 18548, 18568, 18588, + 18607, 18627, 18647, 18667, + 18687, 18707, 18727, 18747, + 18767, 18788, 18808, 18828, + 18848, 18868, 18888, 18908, + 18928, 18949, 18969, 18989, + 19009, 19029, 19050, 19070, + 19090, 19110, 19131, 19151, + 19171, 19192, 19212, 19232, + 19253, 19273, 19294, 19314, + 19334, 19355, 19375, 19396, + 19416, 19437, 19457, 19478, + 19498, 19519, 19540, 19560, + 19581, 19601, 19622, 19643, + 19663, 19684, 19705, 19725, + 19746, 19767, 19788, 19808, + 19829, 19850, 19871, 19892, + 19912, 19933, 19954, 19975, + 19996, 20017, 20038, 20059, + 20080, 20100, 20121, 20142, + 20163, 20184, 20205, 20226, + 20248, 20269, 20290, 20311, + 20332, 20353, 20374, 20395, + 20416, 20438, 20459, 20480, + 20501, 20523, 20544, 20565, + 20586, 20608, 20629, 20650, + 20672, 20693, 20714, 20736, + 20757, 20778, 20800, 20821, + 20843, 20864, 20886, 20907, + 20929, 20950, 20972, 20993, + 21015, 21036, 21058, 21080, + 21101, 21123, 21145, 21166, + 21188, 21210, 21231, 21253, + 21275, 21296, 21318, 21340, + 21362, 21384, 21405, 21427, + 21449, 21471, 21493, 21515, + 21537, 21559, 21580, 21602, + 21624, 21646, 21668, 21690, + 21712, 21734, 21756, 21779, + 21801, 21823, 21845, 21867, + 21889, 21911, 21933, 21956, + 21978, 22000, 22022, 22044, + 22067, 22089, 22111, 22134, + 22156, 22178, 22200, 22223, + 22245, 22268, 22290, 22312, + 22335, 22357, 22380, 22402, + 22425, 22447, 22470, 22492, + 22515, 22537, 22560, 22582, + 22605, 22628, 22650, 22673, + 22696, 22718, 22741, 22764, + 22786, 22809, 22832, 22855, + 22877, 22900, 22923, 22946, + 22969, 22991, 23014, 23037, + 23060, 23083, 23106, 23129, + 23152, 23175, 23198, 23221, + 23244, 23267, 23290, 23313, + 23336, 23359, 23382, 23405, + 23428, 23451, 23475, 23498, + 23521, 23544, 23567, 23591, + 23614, 23637, 23660, 23684, + 23707, 23730, 23754, 23777, + 23800, 23824, 23847, 23870, + 23894, 23917, 23941, 23964, + 23988, 24011, 24035, 24058, + 24082, 24105, 24129, 24152, + 24176, 24200, 24223, 24247, + 24271, 24294, 24318, 24342, + 24365, 24389, 24413, 24437, + 24460, 24484, 24508, 24532, + 24556, 24579, 24603, 24627, + 24651, 24675, 24699, 24723, + 24747, 24771, 24795, 24819, + 24843, 24867, 24891, 24915, + 24939, 24963, 24987, 25011, + 25035, 25059, 25084, 25108, + 25132, 25156, 25180, 25205, + 25229, 25253, 25277, 25302, + 25326, 25350, 25375, 25399, + 25423, 25448, 25472, 25497, + 25521, 25546, 25570, 25594, + 25619, 25643, 25668, 25693, + 25717, 25742, 25766, 25791, + 25815, 25840, 25865, 25889, + 25914, 25939, 25963, 25988, + 26013, 26038, 26062, 26087, + 26112, 26137, 26162, 26186, + 26211, 26236, 26261, 26286, + 26311, 26336, 26361, 26386, + 26411, 26436, 26461, 26486, + 26511, 26536, 26561, 26586, + 26611, 26636, 26661, 26686, + 26712, 26737, 26762, 26787, + 26812, 26838, 26863, 26888, + 26913, 26939, 26964, 26989, + 27015, 27040, 27065, 27091, + 27116, 27142, 27167, 27192, + 27218, 27243, 27269, 27294, + 27320, 27345, 27371, 27397, + 27422, 27448, 27473, 27499, + 27525, 27550, 27576, 27602, + 27627, 27653, 27679, 27705, + 27730, 27756, 27782, 27808, + 27834, 27859, 27885, 27911, + 27937, 27963, 27989, 28015, + 28041, 28067, 28093, 28119, + 28145, 28171, 28197, 28223, + 28249, 28275, 28301, 28327, + 28354, 28380, 28406, 28432, + 28458, 28484, 28511, 28537, + 28563, 28590, 28616, 28642, + 28668, 28695, 28721, 28748, + 28774, 28800, 28827, 28853, + 28880, 28906, 28933, 28959, + 28986, 29012, 29039, 29065, + 29092, 29118, 29145, 29172, + 29198, 29225, 29252, 29278, + 29305, 29332, 29358, 29385, + 29412, 29439, 29466, 29492, + 29519, 29546, 29573, 29600, + 29627, 29654, 29680, 29707, + 29734, 29761, 29788, 29815, + 29842, 29869, 29896, 29923, + 29951, 29978, 30005, 30032, + 30059, 30086, 30113, 30141, + 30168, 30195, 30222, 30249, + 30277, 30304, 30331, 30359, + 30386, 30413, 30441, 30468, + 30495, 30523, 30550, 30578, + 30605, 30633, 30660, 30688, + 30715, 30743, 30770, 30798, + 30825, 30853, 30881, 30908, + 30936, 30964, 30991, 31019, + 31047, 31074, 31102, 31130, + 31158, 31185, 31213, 31241, + 31269, 31297, 31325, 31353, + 31380, 31408, 31436, 31464, + 31492, 31520, 31548, 31576, + 31604, 31632, 31660, 31688, + 31717, 31745, 31773, 31801, + 31829, 31857, 31885, 31914, + 31942, 31970, 31998, 32027, + 32055, 32083, 32112, 32140, + 32168, 32197, 32225, 32253, + 32282, 32310, 32339, 32367, + 32396, 32424, 32453, 32481, + 32510, 32538, 32567, 32595, + 32624, 32653, 32681, 32710, + 32739, 32767, 32796, 32825, + 32854, 32882, 32911, 32940, + 32969, 32997, 33026, 33055, + 33084, 33113, 33142, 33171, + 33200, 33229, 33258, 33287, + 33316, 33345, 33374, 33403, + 33432, 33461, 33490, 33519, + 33548, 33577, 33606, 33636, + 33665, 33694, 33723, 33752, + 33782, 33811, 33840, 33870, + 33899, 33928, 33958, 33987, + 34016, 34046, 34075, 34105, + 34134, 34164, 34193, 34223, + 34252, 34282, 34311, 34341, + 34370, 34400, 34430, 34459, + 34489, 34519, 34548, 34578, + 34608, 34637, 34667, 34697, + 34727, 34756, 34786, 34816, + 34846, 34876, 34906, 34936, + 34965, 34995, 35025, 35055, + 35085, 35115, 35145, 35175, + 35205, 35235, 35266, 35296, + 35326, 35356, 35386, 35416, + 35446, 35477, 35507, 35537, + 35567, 35597, 35628, 35658, + 35688, 35719, 35749, 35779, + 35810, 35840, 35871, 35901, + 35931, 35962, 35992, 36023, + 36053, 36084, 36114, 36145, + 36176, 36206, 36237, 36267, + 36298, 36329, 36359, 36390, + 36421, 36451, 36482, 36513, + 36544, 36575, 36605, 36636, + 36667, 36698, 36729, 36760, + 36791, 36821, 36852, 36883, + 36914, 36945, 36976, 37007, + 37038, 37069, 37101, 37132, + 37163, 37194, 37225, 37256, + 37287, 37319, 37350, 37381, + 37412, 37443, 37475, 37506, + 37537, 37569, 37600, 37631, + 37663, 37694, 37726, 37757, + 37788, 37820, 37851, 37883, + 37914, 37946, 37977, 38009, + 38041, 38072, 38104, 38135, + 38167, 38199, 38230, 38262, + 38294, 38326, 38357, 38389, + 38421, 38453, 38484, 38516, + 38548, 38580, 38612, 38644, + 38676, 38708, 38740, 38772, + 38804, 38836, 38868, 38900, + 38932, 38964, 38996, 39028, + 39060, 39092, 39124, 39157, + 39189, 39221, 39253, 39285, + 39318, 39350, 39382, 39415, + 39447, 39479, 39512, 39544, + 39576, 39609, 39641, 39674, + 39706, 39739, 39771, 39804, + 39836, 39869, 39901, 39934, + 39966, 39999, 40032, 40064, + 40097, 40130, 40162, 40195, + 40228, 40261, 40293, 40326, + 40359, 40392, 40425, 40457, + 40490, 40523, 40556, 40589, + 40622, 40655, 40688, 40721, + 40754, 40787, 40820, 40853, + 40886, 40919, 40952, 40985, + 41019, 41052, 41085, 41118, + 41151, 41185, 41218, 41251, + 41284, 41318, 41351, 41384, + 41418, 41451, 41484, 41518, + 41551, 41585, 41618, 41652, + 41685, 41719, 41752, 41786, + 41819, 41853, 41886, 41920, + 41954, 41987, 42021, 42055, + 42088, 42122, 42156, 42190, + 42223, 42257, 42291, 42325, + 42359, 42392, 42426, 42460, + 42494, 42528, 42562, 42596, + 42630, 42664, 42698, 42732, + 42766, 42800, 42834, 42868, + 42902, 42937, 42971, 43005, + 43039, 43073, 43107, 43142, + 43176, 43210, 43245, 43279, + 43313, 43348, 43382, 43416, + 43451, 43485, 43520, 43554, + 43588, 43623, 43657, 43692, + 43727, 43761, 43796, 43830, + 43865, 43899, 43934, 43969, + 44003, 44038, 44073, 44108, + 44142, 44177, 44212, 44247, + 44282, 44316, 44351, 44386, + 44421, 44456, 44491, 44526, + 44561, 44596, 44631, 44666, + 44701, 44736, 44771, 44806, + 44841, 44876, 44911, 44946, + 44982, 45017, 45052, 45087, + 45122, 45158, 45193, 45228, + 45264, 45299, 45334, 45370, + 45405, 45440, 45476, 45511, + 45547, 45582, 45618, 45653, + 45689, 45724, 45760, 45795, + 45831, 45867, 45902, 45938, + 45974, 46009, 46045, 46081, + 46116, 46152, 46188, 46224, + 46260, 46295, 46331, 46367, + 46403, 46439, 46475, 46511, + 46547, 46583, 46619, 46655, + 46691, 46727, 46763, 46799, + 46835, 46871, 46907, 46943, + 46980, 47016, 47052, 47088, + 47124, 47161, 47197, 47233, + 47270, 47306, 47342, 47379, + 47415, 47451, 47488, 47524, + 47561, 47597, 47634, 47670, + 47707, 47743, 47780, 47816, + 47853, 47890, 47926, 47963, + 48000, 48036, 48073, 48110, + 48146, 48183, 48220, 48257, + 48294, 48330, 48367, 48404, + 48441, 48478, 48515, 48552, + 48589, 48626, 48663, 48700, + 48737, 48774, 48811, 48848, + 48885, 48922, 48959, 48997, + 49034, 49071, 49108, 49145, + 49183, 49220, 49257, 49295, + 49332, 49369, 49407, 49444, + 49481, 49519, 49556, 49594, + 49631, 49669, 49706, 49744, + 49781, 49819, 49856, 49894, + 49931, 49969, 50007, 50044, + 50082, 50120, 50158, 50195, + 50233, 50271, 50309, 50346, + 50384, 50422, 50460, 50498, + 50536, 50574, 50612, 50650, + 50688, 50726, 50764, 50802, + 50840, 50878, 50916, 50954, + 50992, 51030, 51068, 51107, + 51145, 51183, 51221, 51259, + 51298, 51336, 51374, 51413, + 51451, 51489, 51528, 51566, + 51605, 51643, 51681, 51720, + 51758, 51797, 51835, 51874, + 51913, 51951, 51990, 52028, + 52067, 52106, 52144, 52183, + 52222, 52261, 52299, 52338, + 52377, 52416, 52454, 52493, + 52532, 52571, 52610, 52649, + 52688, 52727, 52766, 52805, + 52844, 52883, 52922, 52961, + 53000, 53039, 53078, 53117, + 53157, 53196, 53235, 53274, + 53313, 53353, 53392, 53431, + 53470, 53510, 53549, 53588, + 53628, 53667, 53707, 53746, + 53786, 53825, 53865, 53904, + 53944, 53983, 54023, 54062, + 54102, 54142, 54181, 54221, + 54260, 54300, 54340, 54380, + 54419, 54459, 54499, 54539, + 54579, 54618, 54658, 54698, + 54738, 54778, 54818, 54858, + 54898, 54938, 54978, 55018, + 55058, 55098, 55138, 55178, + 55218, 55259, 55299, 55339, + 55379, 55419, 55460, 55500, + 55540, 55580, 55621, 55661, + 55701, 55742, 55782, 55823, + 55863, 55903, 55944, 55984, + 56025, 56065, 56106, 56147, + 56187, 56228, 56268, 56309, + 56350, 56390, 56431, 56472, + 56512, 56553, 56594, 56635, + 56676, 56716, 56757, 56798, + 56839, 56880, 56921, 56962, + 57003, 57044, 57085, 57126, + 57167, 57208, 57249, 57290, + 57331, 57372, 57413, 57454, + 57496, 57537, 57578, 57619, + 57661, 57702, 57743, 57784, + 57826, 57867, 57909, 57950, + 57991, 58033, 58074, 58116, + 58157, 58199, 58240, 58282, + 58323, 58365, 58407, 58448, + 58490, 58531, 58573, 58615, + 58657, 58698, 58740, 58782, + 58824, 58865, 58907, 58949, + 58991, 59033, 59075, 59117, + 59159, 59201, 59243, 59285, + 59327, 59369, 59411, 59453, + 59495, 59537, 59579, 59621, + 59664, 59706, 59748, 59790, + 59832, 59875, 59917, 59959, + 60002, 60044, 60086, 60129, + 60171, 60214, 60256, 60298, + 60341, 60383, 60426, 60469, + 60511, 60554, 60596, 60639, + 60682, 60724, 60767, 60810, + 60852, 60895, 60938, 60981, + 61023, 61066, 61109, 61152, + 61195, 61238, 61280, 61323, + 61366, 61409, 61452, 61495, + 61538, 61581, 61624, 61668, + 61711, 61754, 61797, 61840, + 61883, 61926, 61970, 62013, + 62056, 62099, 62143, 62186, + 62229, 62273, 62316, 62359, + 62403, 62446, 62490, 62533, + 62577, 62620, 62664, 62707, + 62751, 62794, 62838, 62882, + 62925, 62969, 63013, 63056, + 63100, 63144, 63188, 63231, + 63275, 63319, 63363, 63407, + 63451, 63495, 63538, 63582, + 63626, 63670, 63714, 63758, + 63802, 63846, 63890, 63935, + 63979, 64023, 64067, 64111, + 64155, 64200, 64244, 64288, + 64332, 64377, 64421, 64465, + 64510, 64554, 64598, 64643, + 64687, 64732, 64776, 64821, + 64865, 64910, 64954, 64999, + 65043, 65088, 65133, 65177, + 65222, 65266, 65311, 65356, + 65401, 65445, 65490, 65535, +}; +const uint16_t lut_led_green_gamma[] = { + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3120,63 +4149,1020 @@ const uint16_t lut_led_gamma[] = { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 2, + 1, 1, 1, 1, + 1, 1, 1, 1, 2, 2, 2, 2, - 2, 2, 3, 3, - 3, 3, 3, 4, + 2, 2, 2, 2, + 2, 2, 2, 2, + 3, 3, 3, 3, + 3, 3, 3, 3, + 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, + 5, 5, 5, 6, 6, 6, 6, 6, - 7, 7, 7, 8, - 8, 8, 9, 9, - 9, 10, 10, 10, - 11, 11, 11, 12, - 12, 13, 13, 14, - 14, 14, 15, 15, + 7, 7, 7, 7, + 7, 7, 8, 8, + 8, 8, 8, 9, + 9, 9, 9, 10, + 10, 10, 10, 10, + 11, 11, 11, 11, + 12, 12, 12, 12, + 13, 13, 13, 13, + 14, 14, 14, 15, + 15, 15, 15, 16, 16, 16, 17, 17, - 18, 18, 19, 19, - 20, 20, 21, 22, - 22, 23, 23, 24, - 24, 25, 26, 26, + 17, 18, 18, 18, + 19, 19, 19, 20, + 20, 20, 21, 21, + 21, 22, 22, 22, + 23, 23, 23, 24, + 24, 25, 25, 25, + 26, 26, 27, 27, 27, 28, 28, 29, - 30, 30, 31, 32, - 32, 33, 34, 35, - 35, 36, 37, 38, - 39, 39, 40, 41, + 29, 29, 30, 30, + 31, 31, 32, 32, + 33, 33, 33, 34, + 34, 35, 35, 36, + 36, 37, 37, 38, + 38, 39, 39, 40, + 40, 41, 41, 42, 42, 43, 43, 44, - 45, 46, 47, 48, - 49, 50, 51, 52, - 53, 53, 54, 55, - 56, 57, 58, 59, - 60, 62, 63, 64, - 65, 66, 67, 68, - 69, 70, 71, 73, - 74, 75, 76, 77, - 78, 80, 81, 82, - 83, 85, 86, 87, - 88, 90, 91, 92, - 94, 95, 96, 98, - 99, 100, 102, 103, - 105, 106, 108, 109, - 111, 112, 114, 115, - 117, 118, 120, 121, - 123, 124, 126, 127, - 129, 131, 132, 134, - 136, 137, 139, 141, - 142, 144, 146, 148, - 149, 151, 153, 155, - 156, 158, 160, 162, - 164, 166, 167, 169, - 171, 173, 175, 177, - 179, 181, 183, 185, - 187, 189, 191, 193, - 195, 197, 199, 201, - 203, 205, 207, 210, - 212, 214, 216, 218, - 220, 223, 225, 227, - 229, 232, 234, 236, - 239, 241, 243, 246, - 248, 250, 253, 255, + 45, 45, 46, 46, + 47, 47, 48, 48, + 49, 50, 50, 51, + 51, 52, 53, 53, + 54, 54, 55, 56, + 56, 57, 57, 58, + 59, 59, 60, 61, + 61, 62, 63, 63, + 64, 65, 65, 66, + 67, 67, 68, 69, + 70, 70, 71, 72, + 72, 73, 74, 75, + 75, 76, 77, 78, + 78, 79, 80, 81, + 81, 82, 83, 84, + 84, 85, 86, 87, + 88, 89, 89, 90, + 91, 92, 93, 93, + 94, 95, 96, 97, + 98, 99, 99, 100, + 101, 102, 103, 104, + 105, 106, 107, 107, + 108, 109, 110, 111, + 112, 113, 114, 115, + 116, 117, 118, 119, + 120, 121, 122, 123, + 124, 125, 126, 127, + 128, 129, 130, 131, + 132, 133, 134, 135, + 136, 137, 138, 139, + 140, 141, 142, 143, + 144, 145, 147, 148, + 149, 150, 151, 152, + 153, 154, 155, 157, + 158, 159, 160, 161, + 162, 163, 165, 166, + 167, 168, 169, 171, + 172, 173, 174, 175, + 177, 178, 179, 180, + 181, 183, 184, 185, + 186, 188, 189, 190, + 192, 193, 194, 195, + 197, 198, 199, 201, + 202, 203, 205, 206, + 207, 209, 210, 211, + 213, 214, 215, 217, + 218, 219, 221, 222, + 224, 225, 226, 228, + 229, 231, 232, 234, + 235, 236, 238, 239, + 241, 242, 244, 245, + 247, 248, 250, 251, + 253, 254, 256, 257, + 259, 260, 262, 263, + 265, 266, 268, 269, + 271, 273, 274, 276, + 277, 279, 280, 282, + 284, 285, 287, 288, + 290, 292, 293, 295, + 297, 298, 300, 302, + 303, 305, 307, 308, + 310, 312, 313, 315, + 317, 319, 320, 322, + 324, 325, 327, 329, + 331, 332, 334, 336, + 338, 340, 341, 343, + 345, 347, 349, 350, + 352, 354, 356, 358, + 359, 361, 363, 365, + 367, 369, 371, 373, + 374, 376, 378, 380, + 382, 384, 386, 388, + 390, 392, 394, 395, + 397, 399, 401, 403, + 405, 407, 409, 411, + 413, 415, 417, 419, + 421, 423, 425, 427, + 429, 431, 434, 436, + 438, 440, 442, 444, + 446, 448, 450, 452, + 454, 457, 459, 461, + 463, 465, 467, 469, + 471, 474, 476, 478, + 480, 482, 485, 487, + 489, 491, 493, 496, + 498, 500, 502, 505, + 507, 509, 511, 514, + 516, 518, 520, 523, + 525, 527, 530, 532, + 534, 537, 539, 541, + 544, 546, 548, 551, + 553, 555, 558, 560, + 563, 565, 567, 570, + 572, 575, 577, 579, + 582, 584, 587, 589, + 592, 594, 597, 599, + 602, 604, 607, 609, + 612, 614, 617, 619, + 622, 624, 627, 629, + 632, 634, 637, 640, + 642, 645, 647, 650, + 653, 655, 658, 660, + 663, 666, 668, 671, + 674, 676, 679, 682, + 684, 687, 690, 692, + 695, 698, 701, 703, + 706, 709, 711, 714, + 717, 720, 723, 725, + 728, 731, 734, 736, + 739, 742, 745, 748, + 751, 753, 756, 759, + 762, 765, 768, 770, + 773, 776, 779, 782, + 785, 788, 791, 794, + 797, 800, 803, 805, + 808, 811, 814, 817, + 820, 823, 826, 829, + 832, 835, 838, 841, + 844, 847, 850, 853, + 857, 860, 863, 866, + 869, 872, 875, 878, + 881, 884, 887, 891, + 894, 897, 900, 903, + 906, 909, 913, 916, + 919, 922, 925, 929, + 932, 935, 938, 941, + 945, 948, 951, 954, + 958, 961, 964, 968, + 971, 974, 977, 981, + 984, 987, 991, 994, + 997, 1001, 1004, 1007, + 1011, 1014, 1018, 1021, + 1024, 1028, 1031, 1035, + 1038, 1041, 1045, 1048, + 1052, 1055, 1059, 1062, + 1066, 1069, 1073, 1076, + 1079, 1083, 1087, 1090, + 1094, 1097, 1101, 1104, + 1108, 1111, 1115, 1118, + 1122, 1126, 1129, 1133, + 1136, 1140, 1144, 1147, + 1151, 1154, 1158, 1162, + 1165, 1169, 1173, 1176, + 1180, 1184, 1188, 1191, + 1195, 1199, 1202, 1206, + 1210, 1214, 1217, 1221, + 1225, 1229, 1232, 1236, + 1240, 1244, 1248, 1251, + 1255, 1259, 1263, 1267, + 1271, 1274, 1278, 1282, + 1286, 1290, 1294, 1298, + 1302, 1306, 1309, 1313, + 1317, 1321, 1325, 1329, + 1333, 1337, 1341, 1345, + 1349, 1353, 1357, 1361, + 1365, 1369, 1373, 1377, + 1381, 1385, 1389, 1393, + 1397, 1401, 1405, 1410, + 1414, 1418, 1422, 1426, + 1430, 1434, 1438, 1442, + 1447, 1451, 1455, 1459, + 1463, 1467, 1472, 1476, + 1480, 1484, 1489, 1493, + 1497, 1501, 1505, 1510, + 1514, 1518, 1523, 1527, + 1531, 1535, 1540, 1544, + 1548, 1553, 1557, 1561, + 1566, 1570, 1574, 1579, + 1583, 1587, 1592, 1596, + 1601, 1605, 1610, 1614, + 1618, 1623, 1627, 1632, + 1636, 1641, 1645, 1650, + 1654, 1659, 1663, 1668, + 1672, 1677, 1681, 1686, + 1690, 1695, 1699, 1704, + 1708, 1713, 1718, 1722, + 1727, 1731, 1736, 1741, + 1745, 1750, 1755, 1759, + 1764, 1769, 1773, 1778, + 1783, 1787, 1792, 1797, + 1801, 1806, 1811, 1816, + 1820, 1825, 1830, 1835, + 1839, 1844, 1849, 1854, + 1859, 1863, 1868, 1873, + 1878, 1883, 1888, 1892, + 1897, 1902, 1907, 1912, + 1917, 1922, 1927, 1931, + 1936, 1941, 1946, 1951, + 1956, 1961, 1966, 1971, + 1976, 1981, 1986, 1991, + 1996, 2001, 2006, 2011, + 2016, 2021, 2026, 2031, + 2036, 2041, 2046, 2052, + 2057, 2062, 2067, 2072, + 2077, 2082, 2087, 2093, + 2098, 2103, 2108, 2113, + 2118, 2124, 2129, 2134, + 2139, 2144, 2150, 2155, + 2160, 2165, 2171, 2176, + 2181, 2186, 2192, 2197, + 2202, 2208, 2213, 2218, + 2224, 2229, 2234, 2240, + 2245, 2250, 2256, 2261, + 2267, 2272, 2277, 2283, + 2288, 2294, 2299, 2305, + 2310, 2315, 2321, 2326, + 2332, 2337, 2343, 2348, + 2354, 2359, 2365, 2370, + 2376, 2382, 2387, 2393, + 2398, 2404, 2409, 2415, + 2421, 2426, 2432, 2437, + 2443, 2449, 2454, 2460, + 2466, 2471, 2477, 2483, + 2488, 2494, 2500, 2506, + 2511, 2517, 2523, 2529, + 2534, 2540, 2546, 2552, + 2557, 2563, 2569, 2575, + 2581, 2586, 2592, 2598, + 2604, 2610, 2616, 2622, + 2627, 2633, 2639, 2645, + 2651, 2657, 2663, 2669, + 2675, 2681, 2687, 2693, + 2699, 2705, 2711, 2717, + 2723, 2729, 2735, 2741, + 2747, 2753, 2759, 2765, + 2771, 2777, 2783, 2789, + 2795, 2801, 2807, 2813, + 2820, 2826, 2832, 2838, + 2844, 2850, 2857, 2863, + 2869, 2875, 2881, 2888, + 2894, 2900, 2906, 2912, + 2919, 2925, 2931, 2937, + 2944, 2950, 2956, 2963, + 2969, 2975, 2982, 2988, + 2994, 3001, 3007, 3013, + 3020, 3026, 3033, 3039, + 3045, 3052, 3058, 3065, + 3071, 3077, 3084, 3090, + 3097, 3103, 3110, 3116, + 3123, 3129, 3136, 3142, + 3149, 3155, 3162, 3169, + 3175, 3182, 3188, 3195, + 3201, 3208, 3215, 3221, + 3228, 3235, 3241, 3248, + 3255, 3261, 3268, 3275, + 3281, 3288, 3295, 3301, + 3308, 3315, 3322, 3328, + 3335, 3342, 3349, 3355, + 3362, 3369, 3376, 3383, + 3389, 3396, 3403, 3410, + 3417, 3424, 3431, 3437, + 3444, 3451, 3458, 3465, + 3472, 3479, 3486, 3493, + 3500, 3507, 3514, 3521, + 3528, 3535, 3542, 3549, + 3556, 3563, 3570, 3577, + 3584, 3591, 3598, 3605, + 3612, 3619, 3626, 3633, + 3640, 3647, 3655, 3662, + 3669, 3676, 3683, 3690, + 3698, 3705, 3712, 3719, + 3726, 3734, 3741, 3748, + 3755, 3762, 3770, 3777, + 3784, 3792, 3799, 3806, + 3813, 3821, 3828, 3835, + 3843, 3850, 3857, 3865, + 3872, 3880, 3887, 3894, + 3902, 3909, 3917, 3924, + 3931, 3939, 3946, 3954, + 3961, 3969, 3976, 3984, + 3991, 3999, 4006, 4014, + 4021, 4029, 4036, 4044, + 4052, 4059, 4067, 4074, + 4082, 4090, 4097, 4105, + 4112, 4120, 4128, 4135, + 4143, 4151, 4158, 4166, + 4174, 4181, 4189, 4197, + 4205, 4212, 4220, 4228, + 4236, 4243, 4251, 4259, + 4267, 4275, 4282, 4290, + 4298, 4306, 4314, 4322, + 4330, 4337, 4345, 4353, + 4361, 4369, 4377, 4385, + 4393, 4401, 4409, 4417, + 4425, 4433, 4441, 4449, + 4457, 4465, 4473, 4481, + 4489, 4497, 4505, 4513, + 4521, 4529, 4537, 4545, + 4553, 4561, 4569, 4578, + 4586, 4594, 4602, 4610, + 4618, 4627, 4635, 4643, + 4651, 4659, 4668, 4676, + 4684, 4692, 4701, 4709, + 4717, 4725, 4734, 4742, + 4750, 4759, 4767, 4775, + 4784, 4792, 4800, 4809, + 4817, 4825, 4834, 4842, + 4851, 4859, 4867, 4876, + 4884, 4893, 4901, 4910, + 4918, 4927, 4935, 4944, + 4952, 4961, 4969, 4978, + 4986, 4995, 5003, 5012, + 5020, 5029, 5038, 5046, + 5055, 5063, 5072, 5081, + 5089, 5098, 5107, 5115, + 5124, 5133, 5141, 5150, + 5159, 5168, 5176, 5185, + 5194, 5203, 5211, 5220, + 5229, 5238, 5247, 5255, + 5264, 5273, 5282, 5291, + 5299, 5308, 5317, 5326, + 5335, 5344, 5353, 5362, + 5371, 5380, 5388, 5397, + 5406, 5415, 5424, 5433, + 5442, 5451, 5460, 5469, + 5478, 5487, 5496, 5505, + 5515, 5524, 5533, 5542, + 5551, 5560, 5569, 5578, + 5587, 5596, 5606, 5615, + 5624, 5633, 5642, 5652, + 5661, 5670, 5679, 5688, + 5698, 5707, 5716, 5725, + 5735, 5744, 5753, 5762, + 5772, 5781, 5790, 5800, + 5809, 5818, 5828, 5837, + 5847, 5856, 5865, 5875, + 5884, 5894, 5903, 5912, + 5922, 5931, 5941, 5950, + 5960, 5969, 5979, 5988, + 5998, 6007, 6017, 6026, + 6036, 6045, 6055, 6065, + 6074, 6084, 6093, 6103, + 6113, 6122, 6132, 6142, + 6151, 6161, 6171, 6180, + 6190, 6200, 6209, 6219, + 6229, 6239, 6248, 6258, + 6268, 6278, 6287, 6297, + 6307, 6317, 6327, 6336, + 6346, 6356, 6366, 6376, + 6386, 6396, 6405, 6415, + 6425, 6435, 6445, 6455, + 6465, 6475, 6485, 6495, + 6505, 6515, 6525, 6535, + 6545, 6555, 6565, 6575, + 6585, 6595, 6605, 6615, + 6625, 6635, 6645, 6656, + 6666, 6676, 6686, 6696, + 6706, 6716, 6727, 6737, + 6747, 6757, 6767, 6778, + 6788, 6798, 6808, 6819, + 6829, 6839, 6849, 6860, + 6870, 6880, 6891, 6901, + 6911, 6922, 6932, 6942, + 6953, 6963, 6973, 6984, + 6994, 7005, 7015, 7026, + 7036, 7046, 7057, 7067, + 7078, 7088, 7099, 7109, + 7120, 7130, 7141, 7151, + 7162, 7173, 7183, 7194, + 7204, 7215, 7226, 7236, + 7247, 7257, 7268, 7279, + 7289, 7300, 7311, 7321, + 7332, 7343, 7354, 7364, + 7375, 7386, 7396, 7407, + 7418, 7429, 7440, 7450, + 7461, 7472, 7483, 7494, + 7505, 7515, 7526, 7537, + 7548, 7559, 7570, 7581, + 7592, 7603, 7613, 7624, + 7635, 7646, 7657, 7668, + 7679, 7690, 7701, 7712, + 7723, 7734, 7745, 7757, + 7768, 7779, 7790, 7801, + 7812, 7823, 7834, 7845, + 7856, 7868, 7879, 7890, + 7901, 7912, 7923, 7935, + 7946, 7957, 7968, 7980, + 7991, 8002, 8013, 8025, + 8036, 8047, 8059, 8070, + 8081, 8092, 8104, 8115, + 8127, 8138, 8149, 8161, + 8172, 8183, 8195, 8206, + 8218, 8229, 8241, 8252, + 8264, 8275, 8287, 8298, + 8310, 8321, 8333, 8344, + 8356, 8367, 8379, 8390, + 8402, 8414, 8425, 8437, + 8448, 8460, 8472, 8483, + 8495, 8507, 8518, 8530, + 8542, 8553, 8565, 8577, + 8589, 8600, 8612, 8624, + 8636, 8647, 8659, 8671, + 8683, 8695, 8706, 8718, + 8730, 8742, 8754, 8766, + 8778, 8790, 8801, 8813, + 8825, 8837, 8849, 8861, + 8873, 8885, 8897, 8909, + 8921, 8933, 8945, 8957, + 8969, 8981, 8993, 9005, + 9017, 9029, 9041, 9054, + 9066, 9078, 9090, 9102, + 9114, 9126, 9139, 9151, + 9163, 9175, 9187, 9199, + 9212, 9224, 9236, 9248, + 9261, 9273, 9285, 9298, + 9310, 9322, 9334, 9347, + 9359, 9371, 9384, 9396, + 9409, 9421, 9433, 9446, + 9458, 9471, 9483, 9495, + 9508, 9520, 9533, 9545, + 9558, 9570, 9583, 9595, + 9608, 9620, 9633, 9645, + 9658, 9671, 9683, 9696, + 9708, 9721, 9734, 9746, + 9759, 9772, 9784, 9797, + 9810, 9822, 9835, 9848, + 9860, 9873, 9886, 9899, + 9911, 9924, 9937, 9950, + 9963, 9975, 9988, 10001, + 10014, 10027, 10039, 10052, + 10065, 10078, 10091, 10104, + 10117, 10130, 10143, 10156, + 10169, 10181, 10194, 10207, + 10220, 10233, 10246, 10259, + 10272, 10285, 10299, 10312, + 10325, 10338, 10351, 10364, + 10377, 10390, 10403, 10416, + 10430, 10443, 10456, 10469, + 10482, 10495, 10509, 10522, + 10535, 10548, 10561, 10575, + 10588, 10601, 10615, 10628, + 10641, 10654, 10668, 10681, + 10694, 10708, 10721, 10734, + 10748, 10761, 10775, 10788, + 10801, 10815, 10828, 10842, + 10855, 10869, 10882, 10896, + 10909, 10923, 10936, 10950, + 10963, 10977, 10990, 11004, + 11017, 11031, 11045, 11058, + 11072, 11085, 11099, 11113, + 11126, 11140, 11154, 11167, + 11181, 11195, 11208, 11222, + 11236, 11250, 11263, 11277, + 11291, 11305, 11318, 11332, + 11346, 11360, 11374, 11387, + 11401, 11415, 11429, 11443, + 11457, 11471, 11485, 11498, + 11512, 11526, 11540, 11554, + 11568, 11582, 11596, 11610, + 11624, 11638, 11652, 11666, + 11680, 11694, 11708, 11722, + 11736, 11751, 11765, 11779, + 11793, 11807, 11821, 11835, + 11849, 11864, 11878, 11892, + 11906, 11920, 11935, 11949, + 11963, 11977, 11992, 12006, + 12020, 12034, 12049, 12063, + 12077, 12092, 12106, 12120, + 12135, 12149, 12163, 12178, + 12192, 12207, 12221, 12235, + 12250, 12264, 12279, 12293, + 12308, 12322, 12337, 12351, + 12366, 12380, 12395, 12409, + 12424, 12438, 12453, 12468, + 12482, 12497, 12511, 12526, + 12541, 12555, 12570, 12585, + 12599, 12614, 12629, 12643, + 12658, 12673, 12688, 12702, + 12717, 12732, 12747, 12761, + 12776, 12791, 12806, 12821, + 12835, 12850, 12865, 12880, + 12895, 12910, 12925, 12940, + 12954, 12969, 12984, 12999, + 13014, 13029, 13044, 13059, + 13074, 13089, 13104, 13119, + 13134, 13149, 13164, 13179, + 13194, 13210, 13225, 13240, + 13255, 13270, 13285, 13300, + 13315, 13331, 13346, 13361, + 13376, 13391, 13407, 13422, + 13437, 13452, 13467, 13483, + 13498, 13513, 13529, 13544, + 13559, 13575, 13590, 13605, + 13621, 13636, 13651, 13667, + 13682, 13698, 13713, 13728, + 13744, 13759, 13775, 13790, + 13806, 13821, 13837, 13852, + 13868, 13883, 13899, 13914, + 13930, 13945, 13961, 13977, + 13992, 14008, 14023, 14039, + 14055, 14070, 14086, 14102, + 14117, 14133, 14149, 14164, + 14180, 14196, 14212, 14227, + 14243, 14259, 14275, 14291, + 14306, 14322, 14338, 14354, + 14370, 14385, 14401, 14417, + 14433, 14449, 14465, 14481, + 14497, 14513, 14529, 14545, + 14561, 14577, 14593, 14609, + 14625, 14641, 14657, 14673, + 14689, 14705, 14721, 14737, + 14753, 14769, 14785, 14801, + 14817, 14834, 14850, 14866, + 14882, 14898, 14914, 14931, + 14947, 14963, 14979, 14995, + 15012, 15028, 15044, 15061, + 15077, 15093, 15109, 15126, + 15142, 15158, 15175, 15191, + 15208, 15224, 15240, 15257, + 15273, 15290, 15306, 15323, + 15339, 15355, 15372, 15388, + 15405, 15421, 15438, 15454, + 15471, 15488, 15504, 15521, + 15537, 15554, 15570, 15587, + 15604, 15620, 15637, 15654, + 15670, 15687, 15704, 15720, + 15737, 15754, 15771, 15787, + 15804, 15821, 15838, 15854, + 15871, 15888, 15905, 15922, + 15938, 15955, 15972, 15989, + 16006, 16023, 16040, 16056, + 16073, 16090, 16107, 16124, + 16141, 16158, 16175, 16192, + 16209, 16226, 16243, 16260, + 16277, 16294, 16311, 16328, + 16345, 16363, 16380, 16397, + 16414, 16431, 16448, 16465, + 16482, 16500, 16517, 16534, + 16551, 16568, 16586, 16603, + 16620, 16637, 16655, 16672, + 16689, 16707, 16724, 16741, + 16758, 16776, 16793, 16811, + 16828, 16845, 16863, 16880, + 16898, 16915, 16932, 16950, + 16967, 16985, 17002, 17020, + 17037, 17055, 17072, 17090, + 17107, 17125, 17142, 17160, + 17178, 17195, 17213, 17230, + 17248, 17266, 17283, 17301, + 17319, 17336, 17354, 17372, + 17389, 17407, 17425, 17443, + 17460, 17478, 17496, 17514, + 17531, 17549, 17567, 17585, + 17603, 17621, 17638, 17656, + 17674, 17692, 17710, 17728, + 17746, 17764, 17782, 17800, + 17818, 17836, 17854, 17872, + 17890, 17908, 17926, 17944, + 17962, 17980, 17998, 18016, + 18034, 18052, 18070, 18088, + 18106, 18125, 18143, 18161, + 18179, 18197, 18215, 18234, + 18252, 18270, 18288, 18307, + 18325, 18343, 18361, 18380, + 18398, 18416, 18435, 18453, + 18471, 18490, 18508, 18526, + 18545, 18563, 18582, 18600, + 18618, 18637, 18655, 18674, + 18692, 18711, 18729, 18748, + 18766, 18785, 18803, 18822, + 18840, 18859, 18878, 18896, + 18915, 18933, 18952, 18971, + 18989, 19008, 19027, 19045, + 19064, 19083, 19101, 19120, + 19139, 19157, 19176, 19195, + 19214, 19233, 19251, 19270, + 19289, 19308, 19327, 19345, + 19364, 19383, 19402, 19421, + 19440, 19459, 19478, 19497, + 19516, 19534, 19553, 19572, + 19591, 19610, 19629, 19648, + 19667, 19686, 19706, 19725, + 19744, 19763, 19782, 19801, + 19820, 19839, 19858, 19877, + 19897, 19916, 19935, 19954, + 19973, 19993, 20012, 20031, + 20050, 20070, 20089, 20108, + 20127, 20147, 20166, 20185, + 20205, 20224, 20243, 20263, + 20282, 20301, 20321, 20340, + 20360, 20379, 20398, 20418, + 20437, 20457, 20476, 20496, + 20515, 20535, 20554, 20574, + 20593, 20613, 20633, 20652, + 20672, 20691, 20711, 20731, + 20750, 20770, 20789, 20809, + 20829, 20849, 20868, 20888, + 20908, 20927, 20947, 20967, + 20987, 21006, 21026, 21046, + 21066, 21086, 21105, 21125, + 21145, 21165, 21185, 21205, + 21225, 21245, 21264, 21284, + 21304, 21324, 21344, 21364, + 21384, 21404, 21424, 21444, + 21464, 21484, 21504, 21524, + 21544, 21564, 21585, 21605, + 21625, 21645, 21665, 21685, + 21705, 21725, 21746, 21766, + 21786, 21806, 21826, 21847, + 21867, 21887, 21907, 21928, + 21948, 21968, 21989, 22009, + 22029, 22050, 22070, 22090, + 22111, 22131, 22151, 22172, + 22192, 22213, 22233, 22254, + 22274, 22295, 22315, 22336, + 22356, 22377, 22397, 22418, + 22438, 22459, 22479, 22500, + 22520, 22541, 22562, 22582, + 22603, 22624, 22644, 22665, + 22686, 22706, 22727, 22748, + 22768, 22789, 22810, 22831, + 22851, 22872, 22893, 22914, + 22935, 22955, 22976, 22997, + 23018, 23039, 23060, 23081, + 23102, 23122, 23143, 23164, + 23185, 23206, 23227, 23248, + 23269, 23290, 23311, 23332, + 23353, 23374, 23395, 23416, + 23437, 23459, 23480, 23501, + 23522, 23543, 23564, 23585, + 23606, 23628, 23649, 23670, + 23691, 23712, 23734, 23755, + 23776, 23797, 23819, 23840, + 23861, 23883, 23904, 23925, + 23947, 23968, 23989, 24011, + 24032, 24053, 24075, 24096, + 24118, 24139, 24161, 24182, + 24204, 24225, 24247, 24268, + 24290, 24311, 24333, 24354, + 24376, 24397, 24419, 24441, + 24462, 24484, 24505, 24527, + 24549, 24570, 24592, 24614, + 24635, 24657, 24679, 24701, + 24722, 24744, 24766, 24788, + 24809, 24831, 24853, 24875, + 24897, 24919, 24940, 24962, + 24984, 25006, 25028, 25050, + 25072, 25094, 25116, 25138, + 25160, 25182, 25204, 25226, + 25248, 25270, 25292, 25314, + 25336, 25358, 25380, 25402, + 25424, 25446, 25468, 25490, + 25513, 25535, 25557, 25579, + 25601, 25624, 25646, 25668, + 25690, 25712, 25735, 25757, + 25779, 25802, 25824, 25846, + 25869, 25891, 25913, 25936, + 25958, 25980, 26003, 26025, + 26048, 26070, 26092, 26115, + 26137, 26160, 26182, 26205, + 26227, 26250, 26272, 26295, + 26317, 26340, 26363, 26385, + 26408, 26430, 26453, 26476, + 26498, 26521, 26544, 26566, + 26589, 26612, 26634, 26657, + 26680, 26703, 26725, 26748, + 26771, 26794, 26816, 26839, + 26862, 26885, 26908, 26931, + 26953, 26976, 26999, 27022, + 27045, 27068, 27091, 27114, + 27137, 27160, 27183, 27206, + 27229, 27252, 27275, 27298, + 27321, 27344, 27367, 27390, + 27413, 27436, 27459, 27483, + 27506, 27529, 27552, 27575, + 27598, 27622, 27645, 27668, + 27691, 27714, 27738, 27761, + 27784, 27808, 27831, 27854, + 27878, 27901, 27924, 27948, + 27971, 27994, 28018, 28041, + 28064, 28088, 28111, 28135, + 28158, 28182, 28205, 28229, + 28252, 28276, 28299, 28323, + 28346, 28370, 28393, 28417, + 28441, 28464, 28488, 28512, + 28535, 28559, 28582, 28606, + 28630, 28654, 28677, 28701, + 28725, 28748, 28772, 28796, + 28820, 28844, 28867, 28891, + 28915, 28939, 28963, 28987, + 29010, 29034, 29058, 29082, + 29106, 29130, 29154, 29178, + 29202, 29226, 29250, 29274, + 29298, 29322, 29346, 29370, + 29394, 29418, 29442, 29466, + 29490, 29514, 29538, 29563, + 29587, 29611, 29635, 29659, + 29683, 29708, 29732, 29756, + 29780, 29805, 29829, 29853, + 29877, 29902, 29926, 29950, + 29975, 29999, 30023, 30048, + 30072, 30097, 30121, 30145, + 30170, 30194, 30219, 30243, + 30268, 30292, 30317, 30341, + 30366, 30390, 30415, 30439, + 30464, 30488, 30513, 30537, + 30562, 30587, 30611, 30636, + 30661, 30685, 30710, 30735, + 30759, 30784, 30809, 30834, + 30858, 30883, 30908, 30933, + 30957, 30982, 31007, 31032, + 31057, 31082, 31106, 31131, + 31156, 31181, 31206, 31231, + 31256, 31281, 31306, 31331, + 31356, 31381, 31406, 31431, + 31456, 31481, 31506, 31531, + 31556, 31581, 31606, 31631, + 31656, 31681, 31707, 31732, + 31757, 31782, 31807, 31832, + 31858, 31883, 31908, 31933, + 31959, 31984, 32009, 32034, + 32060, 32085, 32110, 32136, + 32161, 32186, 32212, 32237, + 32263, 32288, 32313, 32339, + 32364, 32390, 32415, 32441, + 32466, 32492, 32517, 32543, + 32568, 32594, 32619, 32645, + 32671, 32696, 32722, 32747, + 32773, 32799, 32824, 32850, + 32876, 32901, 32927, 32953, + 32979, 33004, 33030, 33056, + 33082, 33107, 33133, 33159, + 33185, 33211, 33236, 33262, + 33288, 33314, 33340, 33366, + 33392, 33418, 33444, 33470, + 33495, 33521, 33547, 33573, + 33599, 33625, 33651, 33678, + 33704, 33730, 33756, 33782, + 33808, 33834, 33860, 33886, + 33912, 33939, 33965, 33991, + 34017, 34043, 34070, 34096, + 34122, 34148, 34175, 34201, + 34227, 34253, 34280, 34306, + 34332, 34359, 34385, 34411, + 34438, 34464, 34491, 34517, + 34544, 34570, 34596, 34623, + 34649, 34676, 34702, 34729, + 34755, 34782, 34808, 34835, + 34862, 34888, 34915, 34941, + 34968, 34995, 35021, 35048, + 35075, 35101, 35128, 35155, + 35181, 35208, 35235, 35262, + 35288, 35315, 35342, 35369, + 35396, 35422, 35449, 35476, + 35503, 35530, 35557, 35584, + 35610, 35637, 35664, 35691, + 35718, 35745, 35772, 35799, + 35826, 35853, 35880, 35907, + 35934, 35961, 35988, 36015, + 36042, 36070, 36097, 36124, + 36151, 36178, 36205, 36232, + 36260, 36287, 36314, 36341, + 36369, 36396, 36423, 36450, + 36478, 36505, 36532, 36560, + 36587, 36614, 36642, 36669, + 36696, 36724, 36751, 36779, + 36806, 36833, 36861, 36888, + 36916, 36943, 36971, 36998, + 37026, 37053, 37081, 37108, + 37136, 37164, 37191, 37219, + 37246, 37274, 37302, 37329, + 37357, 37385, 37412, 37440, + 37468, 37496, 37523, 37551, + 37579, 37607, 37634, 37662, + 37690, 37718, 37746, 37773, + 37801, 37829, 37857, 37885, + 37913, 37941, 37969, 37997, + 38025, 38053, 38081, 38108, + 38137, 38165, 38193, 38221, + 38249, 38277, 38305, 38333, + 38361, 38389, 38417, 38445, + 38473, 38502, 38530, 38558, + 38586, 38614, 38643, 38671, + 38699, 38727, 38756, 38784, + 38812, 38840, 38869, 38897, + 38925, 38954, 38982, 39010, + 39039, 39067, 39096, 39124, + 39153, 39181, 39209, 39238, + 39266, 39295, 39323, 39352, + 39380, 39409, 39438, 39466, + 39495, 39523, 39552, 39581, + 39609, 39638, 39666, 39695, + 39724, 39752, 39781, 39810, + 39839, 39867, 39896, 39925, + 39954, 39982, 40011, 40040, + 40069, 40098, 40126, 40155, + 40184, 40213, 40242, 40271, + 40300, 40329, 40358, 40387, + 40416, 40445, 40474, 40503, + 40532, 40561, 40590, 40619, + 40648, 40677, 40706, 40735, + 40764, 40793, 40822, 40852, + 40881, 40910, 40939, 40968, + 40997, 41027, 41056, 41085, + 41114, 41144, 41173, 41202, + 41232, 41261, 41290, 41320, + 41349, 41378, 41408, 41437, + 41466, 41496, 41525, 41555, + 41584, 41614, 41643, 41673, + 41702, 41732, 41761, 41791, + 41820, 41850, 41879, 41909, + 41939, 41968, 41998, 42027, + 42057, 42087, 42116, 42146, + 42176, 42205, 42235, 42265, + 42295, 42324, 42354, 42384, + 42414, 42444, 42473, 42503, + 42533, 42563, 42593, 42623, + 42653, 42682, 42712, 42742, + 42772, 42802, 42832, 42862, + 42892, 42922, 42952, 42982, + 43012, 43042, 43072, 43102, + 43132, 43163, 43193, 43223, + 43253, 43283, 43313, 43343, + 43374, 43404, 43434, 43464, + 43494, 43525, 43555, 43585, + 43616, 43646, 43676, 43706, + 43737, 43767, 43797, 43828, + 43858, 43889, 43919, 43949, + 43980, 44010, 44041, 44071, + 44102, 44132, 44163, 44193, + 44224, 44254, 44285, 44315, + 44346, 44377, 44407, 44438, + 44468, 44499, 44530, 44560, + 44591, 44622, 44652, 44683, + 44714, 44745, 44775, 44806, + 44837, 44868, 44898, 44929, + 44960, 44991, 45022, 45053, + 45084, 45114, 45145, 45176, + 45207, 45238, 45269, 45300, + 45331, 45362, 45393, 45424, + 45455, 45486, 45517, 45548, + 45579, 45610, 45641, 45672, + 45704, 45735, 45766, 45797, + 45828, 45859, 45891, 45922, + 45953, 45984, 46015, 46047, + 46078, 46109, 46141, 46172, + 46203, 46234, 46266, 46297, + 46329, 46360, 46391, 46423, + 46454, 46486, 46517, 46548, + 46580, 46611, 46643, 46674, + 46706, 46737, 46769, 46801, + 46832, 46864, 46895, 46927, + 46959, 46990, 47022, 47053, + 47085, 47117, 47148, 47180, + 47212, 47244, 47275, 47307, + 47339, 47371, 47402, 47434, + 47466, 47498, 47530, 47562, + 47593, 47625, 47657, 47689, + 47721, 47753, 47785, 47817, + 47849, 47881, 47913, 47945, + 47977, 48009, 48041, 48073, + 48105, 48137, 48169, 48201, + 48233, 48265, 48298, 48330, + 48362, 48394, 48426, 48458, + 48491, 48523, 48555, 48587, + 48620, 48652, 48684, 48717, + 48749, 48781, 48814, 48846, + 48878, 48911, 48943, 48975, + 49008, 49040, 49073, 49105, + 49138, 49170, 49203, 49235, + 49268, 49300, 49333, 49365, + 49398, 49430, 49463, 49496, + 49528, 49561, 49593, 49626, + 49659, 49691, 49724, 49757, + 49790, 49822, 49855, 49888, + 49920, 49953, 49986, 50019, + 50052, 50084, 50117, 50150, + 50183, 50216, 50249, 50282, + 50315, 50348, 50381, 50413, + 50446, 50479, 50512, 50545, + 50578, 50611, 50644, 50678, + 50711, 50744, 50777, 50810, + 50843, 50876, 50909, 50942, + 50976, 51009, 51042, 51075, + 51108, 51142, 51175, 51208, + 51241, 51275, 51308, 51341, + 51375, 51408, 51441, 51475, + 51508, 51541, 51575, 51608, + 51642, 51675, 51708, 51742, + 51775, 51809, 51842, 51876, + 51909, 51943, 51976, 52010, + 52044, 52077, 52111, 52144, + 52178, 52212, 52245, 52279, + 52313, 52346, 52380, 52414, + 52447, 52481, 52515, 52549, + 52582, 52616, 52650, 52684, + 52718, 52751, 52785, 52819, + 52853, 52887, 52921, 52955, + 52989, 53023, 53057, 53091, + 53124, 53158, 53192, 53226, + 53261, 53295, 53329, 53363, + 53397, 53431, 53465, 53499, + 53533, 53567, 53601, 53636, + 53670, 53704, 53738, 53772, + 53807, 53841, 53875, 53909, + 53944, 53978, 54012, 54047, + 54081, 54115, 54150, 54184, + 54218, 54253, 54287, 54322, + 54356, 54390, 54425, 54459, + 54494, 54528, 54563, 54597, + 54632, 54667, 54701, 54736, + 54770, 54805, 54839, 54874, + 54909, 54943, 54978, 55013, + 55047, 55082, 55117, 55152, + 55186, 55221, 55256, 55291, + 55325, 55360, 55395, 55430, + 55465, 55499, 55534, 55569, + 55604, 55639, 55674, 55709, + 55744, 55779, 55814, 55849, + 55884, 55919, 55954, 55989, + 56024, 56059, 56094, 56129, + 56164, 56199, 56234, 56269, + 56305, 56340, 56375, 56410, + 56445, 56481, 56516, 56551, + 56586, 56622, 56657, 56692, + 56727, 56763, 56798, 56833, + 56869, 56904, 56939, 56975, + 57010, 57046, 57081, 57117, + 57152, 57187, 57223, 57258, + 57294, 57329, 57365, 57401, + 57436, 57472, 57507, 57543, + 57578, 57614, 57650, 57685, + 57721, 57757, 57792, 57828, + 57864, 57900, 57935, 57971, + 58007, 58043, 58078, 58114, + 58150, 58186, 58222, 58257, + 58293, 58329, 58365, 58401, + 58437, 58473, 58509, 58545, + 58581, 58617, 58653, 58689, + 58725, 58761, 58797, 58833, + 58869, 58905, 58941, 58977, + 59013, 59050, 59086, 59122, + 59158, 59194, 59230, 59267, + 59303, 59339, 59375, 59412, + 59448, 59484, 59520, 59557, + 59593, 59629, 59666, 59702, + 59739, 59775, 59811, 59848, + 59884, 59921, 59957, 59994, + 60030, 60067, 60103, 60140, + 60176, 60213, 60249, 60286, + 60322, 60359, 60396, 60432, + 60469, 60506, 60542, 60579, + 60616, 60652, 60689, 60726, + 60763, 60799, 60836, 60873, + 60910, 60946, 60983, 61020, + 61057, 61094, 61131, 61168, + 61204, 61241, 61278, 61315, + 61352, 61389, 61426, 61463, + 61500, 61537, 61574, 61611, + 61648, 61685, 61722, 61760, + 61797, 61834, 61871, 61908, + 61945, 61982, 62020, 62057, + 62094, 62131, 62168, 62206, + 62243, 62280, 62318, 62355, + 62392, 62430, 62467, 62504, + 62542, 62579, 62616, 62654, + 62691, 62729, 62766, 62804, + 62841, 62878, 62916, 62953, + 62991, 63029, 63066, 63104, + 63141, 63179, 63216, 63254, + 63292, 63329, 63367, 63405, + 63442, 63480, 63518, 63555, + 63593, 63631, 63669, 63706, + 63744, 63782, 63820, 63858, + 63896, 63933, 63971, 64009, + 64047, 64085, 64123, 64161, + 64199, 64237, 64275, 64313, + 64351, 64389, 64427, 64465, + 64503, 64541, 64579, 64617, + 64655, 64693, 64731, 64769, + 64808, 64846, 64884, 64922, + 64960, 64999, 65037, 65075, + 65113, 65152, 65190, 65228, + 65266, 65305, 65343, 65381, + 65420, 65458, 65497, 65535, }; @@ -3184,7 +5170,8 @@ const uint16_t* lookup_table_u16_table[] = { lut_linear_to_exp, lut_left_sin_pan, lut_right_cos_pan, - lut_led_gamma, + lut_led_red_gamma, + lut_led_green_gamma, }; diff --git a/stereo_mix/resources.h b/stereo_mix/resources.h index ceeb8f8..4608879 100644 --- a/stereo_mix/resources.h +++ b/stereo_mix/resources.h @@ -49,15 +49,18 @@ extern const uint8_t* lookup_table_u8_table[]; extern const uint16_t lut_linear_to_exp[]; extern const uint16_t lut_left_sin_pan[]; extern const uint16_t lut_right_cos_pan[]; -extern const uint16_t lut_led_gamma[]; +extern const uint16_t lut_led_red_gamma[]; +extern const uint16_t lut_led_green_gamma[]; #define LUT_LINEAR_TO_EXP 0 #define LUT_LINEAR_TO_EXP_SIZE 4096 #define LUT_LEFT_SIN_PAN 1 #define LUT_LEFT_SIN_PAN_SIZE 4096 #define LUT_RIGHT_COS_PAN 2 #define LUT_RIGHT_COS_PAN_SIZE 4096 -#define LUT_LED_GAMMA 3 -#define LUT_LED_GAMMA_SIZE 256 +#define LUT_LED_RED_GAMMA 3 +#define LUT_LED_RED_GAMMA_SIZE 4096 +#define LUT_LED_GREEN_GAMMA 4 +#define LUT_LED_GREEN_GAMMA_SIZE 4096 } // namespace stereo_mix diff --git a/stereo_mix/resources/lookup_tables.py b/stereo_mix/resources/lookup_tables.py index d7f61c0..b880890 100644 --- a/stereo_mix/resources/lookup_tables.py +++ b/stereo_mix/resources/lookup_tables.py @@ -52,9 +52,12 @@ lookup_tables_u16.append(('right_cos_pan', r_pan)) print(r_pan.size) # led gamma correction -gamma = 2.4 -max_in = 255 -max_out = 255 +gamma_green = 2.4 +gamma_red = 2.8 +max_in = 4095 +max_out = 65535 input_vals = np.linspace(0, max_in, num=max_in + 1) -gamma_correction = ((input_vals / max_in) ** gamma) * max_out + 0.5 -lookup_tables_u16.append(('led_gamma', np.floor(gamma_correction))) +gamma_correction_red = ((input_vals / max_in) ** gamma_red) * max_out + 0.5 +gamma_correction_green = ((input_vals / max_in) ** gamma_green) * max_out + 0.5 +lookup_tables_u16.append(('led_red_gamma', np.floor(gamma_correction_red))) +lookup_tables_u16.append(('led_green_gamma', np.floor(gamma_correction_green))) diff --git a/stereo_mix/stereo_mix.cc b/stereo_mix/stereo_mix.cc index d58862e..d97859f 100644 --- a/stereo_mix/stereo_mix.cc +++ b/stereo_mix/stereo_mix.cc @@ -127,15 +127,16 @@ void Init(void) __HAL_RCC_GPIOB_CLK_ENABLE(); __HAL_RCC_GPIOC_CLK_ENABLE(); __HAL_RCC_GPIOF_CLK_ENABLE(); + __HAL_RCC_TIM1_CLK_ENABLE(); __HAL_RCC_TIM3_CLK_ENABLE(); __HAL_RCC_TIM6_CLK_ENABLE(); __HAL_RCC_SPI1_CLK_ENABLE(); HAL_NVIC_SetPriority(TIM3_IRQn, 0, 0); HAL_NVIC_EnableIRQ(TIM3_IRQn); - htim3.Init.Prescaler = 8; + htim3.Init.Prescaler = 27; htim3.Init.CounterMode = TIM_COUNTERMODE_UP; - htim3.Init.Period = 128; + htim3.Init.Period = 65535 >> 2; htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; htim3.Init.RepetitionCounter = 0; HAL_TIM_Base_Init(&htim3); @@ -177,7 +178,6 @@ int main(void) Init(); ui.Init(); - while (true) { ui.DoEvents(); } diff --git a/stereo_mix/ui.cc b/stereo_mix/ui.cc index 31cc6cc..ec6b3d1 100644 --- a/stereo_mix/ui.cc +++ b/stereo_mix/ui.cc @@ -3,7 +3,7 @@ #include const int kLongPressDuration = 2000; -const int kShowChangedValueMilliseconds = 1000; +const int kShowChangedValueMilliseconds = 600; void UI::Poll() { @@ -99,24 +99,17 @@ void UI::TaskDrawLeds() { for (size_t i = 0; i < kNumChannels; i++) { if (potControllers[i].editing_hidden_parameter()) { - leds->set_intensity(i, abs(volume_att_pots[i] - 32767) << 1); - leds->set_blinking(i, volume_att_pots[i] - 32767 < 0); + leds->set_intensity_signed(i, volume_att_pots[i]); } else if (potControllers[i + kNumChannels].editing_hidden_parameter()) { - leds->set_intensity(i, abs(pan_att_pots[i] - 32767) << 1); - leds->set_blinking(i, pan_att_pots[i] - 32767 < 0); + leds->set_intensity_signed(i, pan_att_pots[i] - 32767); } else { - if (system_clock.milliseconds() - last_vol_pot_touch[i] < kShowChangedValueMilliseconds) { - // show volume - leds->set_intensity(i, volume_pots[i]); - leds->set_blinking(i, false); - } else if (system_clock.milliseconds() - last_pan_pot_touch[i] < kShowChangedValueMilliseconds) { + // TODO: refactor + if (system_clock.milliseconds() - last_pan_pot_touch[i] < kShowChangedValueMilliseconds) { // show panning - leds->set_intensity(i, abs(pan_pots[i] - 32767) << 1); - leds->set_blinking(i, pan_pots[i] - 32767 < 0); + leds->set_intensity_signed(i, pan_pots[i] - 32767); } else { // show volume if not muted - leds->set_intensity(i, processors[i].linear_volume()); - leds->set_blinking(i, false); + leds->set_intensity_unsigned(i, processors[i].linear_volume(), processors[i].is_muted() ? LED_COLOR_RED : LED_COLOR_GREEN); } } }