Skip to content

Commit 327f739

Browse files
committed
Correct Midi Delays
1 parent daa77e7 commit 327f739

File tree

5 files changed

+35
-26
lines changed

5 files changed

+35
-26
lines changed

src/ArdMidiStreamIn.cpp

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,25 @@ namespace stk {
66

77
ArdMidiStreamIn :: ArdMidiStreamIn(Stream &stream, ArdMidiEventHandler &handler) {
88
pStream = &stream;
9+
// without this I was getting a 2 sec delay!
10+
pStream->setTimeout(10);
911
pHandler = &handler;
1012
startPos = 0;
1113
}
1214

1315
void ArdMidiStreamIn :: loop() {
14-
int lenRead = pStream->readBytes(buffer+startPos, BUFFER_LEN-startPos);
15-
if (lenRead>0){
16-
int endPos = startPos+lenRead;
17-
int lastStatusPos = getLastStatusPos(buffer, endPos);
18-
if (lastStatusPos>=0) {
19-
pHandler->parse(buffer, lastStatusPos);
20-
int lenUnprocessed = endPos-lastStatusPos;
21-
// move unprocessed bytes to head
22-
memmove(buffer, buffer+lastStatusPos, lenUnprocessed);
23-
startPos = lenUnprocessed;
16+
if (pStream->available()>0){
17+
int lenRead = pStream->readBytes(buffer+startPos, BUFFER_LEN-startPos);
18+
if (lenRead>0){
19+
int endPos = startPos+lenRead;
20+
int lastStatusPos = getLastStatusPos(buffer, endPos);
21+
if (lastStatusPos>=0) {
22+
pHandler->parse(buffer, lastStatusPos);
23+
int lenUnprocessed = endPos-lastStatusPos;
24+
// move unprocessed bytes to head
25+
memmove(buffer, buffer+lastStatusPos, lenUnprocessed);
26+
startPos = lenUnprocessed;
27+
}
2428
}
2529
}
2630
}

src/Mandolin.cpp

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -45,17 +45,17 @@ Mandolin :: Mandolin( StkFloat lowestFrequency )
4545
}
4646

4747
#ifdef __RAW_ARRAYS__
48-
MemoryFS::registerFile("mand1.raw", mand1_raw, mand1_raw_len);
49-
MemoryFS::registerFile("mand2.raw", mand2_raw, mand2_raw_len);
50-
MemoryFS::registerFile("mand3.raw", mand3_raw, mand3_raw_len);
51-
MemoryFS::registerFile("mand4.raw", mand4_raw, mand4_raw_len);
52-
MemoryFS::registerFile("mand5.raw", mand5_raw, mand5_raw_len);
53-
MemoryFS::registerFile("mand6.raw", mand6_raw, mand6_raw_len);
54-
MemoryFS::registerFile("mand7.raw", mand7_raw, mand7_raw_len);
55-
MemoryFS::registerFile("mand8.raw", mand8_raw, mand8_raw_len);
56-
MemoryFS::registerFile("mand9.raw", mand9_raw, mand9_raw_len);
57-
MemoryFS::registerFile("mand10.raw", mand10_raw, mand10_raw_len);
58-
MemoryFS::registerFile("mand11.raw", mand11_raw, mand11_raw_len);
48+
MemoryFS::registerFile((Stk::rawwavePath() +"mand1.raw").c_str(), mand1_raw, mand1_raw_len);
49+
MemoryFS::registerFile((Stk::rawwavePath() +"mand2.raw").c_str(), mand2_raw, mand2_raw_len);
50+
MemoryFS::registerFile((Stk::rawwavePath() +"mand3.raw").c_str(), mand3_raw, mand3_raw_len);
51+
MemoryFS::registerFile((Stk::rawwavePath() +"mand4.raw").c_str(), mand4_raw, mand4_raw_len);
52+
MemoryFS::registerFile((Stk::rawwavePath() +"mand5.raw").c_str(), mand5_raw, mand5_raw_len);
53+
MemoryFS::registerFile((Stk::rawwavePath() +"mand6.raw").c_str(), mand6_raw, mand6_raw_len);
54+
MemoryFS::registerFile((Stk::rawwavePath() +"mand7.raw").c_str(), mand7_raw, mand7_raw_len);
55+
MemoryFS::registerFile((Stk::rawwavePath() +"mand8.raw").c_str(), mand8_raw, mand8_raw_len);
56+
MemoryFS::registerFile((Stk::rawwavePath() +"mand9.raw").c_str(), mand9_raw, mand9_raw_len);
57+
MemoryFS::registerFile((Stk::rawwavePath() +"mand10.raw").c_str(), mand10_raw, mand10_raw_len);
58+
MemoryFS::registerFile((Stk::rawwavePath() +"mand11.raw").c_str(), mand11_raw, mand11_raw_len);
5959
#endif
6060

6161
// Concatenate the STK rawwave path to the rawwave files

src/Mandolin.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,11 @@ class Mandolin : public Instrmnt
9191
protected:
9292

9393
Twang strings_[2];
94+
#ifdef __RAW_ARRAYS__
95+
MemoryWvIn soundfile_[12];
96+
#else
9497
FileWvIn soundfile_[12];
95-
98+
#endif
9699
int mic_;
97100
StkFloat detuning_;
98101
StkFloat frequency_;

src/MemoryFS.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,17 +93,19 @@ bool MemoryFS :: fileRead( StkFrames& frames, unsigned long startFrame, bool doN
9393
int MemoryFS :: findByName(const char * path){
9494
int result = -1;
9595
if (registry!=NULL && path!=NULL){
96-
for (int fd=0; fd<registry_last_entry; fd++){
96+
for (int fd=0; fd<registry_last_entry-1; fd++){
9797
//ESP_LOGD(APP_VFS, "x%x, matching with %s", __func__, registry[fd].name);
98-
if (strcmp(path, registry[fd].name)==0){
98+
char nameReg[] = registry[fd].name;
99+
if (nameReg!= NULL && strcmp(path,nameReg) == 0){
99100
result = fd;
100101
break;
101102
}
102103
}
103104
}
104-
return result;;
105+
return result;
105106
}
106107

108+
107109
VFS_FD * MemoryFS :: registerFile(const char* name, const unsigned char *raw, unsigned int size){
108110
const char *nameToLog = name==NULL?"":name;
109111
// extend registry if it is not big enough

src/Stk.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ namespace stk {
7878
// following user-definable floating-point type. You
7979
// can change this to "float" if you prefer or perhaps
8080
// a "long double" in the future.
81-
typedef double StkFloat;
81+
typedef float StkFloat;
8282

8383
//! STK error handling class.
8484
/*!

0 commit comments

Comments
 (0)