evanlenz / bwv-846-prelude Goto Github PK
View Code? Open in Web Editor NEWExperiments in analytical extractions of Bach's Prelude No. 1 in C Major (BWV 846)
Experiments in analytical extractions of Bach's Prelude No. 1 in C Major (BWV 846)
This will be easier on the ear by keeping the beats even and by providing an audible break between summaries.
Add a note ID generation mechanism to support downstream visualizations that trace the output note back to the original note in the input score. This was used in my "Visualizing Musical Transformations" talk at Balisage 2021.
I failed to notice that not all combinations were still being generated in the final version I checked in (see the differing timestamps below).
I need to add back the special case(s) for $k eq 1 and/or $k eq 2.
-rwxr-xr-x 1 evanl evanl 2151428 Dec 26 15:51 master-summary.musicxml
-rwxr-xr-x 1 evanl evanl 25903 Dec 26 15:51 summary-1.musicxml
-rwxr-xr-x 1 evanl evanl 28504 Dec 26 15:51 summary-1.pitch-changes.musicxml
-rwxr-xr-x 1 evanl evanl 41321 Dec 24 16:45 summary-12.musicxml
-rwxr-xr-x 1 evanl evanl 45781 Dec 24 16:45 summary-12.pitch-changes.musicxml
-rwxr-xr-x 1 evanl evanl 58361 Dec 24 16:45 summary-123.musicxml
-rwxr-xr-x 1 evanl evanl 64942 Dec 24 16:45 summary-123.pitch-changes.musicxml
-rwxr-xr-x 1 evanl evanl 75297 Dec 24 16:45 summary-1234.musicxml
-rwxr-xr-x 1 evanl evanl 84288 Dec 24 16:45 summary-1234.pitch-changes.musicxml
-rwxr-xr-x 1 evanl evanl 92444 Dec 26 15:51 summary-12345.musicxml
-rwxr-xr-x 1 evanl evanl 103316 Dec 26 15:51 summary-12345.pitch-changes.musicxml
-rwxr-xr-x 1 evanl evanl 75508 Dec 26 15:51 summary-1235.musicxml
-rwxr-xr-x 1 evanl evanl 83632 Dec 26 15:51 summary-1235.pitch-changes.musicxml
-rwxr-xr-x 1 evanl evanl 58257 Dec 24 16:45 summary-124.musicxml
-rwxr-xr-x 1 evanl evanl 64380 Dec 24 16:45 summary-124.pitch-changes.musicxml
-rwxr-xr-x 1 evanl evanl 75404 Dec 26 15:51 summary-1245.musicxml
-rwxr-xr-x 1 evanl evanl 83408 Dec 26 15:51 summary-1245.pitch-changes.musicxml
-rwxr-xr-x 1 evanl evanl 58468 Dec 26 15:51 summary-125.musicxml
-rwxr-xr-x 1 evanl evanl 64471 Dec 26 15:51 summary-125.pitch-changes.musicxml
-rwxr-xr-x 1 evanl evanl 42943 Dec 24 16:45 summary-13.musicxml
-rwxr-xr-x 1 evanl evanl 47545 Dec 24 16:45 summary-13.pitch-changes.musicxml
-rwxr-xr-x 1 evanl evanl 59879 Dec 24 16:45 summary-134.musicxml
-rwxr-xr-x 1 evanl evanl 66891 Dec 24 16:45 summary-134.pitch-changes.musicxml
-rwxr-xr-x 1 evanl evanl 77026 Dec 26 15:51 summary-1345.musicxml
-rwxr-xr-x 1 evanl evanl 85919 Dec 26 15:51 summary-1345.pitch-changes.musicxml
-rwxr-xr-x 1 evanl evanl 60090 Dec 26 15:51 summary-135.musicxml
-rwxr-xr-x 1 evanl evanl 66235 Dec 26 15:51 summary-135.pitch-changes.musicxml
-rwxr-xr-x 1 evanl evanl 42839 Dec 24 16:45 summary-14.musicxml
-rwxr-xr-x 1 evanl evanl 47103 Dec 24 16:45 summary-14.pitch-changes.musicxml
-rwxr-xr-x 1 evanl evanl 59986 Dec 26 15:51 summary-145.musicxml
-rwxr-xr-x 1 evanl evanl 66131 Dec 26 15:51 summary-145.pitch-changes.musicxml
-rwxr-xr-x 1 evanl evanl 43050 Dec 26 15:51 summary-15.musicxml
-rwxr-xr-x 1 evanl evanl 47194 Dec 26 15:51 summary-15.pitch-changes.musicxml
-rwxr-xr-x 1 evanl evanl 27123 Dec 26 15:51 summary-2.musicxml
-rwxr-xr-x 1 evanl evanl 28644 Dec 26 15:51 summary-2.pitch-changes.musicxml
-rwxr-xr-x 1 evanl evanl 44163 Dec 24 16:45 summary-23.musicxml
-rwxr-xr-x 1 evanl evanl 47805 Dec 24 16:45 summary-23.pitch-changes.musicxml
-rwxr-xr-x 1 evanl evanl 61099 Dec 24 16:45 summary-234.musicxml
-rwxr-xr-x 1 evanl evanl 67151 Dec 24 16:45 summary-234.pitch-changes.musicxml
-rwxr-xr-x 1 evanl evanl 78246 Dec 26 15:51 summary-2345.musicxml
-rwxr-xr-x 1 evanl evanl 86179 Dec 26 15:51 summary-2345.pitch-changes.musicxml
-rwxr-xr-x 1 evanl evanl 61310 Dec 26 15:51 summary-235.musicxml
-rwxr-xr-x 1 evanl evanl 66495 Dec 26 15:51 summary-235.pitch-changes.musicxml
-rwxr-xr-x 1 evanl evanl 44059 Dec 24 16:45 summary-24.musicxml
-rwxr-xr-x 1 evanl evanl 47243 Dec 24 16:45 summary-24.pitch-changes.musicxml
-rwxr-xr-x 1 evanl evanl 61206 Dec 26 15:51 summary-245.musicxml
-rwxr-xr-x 1 evanl evanl 66271 Dec 26 15:51 summary-245.pitch-changes.musicxml
-rwxr-xr-x 1 evanl evanl 44270 Dec 26 15:51 summary-25.musicxml
-rwxr-xr-x 1 evanl evanl 47334 Dec 26 15:51 summary-25.pitch-changes.musicxml
-rwxr-xr-x 1 evanl evanl 28745 Dec 26 15:51 summary-3.musicxml
-rwxr-xr-x 1 evanl evanl 30746 Dec 26 15:51 summary-3.pitch-changes.musicxml
-rwxr-xr-x 1 evanl evanl 45681 Dec 24 16:45 summary-34.musicxml
-rwxr-xr-x 1 evanl evanl 50092 Dec 24 16:45 summary-34.pitch-changes.musicxml
-rwxr-xr-x 1 evanl evanl 62828 Dec 26 15:51 summary-345.musicxml
-rwxr-xr-x 1 evanl evanl 69120 Dec 26 15:51 summary-345.pitch-changes.musicxml
-rwxr-xr-x 1 evanl evanl 45892 Dec 26 15:51 summary-35.musicxml
-rwxr-xr-x 1 evanl evanl 49436 Dec 26 15:51 summary-35.pitch-changes.musicxml
-rwxr-xr-x 1 evanl evanl 28641 Dec 26 15:51 summary-4.musicxml
-rwxr-xr-x 1 evanl evanl 30304 Dec 26 15:51 summary-4.pitch-changes.musicxml
-rwxr-xr-x 1 evanl evanl 45788 Dec 26 15:51 summary-45.musicxml
-rwxr-xr-x 1 evanl evanl 49332 Dec 26 15:51 summary-45.pitch-changes.musicxml
-rwxr-xr-x 1 evanl evanl 28852 Dec 26 15:51 summary-5.musicxml
-rwxr-xr-x 1 evanl evanl 30395 Dec 26 15:51 summary-5.pitch-changes.musicxml
Fix by either updating the rules or hacking the input.
Note to self: also update the resulting scores on MuseScore.com. Ideally get MuseScore to replace the existing score so I don’t have to create it anew each time.
This one may require more discrete tasks, because it is only in the ideation phase.
Render them somehow:
Also, use heuristics to automatically identify and highlight potential items of interest.
Related: recognize like sequences of intervals and point out those relationships too. This is getting into melody recognition (a whole discipline in its own right); identify small, concrete things we can do, and define an issue for each one.
Right now we select every 1 of 5 and every 5 of 5. Also select every 2 of 5, every 3 of 5, and every 4 of 5.
Consider using or creating some generic discrete math utilities for this and future uses.
This is to highlight the pitch changes by downplaying repeated notes (tying them together).
A master summary would consist of all the summaries concatenated together in some order. There are many possible sequences of course, but let’s start with just one, advancing from simpler to more complex.
Use the building blocks we have now (the five one-voice summaries), just as we do to generate the solid chords.
For now, punt on the last three measures and let them do what every other measure does (repeated broken chords). Even though this isn’t what Bach did, it might be interesting to hear it without his composed variations. Even if it’s not interesting, avoid the temptation to reconstruct the right notes in the last three measures. (If anything, only address it as a separate issue.)
This is an extension to the piece-reconstruction algorithm.
Permutations can include:
Answer this math problem: how many possible permutations are we talking about here?
If it’s not overwhelming (i.e. doesn’t take hours to hear them all), generate and listen to them all.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.