Yeah, I think a good discussion on music theory is starting from first principles, explaining Pythagorean tuning, then explaining 5-limit just intonation, the explaining we compromised on 12-tone equal temperament because it made tuning and changing keys a lot simpler, at the expenses of some notes being slightly out of tune (e.g. the minor and major thirds deviate by about 15 cents from their 5-limit just intonated “ideal” tunings).
Aside from that not being what was said (the parent’s pull-quote is wrong in multiple ways), it is in fact not possible to tune a piano to any arbitrary set of 88 pitches without changing the design so dramatically and fundamentally that it would no longer be a piano. The triangular shape of a grand determined by the strings lengths, the placement of the pins, the use of double/triple strings in some frequency ranges, and design of the sound board, all permit only a very limited range of frequencies for each key on the keyboard. You very obviously cannot take an existing piano and tune it to 88 keys of A0, nor to 88 keys of C9.
Of course you can, but that's not what's implied by the quote.
In addition to microtonality, many instruments (and the human voice) are capable of infinite tuning, and musicians will deviate from the "correct" note (as played by an even-tempered instrument) based on chord structure, voice leading, etc.
That's not what "tuning" means. Yes, fretless string instruments, the human voice, instruments like the trombone are all capable of being played with arbitrary or semi-arbitrary pitch. But they are still either tuned in some way, or never tuned at all. Performance is not tuning.
Since an "arbitrary piano" is tuned by turning screws, like simpler string instruments, the only pitches that it cannot be tuned to are those that fall outside the range of each string. Departing from the usual inharmonically tempered 12-EDO tuning would just sound strange, possibly outside some piano tuner's professional comfort zone.
And that isn't a nuanced opinion; a common one among rigid materialists. Its not the best piano for a stage, but I am sure it could fool your ears in a recording. Morpheus would think it was a piano too. "What is real? ..."
Even that way will be very difficult to make it work.
The Fil-C side could change the data behind the pointer, which will not reflect on the Rust side due to the copy. Even if you manage to copy back the changes, Fil-C could also persist those pointers in e.g. global memory: at that point you no longer know when it's safe to copy back (or forward) any change.
The only way I can see this work if you cannot pass any Rust-land pointers into Fil-C, but at that point you could also compile the C code to WASM and use the WASM FFI (which has similar restrictions)
WASM is not memory safe in the same sense, in particular, heap corruption vulnerabilities still exist, which could eg. allow bypassing auth, leaking private information etc.
C compiled to WASM is still vulnerable to something like OpenSSL Heartbleed. Fil-C (and CHERI) is not.
Haha indeed. At work suddenly documentation and APIs are important, but it's all for/behind "skills". Before it was always "sure, that would be nice"...
I do welcome the improvements to doc and APIs this brings though!
Yes, this is entirely possible. you can even explore the automaton eagerly and detect if it's possible to loop from an accepting state to a nonaccepting one.
Ripgrep does something like thhis. It has a meta regex engine that switches engine when it finds what looks like pathological cases (or rather, the regex-automata crate does, which is used by the regex crate, which powers ripgrep).
At least in Belgium it's quite common for a lot of students to fail the first year (partly due to the difficulty, partly due to partying instead of studying). But it's not like it's really free, the tuition is cheap but the accomodation is expensive. I also don't think it's particularly difficult on purpose to filter out students, it's just that it's not overly expensive and a lot of people are unsure about what to study.
If you're porting a library, you can use the original implementation as an 'oracle' for your tests. Which means you only need a way to write/generate inputs, then verify the output matches the original implementation.
It doesn't work for everything of course but it's a nice way to bug-for-bug compatible rewrites.
Indeed, the Tcl implementation does this so e.g. `set d [dict] ; dict set d key value` can modify d in place instead of creating a copy (since everything is immutable).
> Only a limited set of frequencies is used in music. All these frequencies (that exist in music) can be played by a piano.
reply