Giter Site home page Giter Site logo

bwv-846-prelude's People

Contributors

evanlenz avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

bwv-846-prelude's Issues

Fix a bug in the combinations algorithm

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

Wrong bass clef notes in last measure

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.

Analyze intervals

This one may require more discrete tasks, because it is only in the ideation phase.

  • Identify intervals within each chord (both adjacent and with intervening notes).
  • Identify intervals between chords, i.e. between successive notes in a single voice (from the single-note summaries): whole steps, half-steps, minor thirds, perfect fourths, etc.

Render them somehow:

  • Create a summary with all the instances of a given interval, and/or
  • Highlight them somehow (volume? timbre? just visual highlighting?) in the context of the piece or another summary, and/or
  • Print stats (frequencies of intervals within chords and between chords), maybe in diagram form, e.g. a bar chart.

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.

Create a chord summary for every combination

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.

Create a master sequence of all summaries

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.

Reconstruct the piece algorithmically

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.)

Play with permutations

This is an extension to the piece-reconstruction algorithm.

Permutations can include:

  • the same eight notes (per half-measure) in different orders
  • permutations of a different selection of eight from the same five (i.e. with a bass note or two being played twice instead of all the treble notes being played twice)

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.