Done
Administrivia
- Booked trip to ISMIR 2018 in Paris.
Model Building
- Finailized "Corrected Parncutt" implementation for everything by cyclic patterns.
- Confirmed inconsistencies in published Parncutt results:
- Small-Span and Large-Span penalties are conflated.
- Small-Span penalty definition is inconsistent.
- Position-Change-Count and Position-Change-Size penalties are incorrect.
- Penalty totals are incorrect.
- Explanatory example has confusing/incorrect costs.
- Completed full regression test of code base.
- Met with Alex Demos and agreed to co-author paper for Music Scientiae on Parncutt, Corrected Parncutt, Improved Parncutt, and how to tell them apart. Will dry run some of this material in late-breaking paper at ISMIR.
Doing
- Implementing support for, and clarifying definition of, cyclic pattern constraint in Parncutt. (Should also do this for Sayegh and Hart.)
- Double-checking pruning mechanism in Parncutt.
- Writing up findings on "Corrected Parncutt" model, initially for ISMIR submission.
- Adding mechanism to learn weights for "Improved Parncutt" rules from training data.
Struggling
- How does one compare two ranked lists of sequences to a third and claim one of the two is more similar to the third in a statistically significant way? That is the big question.
In Scope
- Implementing crude automatic segmenter.
- Developing staccato/legato classifier.
- Demonstrating improved Parncutt via #1 and #2.
- Debugging Sayegh model, which produces results inconsistent with training data.
- Developing better test cases for Sayegh.
- Updating abcDE to support manual segmentation.
- Completing and polishing abcD for entire Beringer corpus.
- Defining initial benchmark corpora and evaluation methodology.
- Implementing convenience methods for reporting benchmark results.
- Moving Beringer corpus to MySQL database.
- Enhancing Parncutt, following published techniques and pushing beyond them.
- Enhancing Hart and Sayegh to return top n solutions.
- Re-weighting Parncutt rules using machine learning and TensorFlow. (This seems like a good fit.)
- Adding support to abcDE for annotating phrase segmentation.
- Debugging Dactylize 88-key circuit.
- Collecting fingering data from JB performances in Elizabethtown.
- Completing Dactylize II circuit.
- Developing method to align performance data with symbolic data. I think this is going to be essential if we are to use Dactylize data moving forward and a key part of its proof of concept. I plan to have something for this at the ISMIR demo session (September 22 deadline).
- Defining procedure for sanity test of production automatic data collector (including Beringer data).
- Defining corpora for Dactylize data collection (WTC, Beringer, ??).
- Implementing end-to-end machine learning experiment, using Beringer abcD data.
- Submitting papers to TISMIR. Ideas: a follow-up demo paper describing Dactylize data collected; a full-length paper describing application of evaluation method to models developed; a full-length description of enhanced and/or novel models, demo of method to align collected performance data with symbolic score.
Done
Model Building
- Re-implemented Parncutt cost functions for both hands.
- Identified possible inconsistencies in published Parncutt model description.
- Added feature to track more granular cost details in Dactyler models.
- Tracked individual rule costs to facilitate analysis of Parncutt results.
- Completed successful regression test for hacked-up Didactyl code. The APIs they are a-changin'.
Doing
- Testing Parncutt cost functions.
- Reproducing original Parncutt results.
- Adding mechanism to learn weights for Parncutt rules from training data.
In Scope
- Implementing crude automatic segmenter.
- Developing staccato/legato classifier.
- Demonstrating improved Parncutt via #1 and #2.
- Debugging Sayegh model, which produces results inconsistent with training data.
- Developing better test cases for Sayegh.
- Updating abcDE to support manual segmentation.
- Completing and polishing abcD for entire Beringer corpus.
- Defining initial benchmark corpora and evaluation methodology.
- Implementing convenience methods for reporting benchmark results.
- Moving Beringer corpus to MySQL database.
- Enhancing Parncutt, following published techniques and pushing beyond them.
- Enhancing Hart and Sayegh to return top n solutions.
- Re-weighting Parncutt rules using machine learning and TensorFlow. (This seems like a good fit.)
- Adding support to abcDE for annotating phrase segmentation.
- Debugging Dactylize 88-key circuit.
- Collecting fingering data from JB performances in Elizabethtown.
- Completing Dactylize II circuit.
- Developing method to align performance data with symbolic data. I think this is going to be essential if we are to use Dactylize data moving forward and a key part of its proof of concept. I plan to have something for this at the ISMIR demo session (September 22 deadline).
- Defining procedure for sanity test of production automatic data collector (including Beringer data).
- Defining corpora for Dactylize data collection (WTC, Beringer, ??).
- Implementing end-to-end machine learning experiment, using Beringer abcD data.
- Submitting papers to TISMIR. Ideas: a follow-up demo paper describing Dactylize data collected; a full-length paper describing application of evaluation method to models developed; a full-length description of enhanced and/or novel models, demo of method to align collected performance data with symbolic score.
Done
Methodology
- Contemplated a survey to find ground truth for interchangeable digits. (Discussed briefly with AFL and JB over email.)
Model Building
- Implemented trigram nodes in networkx for revamped Parncutt.
Doing
- Learning Cytoscape for graph visualization to help debug graph code.
- Fixing cost functions in Parncutt.
- Validating Parncutt cost functions for left hand.
- Adding mechanism to learn weights for Parncutt rules from training data.
- Reading some fingering pedagogy (C. P. E. Bach, Couperin, Rami Bar-Niv) to develop a vocabulary for talking to pianists.
Struggling
- A body at rest tends to stay at rest.
- Does this topic make sense for my new career situation?
In Scope
- Implementing crude automatic segmenter.
- Developing staccato/legato classifier.
- Demonstrating improved Parncutt via #1 and #2.
- Debugging Sayegh model, which produces results inconsistent with training data.
- Developing better test cases for Sayegh.
- Updating abcDE to support manual segmentation.
- Completing and polishing abcD for entire Beringer corpus.
- Defining initial benchmark corpora and evaluation methodology.
- Implementing convenience methods for reporting benchmark results.
- Moving Beringer corpus to MySQL database.
- Enhancing Parncutt, following published techniques and pushing beyond them.
- Enhancing Hart and Sayegh to return top n solutions.
- Re-weighting Parncutt rules using machine learning and TensorFlow. (This seems like a good fit.)
- Adding support to abcDE for annotating phrase segmentation.
- Debugging Dactylize 88-key circuit.
- Collecting fingering data from JB performances in Elizabethtown.
- Completing Dactylize II circuit.
- Developing method to align performance data with symbolic data. I think this is going to be essential if we are to use Dactylize data moving forward and a key part of its proof of concept. I plan to have something for this at the ISMIR demo session (September 22 deadline).
- Defining procedure for sanity test of production automatic data collector (including Beringer data).
- Defining corpora for Dactylize data collection (WTC, Beringer, ??).
- Implementing end-to-end machine learning experiment, using Beringer abcD data.
- Submitting papers to TISMIR. Ideas: a follow-up demo paper describing Dactylize data collected; a full-length paper describing application of evaluation method to models developed; a full-length description of enhanced and/or novel models, demo of method to align collected performance data with symbolic score.
Done
Administrivia
- Requested suspension of TAA support until next January (for tax purposes).
- Answered interview questions for College of Engineering story on Fifty for the Future award.
Model Building
- Completed Sayegh implementation.
- Learned how to modify TatSu AST.
- Implemented "pivot alignment" evaluation method.
- Refactored code for better reuse in new models, especially for segmenting input.
- Fixed how first and last fingering were being constrained to ensure model preferences for second and penultimate fingerings were not ignored.
- Drafted ISMIR abstract.
- Drew a diagram of the subproblems in the domain.
Doing
- Writing up what we have done so far.
- Reimplementing Parncutt model in framework using networkx.
- Developing better test cases for Sayegh.
- Implementing crude automatic segmenter.
- Updating abcDE to support manual segmentation.
- Completing and polishing abcD for entire Beringer corpus.
- Defining initial benchmark corpora and evaluation methodology.
- Implementing convenience methods for reporting benchmark results.
Struggling
- Sayegh model produces results that do not seem consistent with training data provided.
In Scope
- Moving Beringer corpus to MySQL database.
- Enhancing Parncutt, following published techniques and pushing beyond them.
- Enhancing Hart and Sayegh to return top n solutions.
- Re-weighting Parncutt rules using machine learning and TensorFlow. (This seems like a good fit.)
- Adding support to abcDE for annotating phrase segmentation.
- Debugging Dactylize 88-key circuit.
- Collecting fingering data from JB performances in Elizabethtown.
- Completing Dactylize II circuit.
- Developing method to align performance data with symbolic data. I think this is going to be essential if we are to use Dactylize data moving forward and a key part of its proof of concept. I plan to have something for this at the ISMIR demo session (September 22 deadline).
- Defining procedure for sanity test of production automatic data collector (including Beringer data).
- Defining corpora for Dactylize data collection (WTC, Beringer, ??).
- Implementing end-to-end machine learning experiment, using Beringer abcD data.
- Submitting papers to TISMIR. Ideas: a follow-up demo paper describing Dactylize data collected; a full-length paper describing application of evaluation method to models developed; a full-length description of enhanced and/or novel models, demo of method to align collected performance data with symbolic score.
Done
Administrivia
- Talked through a few challenges with the NLP Lab.
- Did a little forum shopping. As a backup plan for ISMIR conference, the TISMIR journal is accepting submissions.
Model Building
- Completed "reentry" evaluation method for strike fingers.
- Tested edge cases for evaluation and advising methods.
- Rejected TensorFlow for Sayegh implementation. We just need a trellis graph, a nasty for loop for training, and Viterbi.
- Stubbed in support for phrase segmentation in modeling framework.
- Implemented Sayegh training algorithm.
- Implemented methods to store and recall trained models for reuse.
Doing
- Implementing Sayegh trellis-graph model from scratch, using Python's networkx.
- Defining initial benchmark corpora and evaluation methodology.
- Implementing convenience methods for reporting benchmark results.
- Completing and polishing abcD for entire Beringer corpus.
Struggling
- The otherwise slick parser module I am using (TatSu) produces an immutable AST. This is cramping my style and promises to get worse as we move along.
- The Parncutt code is a disaster under Python 3. Lot of rework needed here.
In Scope
- Reimplementing Parncutt model in framework using networkx.
- Moving Beringer corpus to MySQL database.
- Enhancing Parncutt, following published techniques and pushing beyond them.
- Enhancing Hart and Sayegh to return top n solutions.
- Re-weighting Parncutt rules using machine learning and TensorFlow. (This seems like a good fit.)
- Adding support to abcDE for annotating phrase segmentation.
- Debugging Dactylize 88-key circuit.
- Collecting fingering data from JB performances in Elizabethtown.
- Completing Dactylize II circuit.
- Developing method to align performance data with symbolic data. I think this is going to be essential if we are to use Dactylize data moving forward and a key part of its proof of concept. I plan to have something for this at the ISMIR demo session (September 22 deadline).
- Defining procedure for sanity test of production automatic data collector (including Beringer data).
- Defining corpora for Dactylize data collection (WTC, Beringer, ??).
- Implementing end-to-end machine learning experiment, using Beringer abcD data.
- Submitting papers to ISMIR 2018. Abstracts due March 23. Papers due March 30. Ideas: a follow-up demo paper describing Dactylize data collected; a full-length paper describing application of evaluation method to models developed; a full-length description of enhanced and/or novel models, demo of method to align collected performance data with symbolic score.
Done
Administrivia
- Found ISMIR LaTeX template.
Model Building
- Modified music21 code base to ignore ornaments and had pull request accepted.
- Moved to the alpha release of music21 (with some trepidation)
- Set up grammar, parser, and convenient Abstract Syntax Tree (AST) for fingering language (abcDF) in Python.
- Leveraged new parser to implement evaluation methods.
- Implemented Hamming evaluation method for strike fingers.
- Implemented "natural" evaluation method for strike fingers.
- Implemented "pivot" evaluation method for strike fingers.
- Implemented first (striking) finger constraint for Hart model.
- Drafted "reentry" evaluation method for strike fingers.
Doing
- Debugging and testing "reentry" evaluation method.
- Creating more test cases for "infrastructure" code.
- Studying TensorFlow paradigms for connectionist models.
- Implementing Sayegh model (via TensorFlow or from scratch).
Struggling
- The otherwise slick parser module I am using (TatSu) produces an immutable AST. This is cramping my style and promises to get worse as we move along.
- The Parncutt code is a disaster under Python 3. Lot of rework needed here.
- Generally pulling hair out debugging the "reentry" code, which should be trivial. I am doing something stupid.
In Scope
- Re-implementing Parncutt model in framework. (The graph class I was using does not seem to exist in Python3, so this needs to be reworked.)
- Debugging Dactylize 88-key circuit.
- Collecting fingering data from JB performances in Elizabethtown.
- Completing Dactylize II circuit.
- Developing method to align performance data with symbolic data. I think this is going to be essential if we are to use Dactylize data moving forward and a key part of its proof of concept. I plan to have something for this at the ISMIR demo session (September 22 deadline).
- Creating abcD for complete Beringer corpus.
- Moving Beringer corpus to MySQL database.
- Enhancing Parncutt, following published techniques and pushing beyond them.
- Defining procedure for sanity test of production automatic data collector (including Beringer data).
- Defining corpora for Dactylize data collection (WTC, Beringer, ??).
- Implementing end-to-end machine learning experiment, using Beringer abcD data.
- Submitting papers to ISMIR 2018. Abstracts due March 23. Papers due March 30. Ideas: a follow-up demo paper describing Dactylize data collected; a full-length paper describing application of evaluation method to models developed; a full-length description of enhanced and/or novel models, demo of method to align collected performance data with symbolic score.
Done
Model Building
- Refactored Python algorithm ("Dactyler") architecture.
- Implemented unit test framework.
- Migrated Hart algorithm to new framework.
- Enhanced Hart model to support repeated notes with same pitch.
- Put announced ISMIR 2018 deadlines (March 23 and March 30) on NLP calendar.
Doing
- Revamping my corpus module to deal with multiple voices and polyphony in abc/abcD input.
- Supporting first-note fingering constraint in Hart model to enable the "auto-correcting" or "re-entrant" evaluation method suggested by CR.
- Implementing DValuation base class to support evaluation methods.
- Implementing DHamming edit-distance evaluation method.
- Implementing DNatural edit-distance method.
- Implementing DPivot edit-distance method.
- Implementing DReEntry evaluation method.
In Scope for Semester
- Re-implementing Parncutt model in framework. (The graph class I was using does not seem to exist in Python3, so this needs to be reworked.)
- Debugging Dactylize 88-key circuit.
- Collecting fingering data from JB performances in Elizabethtown.
- Implementing Sayegh model.
- Completing Dactylize II circuit.
- Developing method to align performance data with symbolic data. I think this is going to be essential if we are to use Dactylize data moving forward and a key part of its proof of concept. I plan to have something for this at the ISMIR demo session (September 22 deadline).
- Creating abcD for complete Beringer corpus.
- Moving Beringer corpus to MySQL database.
- Enhancing Parncutt, following published techniques and pushing beyond them.
- Defining procedure for sanity test of production automatic data collector (including Beringer data).
- Defining corpora for Dactylize data collection (WTC, Beringer, ??).
- Implementing end-to-end machine learning experiment, using Beringer abcD data.
- Submitting papers to ISMIR 2018. Abstracts due March 23. Papers due March 30. Ideas: a follow-up demo paper describing Dactylize data collected; a full-length paper describing application of evaluation method to models developed; a full-length description of enhanced and/or novel models, demo of method to align collected performance data with symbolic score.
Struggling
- music21 support for abc is either buggy, or I can't read. Having a hard time splitting an abc file into right- and left-hand parts, something that should be trivial.
- The Parncutt code is a disaster under Python 3. Lot of rework needed here.
- Contemplating using Hart as one of the two proof-of-concept models for the methodology paper. I might even be planning on it at this point.