Visualizing Inferred Fundamentals in the 3D Harmony Structure #10
jimishol
started this conversation in
Interpretation of structure
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Although the arguments about the [missing fundamental](https://en.wikipedia.org/wiki/Missing_fundamental) were essential for discovering the three‑dimensional structure, the fundamentals were not shown visually on the screen. Like the surfaces (which can be toggled off by pressing
s), there is subjectivity about whether their visualization actually helps musical analysis. While watching MIDI playback of classical pieces I often wondered what the fundamental frequency of certain chords might be, so I added an inferred‑fundamental visualization to the project.What I added and where to look
Maxima script implementing the original computation:
asset_pipeline/missing_fountamental.machttps://github.com/jimishol/cholidean-harmony-structure/blob/main/asset_pipeline/missing_fountamental.mac
Lua implementation used by the renderer:
src/systems/fountamental.luahttps://github.com/jimishol/cholidean-harmony-structure/blob/main/src/systems/fountamental.lua
Test script for the Lua module (now in asset_pipeline):
asset_pipeline/test_fountamental.luahttps://github.com/jimishol/cholidean-harmony-structure/blob/main/asset_pipeline/test_fountamental.lua
Visualization control constant:
src/constants.lua(seemfState)https://github.com/jimishol/cholidean-harmony-structure/blob/main/src/constants.lua
How to run
Implementation details
The algorithm estimates an inferred fundamental using a heuristic based on optimal division by two‑digit integers. A detected fundamental is accepted only if it is at or above C0, implemented as:
Visualization
Inferred fundamentals are visualized by increasing the size of joints and/or labels. The behavior is controlled by the
mfStateconstant insrc/constants.lua:has_fundamentalguard still applies).label_distance).label_distancetuning).Interpretation
Enlarged, glowing elements represent fundamentals that are actually sounding; non‑glowing elements indicate inferred fundamentals that are not physically present but are perceived to exist. For example, the interval E–G can give the impression of a C fundamental, and some tuners will interpret that chord as a C.
Caveats and open questions
Beta Was this translation helpful? Give feedback.
All reactions