protected override RGBValue my_callback(RGBValue rgb_template, byte[] specArray, int min_slider, int max_slider, int min_trigger) { byte[] rgb = new byte[colors]; // Now convert these 16 lines (from 0 to 255) to 3 RGB-Colours (from 0 to 255) byte right = (byte)(max_slider + 1); byte left = (byte)min_slider; byte stepsPerColor = (byte)((right - left) / 3); for (byte rgbIndex = 0; rgbIndex < colors; rgbIndex++) { for (int i = left + (stepsPerColor * rgbIndex); i < left + (stepsPerColor * rgbIndex) + stepsPerColor; i++) { // Only take values that are higher than that value given by the vertical slider if (specArray[i] > min_trigger) { rgb[rgbIndex] += specArray[i]; } } rgb[rgbIndex] = (byte)(rgb[rgbIndex] / stepsPerColor); // Calculate Average } rgb_template.SetArray(rgb); return(rgb_template); }
protected override RGBValue my_callback(RGBValue rgb_template, byte[] specArray, int min_slider, int max_slider, int min_trigger) { bool with_avg = true; byte right_max = (byte)(max_slider + 1); byte left_max = (byte)min_slider; int diff = (right_max - left_max) / colors; byte peak_volume; // TODO slider too much to the right -> exception byte[] rgb = new byte[colors]; int left; int right; for (int i = 0; i < colors; i++) { left = left_max + (diff * i); right = left_max + (diff * (i + 1)); int maximumIndex = get_maximum_peak_index_range(left, right, specArray); if (with_avg) { // To avoid OutOfBounds if (maximumIndex <= left) { maximumIndex += 1; } else if (maximumIndex >= right) { maximumIndex -= 1; } // TODO maybe too much casting right now peak_volume = (byte)((int)((int)specArray[maximumIndex - 1] + (int)specArray[maximumIndex] + (int)specArray[maximumIndex + 1]) / 3); } else { peak_volume = specArray[maximumIndex]; } if (peak_volume < min_slider) { peak_volume = 0; } rgb[i] = peak_volume; } rgb_template.SetArray(rgb); return(rgb_template); }
protected override RGBValue my_callback(RGBValue rgb_template, byte[] specArray, int min_slider, int max_slider, int min_trigger) { byte[] rgb = new byte[colors]; // Now convert these lines (from 0 to 255) to 3 RGB-Colours (from 0 to 255) int right = ((int)max_slider) + 1; int left = (int)min_slider; int rCount = 0, gCount = 0, bCount = 0; for (int i = left; i < right; i++) { if (i < 5) { rgb[0] += specArray[i]; rCount++; } else if (i < 10) { rgb[1] += specArray[i]; gCount++; } else { rgb[2] += specArray[i]; bCount++; } } if (rCount != 0) { rgb[0] = (byte)(rgb[0] / rCount); } if (gCount != 0) { rgb[1] = (byte)(rgb[1] / gCount); } if (bCount != 0) { rgb[2] = (byte)(rgb[2] / bCount); } rgb_template.SetArray(rgb); return(rgb_template); }
protected override RGBValue my_callback(RGBValue rgb_template, byte[] specArray, int min_slider, int max_slider, int min_trigger) { byte right_max = (byte)(max_slider + 1); byte left_max = (byte)min_slider; int diff = 5; // Slidermax / colours ; TODO change in code! // (right_max - left_max) / colors; byte peak_volume; byte[] rgb = new byte[colors]; int left, search_left; int right, search_right; for (int i = 0; i < colors; i++) { left = left_max + (diff * i); right = left_max + (diff * (i + 1)); if (left < left_max) { search_left = left_max; } else { search_left = left; } if (right > right_max) { search_right = right_max; } else { search_right = right; } int maximumIndex = get_maximum_peak_index_range(search_left, search_right, specArray); if (maximumIndex < left || maximumIndex > right) { rgb[i] = 0; } if (with_avg) { // To avoid OutOfBounds if (maximumIndex <= left) { maximumIndex += 1; } else if (maximumIndex >= right) { maximumIndex -= 1; } // TODO maybe too much casting right now peak_volume = (byte)((int)((int)specArray[maximumIndex - 1] + (int)specArray[maximumIndex] + (int)specArray[maximumIndex + 1]) / 3); } else { peak_volume = specArray[maximumIndex]; } if (peak_volume < min_trigger) { peak_volume = 0; } rgb[i] = peak_volume; } rgb_template.SetArray(rgb); return(rgb_template); }