From bc9fd387a3af26762ba85f1172775334e82b8060 Mon Sep 17 00:00:00 2001
From: Florent Berthaut <florent.berthaut@univ-lille.fr>
Date: Mon, 3 Apr 2023 16:13:36 +0200
Subject: [PATCH] Added nbaudiotracks as a uniform

---
 src/Reveal.hpp                  |  2 +-
 src/modules/ProjectorModule.cpp |  4 ++++
 src/shaders/render43.fs         | 12 +++++++-----
 3 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/src/Reveal.hpp b/src/Reveal.hpp
index b89a563..f661aa2 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 9eb8a59..2e29751 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 32f3496..1e2acf1 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 {
-- 
GitLab