diff --git a/src/Reveal.hpp b/src/Reveal.hpp index b89a56362627bc0eed68385e5c2609e6f0cc3f6f..f661aa26b75ee7ef93f1ccc1ce98e5f1bff6e783 100644 --- a/src/Reveal.hpp +++ b/src/Reveal.hpp @@ -79,7 +79,7 @@ class Reveal : public GroupModule { POSTFILTER, RENDERTEX, AUDIOTEX, AUDIORATE, MAXAUDIOVALUE, AUDIOBUFSIZE, AUDIOMIXSIZE, - PROCESSAUDIO, AUDIONEXTBUF + PROCESSAUDIO, AUDIONEXTBUF, AUDIONBTRACKS }; enum GEOM_ID { diff --git a/src/modules/ProjectorModule.cpp b/src/modules/ProjectorModule.cpp index 9eb8a592dd8c9b652b498026440915c94a7ebdb4..2e2975153f3ff641c867beea7f4a7ab6f6241439 100644 --- a/src/modules/ProjectorModule.cpp +++ b/src/modules/ProjectorModule.cpp @@ -358,6 +358,8 @@ void ProjectorModule::draw() { m_audioMixSize); glUniform1i(m_uniforms[Reveal::RENDERPROG][Reveal::AUDIONEXTBUF], m_audioNextBuf); + glUniform1i(m_uniforms[Reveal::RENDERPROG][Reveal::AUDIONBTRACKS], + m_nbTracks); #endif //Draw everything @@ -592,6 +594,8 @@ void ProjectorModule::initGL() { = glGetUniformLocation(m_programs[Reveal::RENDERPROG], "audioRate"); m_uniforms[Reveal::RENDERPROG][Reveal::AUDIONEXTBUF] = glGetUniformLocation(m_programs[Reveal::RENDERPROG], "audioNextBuf"); + m_uniforms[Reveal::RENDERPROG][Reveal::AUDIONBTRACKS] + = glGetUniformLocation(m_programs[Reveal::RENDERPROG], "audioNbTracks"); m_uniforms[Reveal::RENDERPROG][Reveal::OUTPUTTEX] = glGetUniformLocation(m_programs[Reveal::RENDERPROG], "outputTex"); diff --git a/src/shaders/render43.fs b/src/shaders/render43.fs index 32f34966897b7fe207295615f3f05049ca388590..1e2acf1e08fa4096b960115dc02880bb432f48d8 100644 --- a/src/shaders/render43.fs +++ b/src/shaders/render43.fs @@ -29,6 +29,7 @@ uniform float maxAudioValue; uniform int audioRate; uniform int processAudio; uniform int audioNextBuf; +uniform int audioNbTracks; uniform float viewportWidth; uniform float viewportHeight; @@ -111,9 +112,9 @@ out vec4 color; void additiveSynth(vec4 color) { - int nbTracks=3000; - float note = 20.0 + floor(color.x * float(nbTracks))/float(nbTracks)*80.0; - int ind = int(color.x*float(nbTracks)); + float note = 20.0 + + floor(color.x * float(audioNbTracks))/float(audioNbTracks)*80.0; + int ind = int(color.x*float(audioNbTracks)); float freq=0.0; //count this fragment @@ -553,14 +554,15 @@ void main(void) { if(rendered>0 && length(finalColor)>0) { if(revSize>0) { - imageAtomicOr(outputTex, ivec2(mod(outOffset,outCols), floor((outOffset))/outCols), rendered); + imageAtomicOr(outputTex, ivec2(mod(outOffset,outCols), + floor((outOffset))/outCols), rendered); } if((insideVisible>0 && rendered==1) || (surface>0 && rendered==2)) { color = vec4(finalColor, 1.0); - if(processAudio>0) { additiveSynth(color); + //pitchedAdditiveSynth(color); } } else {