-
-
Notifications
You must be signed in to change notification settings - Fork 6
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added Perlin mode, fixed standby mirror mode bug
- Loading branch information
1 parent
634b7ed
commit 09a0ea0
Showing
9 changed files
with
224 additions
and
20 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,14 +0,0 @@ | ||
[ | ||
{ | ||
"type": "8CH_MOSFET_REV_C", | ||
"version": "1.2.0", | ||
"url": "https://raw.githubusercontent.com/hoeken/yarrboard/main/firmware/releases/8CH_MOSFET_REV_C-1.2.0.bin", | ||
"changelog": "## Version 1.1.1\n\n* Minor ui improvements for debugging\n\n## Version 1.1.0\n\n* New crash handler and coredump recording.\n\n## Version 1.0.1\n\n* Better release automation.\n\n## Version 1.0.0\n\n* First 'official' release into the wild." | ||
}, | ||
{ | ||
"type": "RGB_INPUT_REV_B", | ||
"version": "1.2.0", | ||
"url": "https://raw.githubusercontent.com/hoeken/yarrboard/main/firmware/releases/RGB_INPUT_REV_B-1.2.0.bin", | ||
"changelog": "## Version 1.1.1\n\n* Minor ui improvements for debugging\n\n## Version 1.1.0\n\n* New crash handler and coredump recording.\n\n## Version 1.0.1\n\n* Better release automation.\n\n## Version 1.0.0\n\n* First 'official' release into the wild." | ||
} | ||
] | ||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,85 @@ | ||
# 1 "C:\\Users\\conno\\AppData\\Local\\Temp\\tmpad0q33mk" | ||
#include <Arduino.h> | ||
# 1 "C:/Users/conno/Emotiscope/src/EMOTISCOPE_FIRMWARE.ino" | ||
# 55 "C:/Users/conno/Emotiscope/src/EMOTISCOPE_FIRMWARE.ino" | ||
#define SOFTWARE_VERSION_MAJOR ( 1 ) | ||
#define SOFTWARE_VERSION_MINOR ( 1 ) | ||
#define SOFTWARE_VERSION_PATCH ( 0 ) | ||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
#include <PsychicHttp.h> | ||
#include <HTTPClient.h> | ||
#include <ESPmDNS.h> | ||
#include <Ticker.h> | ||
#include <DNSServer.h> | ||
#include <Preferences.h> | ||
#include <Update.h> | ||
#include <WiFi.h> | ||
#include <esp_dsp.h> | ||
#include <esp_wifi.h> | ||
|
||
|
||
#include "global_defines.h" | ||
#include "hardware_version.h" | ||
#include "types.h" | ||
#include "profiler.h" | ||
#include "sliders.h" | ||
#include "toggles.h" | ||
#include "menu_toggles.h" | ||
#include "menu_dropdowns.h" | ||
#include "filesystem.h" | ||
#include "configuration.h" | ||
#include "utilities.h" | ||
#include "system.h" | ||
#include "led_driver.h" | ||
#include "perlin.h" | ||
#include "leds.h" | ||
#include "touch.h" | ||
#include "indicator.h" | ||
#include "ui.h" | ||
#include "microphone.h" | ||
#include "vu.h" | ||
#include "goertzel.h" | ||
#include "tempo.h" | ||
#include "audio_debug.h" | ||
#include "screensaver.h" | ||
#include "standby.h" | ||
#include "light_modes.h" | ||
#include "commands.h" | ||
#include "wireless.h" | ||
#include "ota.h" | ||
|
||
|
||
#include "cpu_core.h" | ||
#include "gpu_core.h" | ||
#include "web_core.h" | ||
# 120 "C:/Users/conno/Emotiscope/src/EMOTISCOPE_FIRMWARE.ino" | ||
void loop(); | ||
void loop_gpu(void *param); | ||
void setup(); | ||
#line 120 "C:/Users/conno/Emotiscope/src/EMOTISCOPE_FIRMWARE.ino" | ||
void loop() { | ||
run_cpu(); | ||
run_web(); | ||
} | ||
|
||
|
||
void loop_gpu(void *param) { | ||
for (;;) { | ||
run_gpu(); | ||
} | ||
} | ||
|
||
|
||
void setup() { | ||
|
||
init_system(); | ||
|
||
|
||
(void)xTaskCreatePinnedToCore(loop_gpu, "loop_gpu", 4096, NULL, 0, NULL, 0); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
void draw_perlin(){ | ||
static float perlin_image_hue[NUM_LEDS]; | ||
static float perlin_image_lum[NUM_LEDS]; | ||
|
||
static double x = 0.00; | ||
static double y = 0.00; | ||
|
||
static float momentum = 0.0; | ||
|
||
float push = vu_level*vu_level*vu_level*vu_level*configuration.speed*0.1f; | ||
|
||
momentum *= 0.99; | ||
|
||
momentum = max(momentum, push); | ||
|
||
static float angle = 0.0; | ||
angle += 0.001; | ||
float sine = sin(angle); | ||
|
||
x += 0.01*sine; | ||
|
||
y += 0.0001; | ||
y += momentum; | ||
|
||
fill_array_with_perlin(perlin_image_hue, NUM_LEDS, (float)x, (float)y, 0.025f); | ||
fill_array_with_perlin(perlin_image_lum, NUM_LEDS, (float)x+100, (float)y+50, 0.0125f); | ||
|
||
// Crazy SIMD functions scaling perlin_image_lum from 0.0 - 1.0 range to 0.1 - 1.0 range | ||
float* ptr = (float*)perlin_image_lum; | ||
dsps_mulc_f32_ae32(ptr, ptr, NUM_LEDS, 0.98, 1, 1); | ||
dsps_addc_f32_ae32(ptr, ptr, NUM_LEDS, 0.02, 1, 1); | ||
|
||
if(configuration.mirror_mode == false){ | ||
for(uint16_t i = 0; i < NUM_LEDS; i++){ | ||
CRGBF color = hsv( | ||
get_color_range_hue(perlin_image_hue[i]), | ||
configuration.saturation, | ||
perlin_image_lum[i]*perlin_image_lum[i] | ||
); | ||
|
||
leds[i] = color; | ||
} | ||
} | ||
else{ | ||
for(uint16_t i = 0; i < NUM_LEDS>>1; i++){ | ||
CRGBF color = hsv( | ||
get_color_range_hue(perlin_image_hue[i<<1]), | ||
configuration.saturation, | ||
perlin_image_lum[i<<1]*perlin_image_lum[i<<1] | ||
); | ||
|
||
leds[i] = color; | ||
leds[NUM_LEDS - 1 - i] = color; | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
#include <stdint.h> | ||
#include <math.h> | ||
#include <stdio.h> // For debug output | ||
|
||
// Doubled permutation to avoid overflow | ||
static const int permutation[] = {151, 160, 137, 91, 90, 15, 131, 13, 201, 95, 96, 53, 194, 233, 7, 225, 140, 36, 103, 30, 69, 142, | ||
8, 99, 37, 240, 21, 10, 23, 190, 6, 148, 247, 120, 234, 75, 0, 26, 197, 62, 94, 252, 219, 203, 117, 35, 11, 32, 57, 177, 33, 88, 237, 149, 56, 87, 174, 20, 125, 136, 171, 168, 68, 175, 74, 165, 71, 134, 139, 48, 27, 166, 77, 146, 158, 231, 83, 111, 229, 122, 60, 211, 133, 230, 220, 105, 92, 41, 55, 46, 245, 40, 244, 102, 143, 54, 65, 25, 63, 161, 1, 216, 80, 73, 209, 76, 132, 187, 208, 89, 18, 169, 200, 196, 135, 130, 116, 188, 159, 86, 164, 100, 109, 198, 173, 186, 3, 64, 52, 217, 226, 250, 124, 123, 5, 202, 38, 147, 118, 126, 255, 82, 85, 212, 207, 206, 59, 227, 47, 16, 58, 17, 182, 189, 28, 42, 223, 183, 170, 213, 119, 248, 152, 2, 44, 154, 163, 70, 221, 153, 101, 155, 167, 43, 172, 9, 129, 22, 39, 253, 19, 98, 108, 110, 79, 113, 224, 232, 178, 185, 112, 104, 218, 246, 97, 228, 251, 34, 242, 193, 238, 210, 144, 12, 191, 179, 162, 241, 81, 51, 145, 235, 249, 14, 239, 107, 49, 192, 214, 31, 181, 199, 106, 157, 184, 84, 204, 176, 115, 121, 50, 45, 127, 4, 150, 254, 138, 236, 205, 93, 222, 114, 67, 29, 24, 72, 243, 141, 128, 195, 78, 66, 215, 61, 156, 180}; | ||
|
||
static int p[512]; // Doubled permutation to avoid overflow | ||
|
||
// Helper functions | ||
static float fade(float t) { | ||
return t * t * t * (t * (t * 6.0f - 15.0f) + 10.0f); | ||
} | ||
|
||
static float plerp(float t, float a, float b) { | ||
return a + t * (b - a); | ||
} | ||
|
||
static float grad(int hash, float x, float y, float z) { | ||
int h = hash & 15; | ||
float u = h < 8 ? x : y; | ||
float v = h < 4 ? y : h == 12 || h == 14 ? x : z; | ||
return ((h & 1) == 0 ? u : -u) + ((h & 2) == 0 ? v : -v); | ||
} | ||
|
||
// Fill array with Perlin noise | ||
void fill_array_with_perlin(float *array, uint16_t array_length, float x, float y, float scale) { | ||
// Initialize the permutation array if not already done | ||
static int initialized = 0; | ||
if (!initialized) { | ||
for (int i = 0; i < 256; i++) { | ||
p[256 + i] = p[i] = permutation[i]; | ||
} | ||
initialized = 1; | ||
} | ||
|
||
for (uint16_t i = 0; i < array_length; i++) { | ||
float nx = x + i * scale; | ||
float fx = floorf(nx); | ||
float fy = floorf(y); | ||
int X = (int)fx & 255; | ||
int Y = (int)fy & 255; | ||
nx -= fx; | ||
float ny = y - fy; | ||
|
||
float u = fade(nx); | ||
float v = fade(ny); | ||
|
||
int A = p[X] + Y; | ||
int AA = p[A]; | ||
int AB = p[A + 1]; | ||
int B = p[X + 1] + Y; | ||
int BA = p[B]; | ||
int BB = p[B + 1]; | ||
|
||
float noise_value = plerp(v, plerp(u, grad(p[AA], nx, ny, 0.0f), | ||
grad(p[BA], nx - 1.0f, ny, 0.0f)), | ||
plerp(u, grad(p[AB], nx, ny - 1.0f, 0.0f), | ||
grad(p[BB], nx - 1.0f, ny - 1.0f, 0.0f))); | ||
array[i] = (noise_value + 1.0f) * 0.5f; // Scale to range [0.0, 1.0] | ||
//array[i] = powf(array[i], 2.0f); // Square the value to make it more likely to be close to 0 or 1 | ||
|
||
// Debug output | ||
//printf("array[%d] = %f\n", i, array[i]); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters