From 19c427c0ed27028a187c7f58458d8845baf3217a Mon Sep 17 00:00:00 2001 From: Wolfgang Drescher Date: Fri, 13 Dec 2024 10:38:23 +0100 Subject: [PATCH 1/4] Add support for kern like data --- min/humlib.cpp | 12 ++++++------ min/humlib.h | 2 +- src/tool-meter.cpp | 10 +++++----- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/min/humlib.cpp b/min/humlib.cpp index 805ad0e8..5890f10e 100644 --- a/min/humlib.cpp +++ b/min/humlib.cpp @@ -1,7 +1,7 @@ // // Programmer: Craig Stuart Sapp // Creation Date: Sat Aug 8 12:24:49 PDT 2015 -// Last Modified: Fri Nov 22 09:29:17 AM PST 2024 +// Last Modified: Fr 13 Dez 2024 10:28:28 CET // Filename: min/humlib.cpp // URL: https://github.com/craigsapp/humlib/blob/master/min/humlib.cpp // Syntax: C++11 @@ -102717,7 +102717,7 @@ void Tool_meter::printLabelLine(HumdrumLine& line) { bool printLabels = true; for (int i=0; iisKern()) { + if (token->isKernLike()) { i = printKernAndAnalysisSpine(line, i, printLabels, forceInterpretation); } else { m_humdrum_text << "*"; @@ -102740,7 +102740,7 @@ void Tool_meter::printHumdrumLine(HumdrumLine& line, bool printLabels) { for (int i=0; iisKern()) { + if (token->isKernLike()) { i = printKernAndAnalysisSpine(line, i, printLabels); } else { m_humdrum_text << token; @@ -103046,7 +103046,7 @@ void Tool_meter::processLine(HumdrumLine& line, vector& curNum, if (line.isBarline()) { for (int i=0; iisKern()) { + if (!token->isKernLike()) { continue; } if (hre.search(token, "-")) { @@ -103064,7 +103064,7 @@ void Tool_meter::processLine(HumdrumLine& line, vector& curNum, // check for time signatures for (int i=0; iisKern()) { + if (!token->isKernLike()) { continue; } if (hre.search(token, "^\\*M(\\d+)/(\\d+)")) { @@ -103087,7 +103087,7 @@ void Tool_meter::processLine(HumdrumLine& line, vector& curNum, // check for time signatures for (int i=0; iisKern()) { + if (!token->isKernLike()) { continue; } if (token->isNull()) { diff --git a/min/humlib.h b/min/humlib.h index c5cc0cc5..e748262c 100644 --- a/min/humlib.h +++ b/min/humlib.h @@ -1,7 +1,7 @@ // // Programmer: Craig Stuart Sapp // Creation Date: Sat Aug 8 12:24:49 PDT 2015 -// Last Modified: Fri Nov 22 09:29:17 AM PST 2024 +// Last Modified: Fr 13 Dez 2024 10:28:28 CET // Filename: min/humlib.h // URL: https://github.com/craigsapp/humlib/blob/master/min/humlib.h // Syntax: C++11 diff --git a/src/tool-meter.cpp b/src/tool-meter.cpp index 1d677b94..c8f8e78e 100644 --- a/src/tool-meter.cpp +++ b/src/tool-meter.cpp @@ -414,7 +414,7 @@ void Tool_meter::printLabelLine(HumdrumLine& line) { bool printLabels = true; for (int i=0; iisKern()) { + if (token->isKernLike()) { i = printKernAndAnalysisSpine(line, i, printLabels, forceInterpretation); } else { m_humdrum_text << "*"; @@ -437,7 +437,7 @@ void Tool_meter::printHumdrumLine(HumdrumLine& line, bool printLabels) { for (int i=0; iisKern()) { + if (token->isKernLike()) { i = printKernAndAnalysisSpine(line, i, printLabels); } else { m_humdrum_text << token; @@ -743,7 +743,7 @@ void Tool_meter::processLine(HumdrumLine& line, vector& curNum, if (line.isBarline()) { for (int i=0; iisKern()) { + if (!token->isKernLike()) { continue; } if (hre.search(token, "-")) { @@ -761,7 +761,7 @@ void Tool_meter::processLine(HumdrumLine& line, vector& curNum, // check for time signatures for (int i=0; iisKern()) { + if (!token->isKernLike()) { continue; } if (hre.search(token, "^\\*M(\\d+)/(\\d+)")) { @@ -784,7 +784,7 @@ void Tool_meter::processLine(HumdrumLine& line, vector& curNum, // check for time signatures for (int i=0; iisKern()) { + if (!token->isKernLike()) { continue; } if (token->isNull()) { From cb59f79274a142c6deadafabe338ec23d7b702e7 Mon Sep 17 00:00:00 2001 From: Wolfgang Drescher Date: Fri, 13 Dec 2024 10:55:50 +0100 Subject: [PATCH 2/4] Fix wrong tandem interpretation in tsig spine --- min/humlib.cpp | 5 ++++- min/humlib.h | 2 +- src/tool-meter.cpp | 3 +++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/min/humlib.cpp b/min/humlib.cpp index 5890f10e..8201ac28 100644 --- a/min/humlib.cpp +++ b/min/humlib.cpp @@ -1,7 +1,7 @@ // // Programmer: Craig Stuart Sapp // Creation Date: Sat Aug 8 12:24:49 PDT 2015 -// Last Modified: Fr 13 Dez 2024 10:28:28 CET +// Last Modified: Fr 13 Dez 2024 10:53:41 CET // Filename: min/humlib.cpp // URL: https://github.com/craigsapp/humlib/blob/master/min/humlib.cpp // Syntax: C++11 @@ -102914,6 +102914,9 @@ int Tool_meter::printKernAndAnalysisSpine(HumdrumLine& line, int index, bool pri meter = "*-"; } else if (token->isTimeSignature()) { analysis = *token; + numerator = *token; + denominator = *token; + meter = *token; } else { analysis = "*"; numerator = "*"; diff --git a/min/humlib.h b/min/humlib.h index e748262c..640eadae 100644 --- a/min/humlib.h +++ b/min/humlib.h @@ -1,7 +1,7 @@ // // Programmer: Craig Stuart Sapp // Creation Date: Sat Aug 8 12:24:49 PDT 2015 -// Last Modified: Fr 13 Dez 2024 10:28:28 CET +// Last Modified: Fr 13 Dez 2024 10:53:41 CET // Filename: min/humlib.h // URL: https://github.com/craigsapp/humlib/blob/master/min/humlib.h // Syntax: C++11 diff --git a/src/tool-meter.cpp b/src/tool-meter.cpp index c8f8e78e..5faf0cb4 100644 --- a/src/tool-meter.cpp +++ b/src/tool-meter.cpp @@ -611,6 +611,9 @@ int Tool_meter::printKernAndAnalysisSpine(HumdrumLine& line, int index, bool pri meter = "*-"; } else if (token->isTimeSignature()) { analysis = *token; + numerator = *token; + denominator = *token; + meter = *token; } else { analysis = "*"; numerator = "*"; From 6a0b3dafccd1a62bbc349a502b34e739dba1b52b Mon Sep 17 00:00:00 2001 From: Wolfgang Drescher Date: Fri, 13 Dec 2024 22:21:14 +0100 Subject: [PATCH 3/4] Improve pickup analysis in the middle of a piece Marks a measure as a pickup when bardur < tsigdur and barline token contains || or :?|?!|?: --- min/humlib.cpp | 10 +++++++++- min/humlib.h | 2 +- src/tool-meter.cpp | 8 ++++++++ 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/min/humlib.cpp b/min/humlib.cpp index 8201ac28..18b382e2 100644 --- a/min/humlib.cpp +++ b/min/humlib.cpp @@ -1,7 +1,7 @@ // // Programmer: Craig Stuart Sapp // Creation Date: Sat Aug 8 12:24:49 PDT 2015 -// Last Modified: Fr 13 Dez 2024 10:53:41 CET +// Last Modified: Fr 13 Dez 2024 22:20:34 CET // Filename: min/humlib.cpp // URL: https://github.com/craigsapp/humlib/blob/master/min/humlib.cpp // Syntax: C++11 @@ -102571,6 +102571,14 @@ void Tool_meter::analyzePickupMeasures(HTp sstart) { continue; } } + if (bardur.at(i) < tsigdur.at(i)) { + HumRegex hre; + HTp barlineToken = barandtime.at(i).at(0); + if (barlineToken->isBarline() && hre.search(barlineToken, "\\|\\||:?\\|?!\\|?:?")) { + pickup.at(i) = true; + continue; + } + } } // check for first-measure pickup diff --git a/min/humlib.h b/min/humlib.h index 640eadae..4687ca8a 100644 --- a/min/humlib.h +++ b/min/humlib.h @@ -1,7 +1,7 @@ // // Programmer: Craig Stuart Sapp // Creation Date: Sat Aug 8 12:24:49 PDT 2015 -// Last Modified: Fr 13 Dez 2024 10:53:41 CET +// Last Modified: Fr 13 Dez 2024 22:20:34 CET // Filename: min/humlib.h // URL: https://github.com/craigsapp/humlib/blob/master/min/humlib.h // Syntax: C++11 diff --git a/src/tool-meter.cpp b/src/tool-meter.cpp index 5faf0cb4..4ddc7cf1 100644 --- a/src/tool-meter.cpp +++ b/src/tool-meter.cpp @@ -268,6 +268,14 @@ void Tool_meter::analyzePickupMeasures(HTp sstart) { continue; } } + if (bardur.at(i) < tsigdur.at(i)) { + HumRegex hre; + HTp barlineToken = barandtime.at(i).at(0); + if (barlineToken->isBarline() && hre.search(barlineToken, "\\|\\||:?\\|?!\\|?:?")) { + pickup.at(i) = true; + continue; + } + } } // check for first-measure pickup From 4edabb81ff018780d312cde40e58cfea850a1754 Mon Sep 17 00:00:00 2001 From: Wolfgang Drescher Date: Fri, 13 Dec 2024 22:28:47 +0100 Subject: [PATCH 4/4] Get kern like spine start list for pickup measures analysis --- min/humlib.cpp | 4 ++-- min/humlib.h | 2 +- src/tool-meter.cpp | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/min/humlib.cpp b/min/humlib.cpp index 18b382e2..d203be89 100644 --- a/min/humlib.cpp +++ b/min/humlib.cpp @@ -1,7 +1,7 @@ // // Programmer: Craig Stuart Sapp // Creation Date: Sat Aug 8 12:24:49 PDT 2015 -// Last Modified: Fr 13 Dez 2024 22:20:34 CET +// Last Modified: Fr 13 Dez 2024 22:27:49 CET // Filename: min/humlib.cpp // URL: https://github.com/craigsapp/humlib/blob/master/min/humlib.cpp // Syntax: C++11 @@ -102498,7 +102498,7 @@ void Tool_meter::processFile(HumdrumFile& infile) { void Tool_meter::analyzePickupMeasures(HumdrumFile& infile) { vector sstarts; - infile.getKernSpineStartList(sstarts); + infile.getKernLikeSpineStartList(sstarts); for (int i=0; i<(int)sstarts.size(); i++) { analyzePickupMeasures(sstarts[i]); } diff --git a/min/humlib.h b/min/humlib.h index 4687ca8a..cfb4a883 100644 --- a/min/humlib.h +++ b/min/humlib.h @@ -1,7 +1,7 @@ // // Programmer: Craig Stuart Sapp // Creation Date: Sat Aug 8 12:24:49 PDT 2015 -// Last Modified: Fr 13 Dez 2024 22:20:34 CET +// Last Modified: Fr 13 Dez 2024 22:27:49 CET // Filename: min/humlib.h // URL: https://github.com/craigsapp/humlib/blob/master/min/humlib.h // Syntax: C++11 diff --git a/src/tool-meter.cpp b/src/tool-meter.cpp index 4ddc7cf1..918ac875 100644 --- a/src/tool-meter.cpp +++ b/src/tool-meter.cpp @@ -195,7 +195,7 @@ void Tool_meter::processFile(HumdrumFile& infile) { void Tool_meter::analyzePickupMeasures(HumdrumFile& infile) { vector sstarts; - infile.getKernSpineStartList(sstarts); + infile.getKernLikeSpineStartList(sstarts); for (int i=0; i<(int)sstarts.size(); i++) { analyzePickupMeasures(sstarts[i]); }