FIXED!!!!!!!!!!!! no more chewed off triangle!
finally I can move on!
This commit is contained in:
tildearrow 2025-04-28 04:13:26 -05:00
parent 083dd4885b
commit c4852a7104

View file

@ -443,7 +443,7 @@ struct DivDispatchOscBuffer {
unsigned int needle; unsigned int needle;
unsigned short readNeedle; unsigned short readNeedle;
//unsigned short lastSample; //unsigned short lastSample;
bool follow; bool follow, mustNotKillNeedle;
short data[65536]; short data[65536];
inline void putSample(const size_t pos, const short val) { inline void putSample(const size_t pos, const short val) {
@ -470,6 +470,11 @@ struct DivDispatchOscBuffer {
unsigned short start=needle>>16; unsigned short start=needle>>16;
unsigned short end=(needle+calc)>>16; unsigned short end=(needle+calc)>>16;
if (mustNotKillNeedle && start!=end) {
start++;
end++;
}
//logD("C %d %d %d",len,calc,rate); //logD("C %d %d %d",len,calc,rate);
if (end<start) { if (end<start) {
@ -485,12 +490,14 @@ struct DivDispatchOscBuffer {
inline void end(size_t len) { inline void end(size_t len) {
size_t calc=len*rateMul; size_t calc=len*rateMul;
needle+=calc; needle+=calc;
mustNotKillNeedle=needle&0xffff;//(data[needle>>16]!=-1);
//data[needle>>16]=lastSample; //data[needle>>16]=lastSample;
} }
void reset() { void reset() {
memset(data,-1,65536*sizeof(short)); memset(data,-1,65536*sizeof(short));
needle=0; needle=0;
readNeedle=0; readNeedle=0;
mustNotKillNeedle=false;
//lastSample=0; //lastSample=0;
} }
void setRate(unsigned int r) { void setRate(unsigned int r) {
@ -505,7 +512,8 @@ struct DivDispatchOscBuffer {
needle(0), needle(0),
readNeedle(0), readNeedle(0),
//lastSample(0), //lastSample(0),
follow(true) { follow(true),
mustNotKillNeedle(false) {
memset(data,-1,65536*sizeof(short)); memset(data,-1,65536*sizeof(short));
} }
}; };