#  设计内容（算法部分）
---
##对函数Data类的分析
1.函数Data2color根据左声道的音量变化率，决定输出颜色R的值；根据右声道的变化率，决定输出颜色B的值；根据声音的音量，决定输出颜色G的值。（皆为变化率越大，颜色值越大）中途会调用HSV内的函数，对色彩进行增益。

##对HSV.hpp，HSV.cpp内函数的分析
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.此类虽然更有科学依据，可能更为自然，贴近现实，但由于工程上过于复杂，尚未调试完成，加上对预期结果的存疑，因此暂时搁置使用，将来可能可以成为能在用户界面进行选择使用的一个算法。