Somewhat related: textual-paint¹ which uses the same interaction library, and was recently discussed here². I'm noting this purely because I'm enjoying the increasing frequency of rich³/textual⁴ posts, it hints at a latent desire for computing closer to how I enjoy it ;)
AIUI you need to open your terminal in raw mode if you want to get the full keypress/keydown events. But you'll have to parse the scancodes yourself. Very doable and kind of necessary if you want to do a terminal app here =D There's probably a library that can help you. Good luck!
In (very) short: the resonance (notes interacting with one another), combined with the analog nature of varying velocity (how hard keys are pressed), combined with pedaling modifying both of the above.
The resulting combinatorial explosion means that the number of samples you need to capture, in order to have a high-fidelity reproduction of a physical piano, is enormous.
Putting aside the practicality of capturing all of this, you're still looking at tens to hundreds of gigabytes of raw samples per piano.
> Note that since the terminal doesn't really support key press and release events (it receives a stream of characters instead), there is no way to support two key playing at the same time with the computer keyboard only.
Great project, but this seems like a major limitation. Why insist on doing this inside a terminal, when there are many other environments where this is not a problem?
¹ https://github.com/1j01/textual-paint
² https://news.ycombinator.com/item?id=36859880
³ https://github.com/textualize/rich
⁴ https://textual.textualize.io/
> it hints at a latent desire for computing closer to how I enjoy it ;)
Agreed, same here!!
If you like this, you might also like my solitaire clone for the terminal: https://github.com/eliasdorneles/usolitaire =)
Pianoteq has been around for 17 years -- as long as patents last! -- and yet open source still seems to have nothing that comes close.
The resulting combinatorial explosion means that the number of samples you need to capture, in order to have a high-fidelity reproduction of a physical piano, is enormous.
Putting aside the practicality of capturing all of this, you're still looking at tens to hundreds of gigabytes of raw samples per piano.
(Great question, by the way.)
Had to use this technique to make it work: https://stackoverflow.com/a/75339618/5017391
Worked beautifully after.
http://linusakesson.net/commodordion/index.php
Great project, but this seems like a major limitation. Why insist on doing this inside a terminal, when there are many other environments where this is not a problem?
Okay, yes, there's X11 forwarding but this is a lot simpler, right?
Oh yeah, you can call some friends to login to the same server and play a concert over SSH!
> Why insist on doing this inside a terminal... ?
Simple: because it's fun!
Welcome to HN, where we make overcomplicated; obscure projects for the sheer passion and curiosity of it.
Is this your first day? XD