]> git.treefish.org Git - seamulator.git/commitdiff
Play note on velocity sign change noise
authorAlexander Schmidt <alex@treefish.org>
Sat, 28 Oct 2023 14:30:15 +0000 (16:30 +0200)
committerAlexander Schmidt <alex@treefish.org>
Sat, 28 Oct 2023 14:30:15 +0000 (16:30 +0200)
include/dot.h
src/dot.cpp
src/synthesizer.cpp

index 4e086bdc6e77678547bd56bd734264cbdd480f22..622c2f79731b06503df9d68baacb1bc082c2cbc7 100644 (file)
@@ -31,5 +31,6 @@ private:
     double m_pos = 0.0;
     double m_vel = 0.0;
     double m_maxAbsVel = 0.0;
+    double m_maxAbsIntVel = 0.0;
 
 };
index aa4a56352bf3bbe2ddd34447f211f51c272d9828..6ff5bf1942d5130f0446706150ab17ff63a1067a 100644 (file)
@@ -15,21 +15,28 @@ void Dot::advance(double deltaT)
     //deltaT *= 10;
     
     auto posBefore = m_pos;
+    auto velBefore = m_vel;
 
     m_vel += -std::pow(m_frequency/440.0, 2.0) * 10.0 * ( m_pos - m_point.getHeight() ) * deltaT;
     m_vel -= m_vel * 0.01 * deltaT;
     m_pos += m_vel * deltaT;
 
     const auto absVel = std::fabs(m_vel);
+    m_maxAbsIntVel = std::max(m_maxAbsIntVel, absVel);
     m_maxAbsVel = std::max(absVel, m_maxAbsVel);
 
     //std::cout << m_pos << std::endl;
-    
-    if (posBefore * m_pos < 0.0) {
-// //        std::cout << m_vel / m_maxVel << std::endl;
-        m_noise.noteOn(m_pos >= 0 ? m_frequency : m_frequency, absVel / m_maxAbsVel);
-//         //m_noise.pluck(absVel / m_maxAbsVel);
-//         m_noise.controlChange(4, 1.0 * absVel / m_maxAbsVel);
+
+//     if (posBefore * m_pos < 0.0) {
+// // //        std::cout << m_vel / m_maxVel << std::endl;
+//          m_noise.noteOn(m_pos >= 0 ? m_frequency : m_frequency, absVel / m_maxAbsVel);
+//          // m_noise.pluck(absVel / m_maxAbsVel);
+// //         m_noise.controlChange(4, 1.0 * absVel / m_maxAbsVel);
+//     }
+
+    if (m_vel * velBefore < 0.0) {
+        m_noise.noteOn(m_frequency, m_maxAbsIntVel/m_maxAbsVel);
+        m_maxAbsIntVel = 0.0;
     }
 
 //    m_noise.controlChange(128, 128.0 * absVel / m_maxAbsVel);
index 8352e7a692dcb17c716187dd9a8b3ddf571eb028..fb920ae465de765185cc049b5aeb811038db8787 100644 (file)
@@ -42,7 +42,7 @@ Synthesizer::Synthesizer(ConstWaterSurfacePtr surface) :
     m_startTime{std::chrono::system_clock::now()},
     m_lastRuntime{getRuntime()}
 {
-    stk::Stk::setSampleRate( 44100.0 );
+    stk::Stk::setSampleRate( 48000.0 );
     stk::Stk::showWarnings( true );
 
     m_dac = std::make_unique<stk::RtWvOut>(2);