xiRetimer

fit recorded audio to a tempo
git clone https://git.ce9e.org/xiRetimer.git

commit
89da71bf8e91e72a77fc824f40958680ce947211
parent
2fe28545f89bacd52a4c4db33b3a5c568fdc61eb
Author
xi <tobias.bengfort@gmx.net>
Date
2010-11-01 16:54
clean

Diffstat

A src/curve.cpp 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
A src/curve.h 47 +++++++++++++++++++++++++++++++++++++++++++++++

2 files changed, 101 insertions, 0 deletions


diff --git a/src/curve.cpp b/src/curve.cpp

@@ -0,0 +1,54 @@
   -1     1 #include "curve.h"
   -1     2 
   -1     3 #include <cmath>
   -1     4 
   -1     5 Curve::Curve() {
   -1     6   marker=new Marker();
   -1     7   sample=new Sample(marker);
   -1     8   seeker=0;
   -1     9   tempo=90;
   -1    10 }
   -1    11 
   -1    12 Curve::~Curve() {
   -1    13   delete[] sample;
   -1    14   delete[] marker;
   -1    15 }
   -1    16 
   -1    17 float Curve::get(float nn) {
   -1    18   // TODO interpolation?
   -1    19   return sample->get(nn);
   -1    20 }
   -1    21 
   -1    22 float Curve::getSeeker() {return seeker;}
   -1    23 void Curve::setSeeker(float nn) {
   -1    24   if (nn>=0 && nn<=1) seeker=nn;
   -1    25 }
   -1    26 
   -1    27 void Curve::setTempo(int bpm) {tempo=bpm;}
   -1    28 int Curve::getTempo() {return tempo;}
   -1    29 
   -1    30 // TODO select and move marker
   -1    31 void Curve::addMarker() {
   -1    32   float n=marker->nnew2new(seeker);
   -1    33   marker->add(marker->new2old(n),n);
   -1    34 }
   -1    35 
   -1    36 void Curve::removeMarker() {
   -1    37   int i=marker->getAreaNew(marker->nnew2new(seeker));
   -1    38   marker->remove(i);
   -1    39 }
   -1    40 
   -1    41 int Curve::getMarkerLength() {return marker->getLength();}
   -1    42 float Curve::getMarker(int i) {return marker->new2nnew(marker->getNew(i));}
   -1    43 
   -1    44 void Curve::print() {
   -1    45   for (int i=0; i<100; ++i) { // 100 or any number 
   -1    46     for (float j=-1; j<get(i); j+=0.1)
   -1    47       std::cout << "+";
   -1    48     if (std::abs(getSeeker()-i)<0.01)
   -1    49       std::cout << " *";
   -1    50     std::cout << std::endl;
   -1    51   }
   -1    52 }
   -1    53 
   -1    54 

diff --git a/src/curve.h b/src/curve.h

@@ -0,0 +1,47 @@
   -1     1 #ifndef __XICURVE_H
   -1     2 #define __XICURVE_H
   -1     3 
   -1     4 #include <iostream>
   -1     5 #include "sample.h"
   -1     6 
   -1     7 // main part of the gui
   -1     8 // layer between screen and backend. Converts everything to screen (0-1) values
   -1     9 class Curve {
   -1    10 public:
   -1    11   Curve(); 
   -1    12   ~Curve();
   -1    13   float getSeeker();
   -1    14   void setSeeker(float nn);
   -1    15   void setTempo(int bpm);
   -1    16   int getTempo();
   -1    17   void print();
   -1    18   // direct access to sample
   -1    19   Sample* sample;
   -1    20   // indirect access to sample
   -1    21   float get(float nn);
   -1    22   // indirect access to marker
   -1    23   void addMarker();
   -1    24   void removeMarker();
   -1    25   int getMarkerLength();
   -1    26   float getMarker(int i);
   -1    27 private:
   -1    28   float seeker; // 0-1
   -1    29   Marker* marker;
   -1    30   int tempo; // bpm
   -1    31 };
   -1    32 
   -1    33 /*
   -1    34 int main() {
   -1    35   Marker* m=new Marker();
   -1    36   Sample* s=new Sample(m);
   -1    37   m->add(0.5,0.3);
   -1    38   int error;
   -1    39   error=s->loadFile("../../test.wav");
   -1    40   
   -1    41   Curve c(s);
   -1    42   c.setScreenWidth(100);
   -1    43   c.print();
   -1    44 }
   -1    45 */
   -1    46 
   -1    47 #endif