Added some of the algorithm
This commit is contained in:
parent
a41589cb15
commit
5464c22a33
@ -66,7 +66,7 @@ int main() {
|
|||||||
std::cout << R << " " << G << " " << B;
|
std::cout << R << " " << G << " " << B;
|
||||||
std::cout << "\n"<< R << " " << G << " " << B;
|
std::cout << "\n"<< R << " " << G << " " << B;
|
||||||
}
|
}
|
||||||
double Get_RGB::hztospectrun(double hz) {
|
double Get_RGB::hztospectrum(double hz) {
|
||||||
double hbox;
|
double hbox;
|
||||||
hbox = hz;
|
hbox = hz;
|
||||||
for (;hbox > 800;hbox = hbox / 2);
|
for (;hbox > 800;hbox = hbox / 2);
|
||||||
@ -85,4 +85,4 @@ void Get_RGB::spectral_color(double &r, double &g, double &b, double l) // RGB
|
|||||||
else if ((l >= 585.0) && (l < 639.0)) { t = (l - 585.0) / (639.0 - 585.0); g = 0.84 - (0.84*t); }
|
else if ((l >= 585.0) && (l < 639.0)) { t = (l - 585.0) / (639.0 - 585.0); g = 0.84 - (0.84*t); }
|
||||||
if ((l >= 400.0) && (l < 475.0)) { t = (l - 400.0) / (475.0 - 400.0); b = +(2.20*t) - (1.50*t*t); }
|
if ((l >= 400.0) && (l < 475.0)) { t = (l - 400.0) / (475.0 - 400.0); b = +(2.20*t) - (1.50*t*t); }
|
||||||
else if ((l >= 475.0) && (l < 560.0)) { t = (l - 475.0) / (560.0 - 475.0); b = 0.7 - (t)+(0.30*t*t); }
|
else if ((l >= 475.0) && (l < 560.0)) { t = (l - 475.0) / (560.0 - 475.0); b = 0.7 - (t)+(0.30*t*t); }
|
||||||
}
|
}
|
||||||
|
@ -1,2 +1,12 @@
|
|||||||
#
|
##对函数Data类的分析
|
||||||
|
1.函数Data2color根据左声道的音量变化率,决定输出颜色R的值;根据右声道的变化率,决定输出颜色B的值;根据声音的音量,决定输出颜色G的值。(皆为变化率越大,颜色值越大)中途会调用HSV内的函数,对色彩进行增益。
|
||||||
|
##对HSV.hpp内函数的分析
|
||||||
|
1.此类用于实现RGB与HSV的相互转化,以便能通过改变S(饱和度)来调节画面的鲜艳程度。
|
||||||
|
2.函数hsv2rgb用来将hsv值转化回rgb。
|
||||||
|
3.函数rgb2hsv用来将rgb转化到hsv。
|
||||||
|
##对Get_RGB类的分析
|
||||||
|
1.函数fftw3用于将给定区间内的音量时域信号(由“数据部分”读入在若干ms时间内每一时刻的音量响度)通过调用fftw3内的FFTW_MEASURE(调试阶段使用FFTW_ESTIMATE)分解为频域信号,从0到FR的频率每一个频率都对应一个复数,取这个复数的模长为该频率的振幅(假设采样频率为 FR , 采样点数为1024 (NN),那么横坐标第N个点代表的频率 X(N) = (FR / NN) * N)。将这些频率值传递给hzTospectrum。
|
||||||
|
2.函数hztospectrum用于将声音频率信号转化为光的频率信号,传递给spectral_color。方法是每次增加或减少一个八度(增加一个八度为频率值乘以2,减少一个八度为频率值除以2.)该计算方法来源于http://www.flutopedia.com/sound_color.html
|
||||||
|
3.函数spectral_color用于将每一个光的频率值转化为RGB值。公式来源于https://stackoverflow.com/questions/3407942/rgb-values-of-visible-spectrum
|
||||||
|
4.此类虽然更有科学依据,可能更为自然,贴近现实,但由于工程上过于复杂,尚未调试完成,加上对预期结果的存疑,因此暂时搁置使用,将来可能可以成为能在用户界面进行选择使用的一个算法。
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user