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.
Done
Administrivia
- Secured $3000 Elizabethtown College Faculty Grant award with JB in late April.
- Successfully defended prelim proposal in June.
- Got a full-time job in September at UIC CCTS.
Data Collection
- Repaired original Dactylize circuit damaged in move from NLP Lab.
- Installed Dactylize system in JB's studio at Elizabethtown College in October.
- Prototyped new glove assembly for Dactylize.
- Obtained parts for repair and new Dactylize II system with grant funds and started circuit assembly.
- Successfully loaded Survey III data from Qualtrics to new MySQL diii2 schema.
- Loaded missing Survey I and II data in MySQL to new didactyl2 schema, so we can now perform queries across both data sets, as originally envisioned, and all of our fingering data are now in one place.
- Defined procedure for data collection from performances using GitHub.
Doing
- Updating Didactyl framework to recognize abcD format.
- Completing Parncutt model implementation in framework.
- Debugging Dactylize 88-key circuit.
- Collecting fingering data from JB performances in Elizabethtown.
- Implementing Sayegh model.
- Implementing "autocorrecting" evaluation method suggested by CR to compare models head to head.
In Scope
- Completing Dactylize II circuit.
- Creating abcD for complete Beringer corpus.
- 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 (deadline not yet announced, probably in March). 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.
Struggling
- Getting reacquainted with Python and music21.
Done
Data Collection
- Created initial table of contents for prelim proposal.
- Debugged LaTeX conflict between color package and uicthesi class. Short answer: don't use color.
Doing
- Drafting early chapters of prelim proposal.
- Drafting Elizabethtown College grant proposal, dove-tailing with Dactylize chapter in prelim proposal.
- Strategizing initial constraints for system--start with finger legato? Outlining planned evolution of model.
- Strategizing enhanced similarity measure. Minimum edit distance with all (weighted) substitutions? Pivot detector?
- Legato detector? "Phrase" detector?
- Debugging, and defining test cases for, post-processing code (dactylizer.pl).
Back-burnered
- Creating abcD for complete Beringer corpus.
- Defining procedure for sanity test of production automatic data collector (including Beringer data).
- Defining procedure for initial data collection sessions (including Beringer data).
- Implementing end-to-end machine learning experiment, using Beringer abcD data.
Struggling
- So much grading, so little time.
- Refinancing house?
- Get a job, hippie.