Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add option to show scale degrees for tokens without attack #105

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion include/tool-deg.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ class Tool_deg : public HumTool {
ScaleDegree (void);
~ScaleDegree ();

void setLinkedKernToken (hum::HTp token, const std::string& mode, int b40tonic, bool unpitched = false);
void setLinkedKernToken (hum::HTp token, const std::string& mode, int b40tonic, bool unpitched = false, bool resolveNull = false);
hum::HTp getLinkedKernToken (void) const;
std::string getDegToken (void) const;

Expand Down Expand Up @@ -250,6 +250,7 @@ class Tool_deg : public HumTool {
bool m_recipQ = false; // used with -r option
bool m_kernQ = false; // used with --kern option
bool m_degTiesQ = false; // used with -t option
bool m_resolveNullQ = false; // used with --resolve-null option
bool m_forceKeyQ = false; // used with -K option

std::string m_defaultKey = ""; // used with --default-key option
Expand Down
12 changes: 7 additions & 5 deletions min/humlib.cpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
//
// Programmer: Craig Stuart Sapp <[email protected]>
// Creation Date: Sat Aug 8 12:24:49 PDT 2015
// Last Modified: Do 21 Nov 2024 21:59:25 CET
// Last Modified: Do 21 Nov 2024 23:37:38 CET
// Filename: min/humlib.cpp
// URL: https://github.com/craigsapp/humlib/blob/master/min/humlib.cpp
// Syntax: C++11
Expand Down Expand Up @@ -74186,6 +74186,7 @@ Tool_deg::Tool_deg(void) {
define("t|ties=b", "include scale degrees for tied notes");
define("s|spine-tracks|spine|spines|track|tracks=s", "process only the specified spines");
define("0|O|z|zero|zeros=b", "show rests as scale degree 0");
define("resolve-null=b", "show scale degrees for tokens without attack");
}


Expand Down Expand Up @@ -74261,6 +74262,7 @@ void Tool_deg::initialize(void) {
m_recipQ = true;
}
m_degTiesQ = getBoolean("ties");
m_resolveNullQ = getBoolean("resolve-null");
Tool_deg::ScaleDegree::setShowOctaves(getBoolean("octave"));

if (getBoolean("spine-tracks")) {
Expand Down Expand Up @@ -75619,7 +75621,7 @@ void Tool_deg::prepareDegSpine(vector<vector<ScaleDegree>>& degspine, HTp kernst
int line = current->getLineIndex();
if (!current->getOwner()->hasSpines()) {
degspine.at(line).resize(1);
degspine.at(line).back().setLinkedKernToken(current, mode, b40tonic, isUnpitched);
degspine.at(line).back().setLinkedKernToken(current, mode, b40tonic, isUnpitched, m_resolveNullQ);
current = current->getNextToken();
continue;
}
Expand All @@ -75642,7 +75644,7 @@ void Tool_deg::prepareDegSpine(vector<vector<ScaleDegree>>& degspine, HTp kernst
break;
}
degspine.at(line).resize((int)degspine.at(line).size() + 1);
degspine.at(line).back().setLinkedKernToken(curr, mode, b40tonic, isUnpitched);
degspine.at(line).back().setLinkedKernToken(curr, mode, b40tonic, isUnpitched, m_resolveNullQ);
curr = curr->getNextFieldToken();
}
current = current->getNextToken();
Expand Down Expand Up @@ -75738,8 +75740,8 @@ Tool_deg::ScaleDegree::~ScaleDegree () {
// Unpitched scale degrees will be output as null data tokens.
//

void Tool_deg::ScaleDegree::setLinkedKernToken(HTp token, const string& mode, int b40tonic, bool unpitched) {
m_linkedKernToken = token;
void Tool_deg::ScaleDegree::setLinkedKernToken(HTp token, const string& mode, int b40tonic, bool unpitched, bool resolveNull) {
m_linkedKernToken = resolveNull ? token->resolveNull() : token;
m_unpitched = unpitched;
if (!unpitched) {
if (mode == "major") {
Expand Down
5 changes: 3 additions & 2 deletions min/humlib.h
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
//
// Programmer: Craig Stuart Sapp <[email protected]>
// Creation Date: Sat Aug 8 12:24:49 PDT 2015
// Last Modified: Do 21 Nov 2024 21:59:25 CET
// Last Modified: Do 21 Nov 2024 23:37:38 CET
// Filename: min/humlib.h
// URL: https://github.com/craigsapp/humlib/blob/master/min/humlib.h
// Syntax: C++11
Expand Down Expand Up @@ -6994,7 +6994,7 @@ class Tool_deg : public HumTool {
ScaleDegree (void);
~ScaleDegree ();

void setLinkedKernToken (hum::HTp token, const std::string& mode, int b40tonic, bool unpitched = false);
void setLinkedKernToken (hum::HTp token, const std::string& mode, int b40tonic, bool unpitched = false, bool resolveNull = false);
hum::HTp getLinkedKernToken (void) const;
std::string getDegToken (void) const;

Expand Down Expand Up @@ -7203,6 +7203,7 @@ class Tool_deg : public HumTool {
bool m_recipQ = false; // used with -r option
bool m_kernQ = false; // used with --kern option
bool m_degTiesQ = false; // used with -t option
bool m_resolveNullQ = false; // used with --resolve-null option
bool m_forceKeyQ = false; // used with -K option

std::string m_defaultKey = ""; // used with --default-key option
Expand Down
10 changes: 6 additions & 4 deletions src/tool-deg.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ Tool_deg::Tool_deg(void) {
define("t|ties=b", "include scale degrees for tied notes");
define("s|spine-tracks|spine|spines|track|tracks=s", "process only the specified spines");
define("0|O|z|zero|zeros=b", "show rests as scale degree 0");
define("resolve-null=b", "show scale degrees for tokens without attack");
}


Expand Down Expand Up @@ -131,6 +132,7 @@ void Tool_deg::initialize(void) {
m_recipQ = true;
}
m_degTiesQ = getBoolean("ties");
m_resolveNullQ = getBoolean("resolve-null");
Tool_deg::ScaleDegree::setShowOctaves(getBoolean("octave"));

if (getBoolean("spine-tracks")) {
Expand Down Expand Up @@ -1489,7 +1491,7 @@ void Tool_deg::prepareDegSpine(vector<vector<ScaleDegree>>& degspine, HTp kernst
int line = current->getLineIndex();
if (!current->getOwner()->hasSpines()) {
degspine.at(line).resize(1);
degspine.at(line).back().setLinkedKernToken(current, mode, b40tonic, isUnpitched);
degspine.at(line).back().setLinkedKernToken(current, mode, b40tonic, isUnpitched, m_resolveNullQ);
current = current->getNextToken();
continue;
}
Expand All @@ -1512,7 +1514,7 @@ void Tool_deg::prepareDegSpine(vector<vector<ScaleDegree>>& degspine, HTp kernst
break;
}
degspine.at(line).resize((int)degspine.at(line).size() + 1);
degspine.at(line).back().setLinkedKernToken(curr, mode, b40tonic, isUnpitched);
degspine.at(line).back().setLinkedKernToken(curr, mode, b40tonic, isUnpitched, m_resolveNullQ);
curr = curr->getNextFieldToken();
}
current = current->getNextToken();
Expand Down Expand Up @@ -1608,8 +1610,8 @@ Tool_deg::ScaleDegree::~ScaleDegree () {
// Unpitched scale degrees will be output as null data tokens.
//

void Tool_deg::ScaleDegree::setLinkedKernToken(HTp token, const string& mode, int b40tonic, bool unpitched) {
m_linkedKernToken = token;
void Tool_deg::ScaleDegree::setLinkedKernToken(HTp token, const string& mode, int b40tonic, bool unpitched, bool resolveNull) {
m_linkedKernToken = resolveNull ? token->resolveNull() : token;
m_unpitched = unpitched;
if (!unpitched) {
if (mode == "major") {
Expand Down