5 ms·
Terpstra Keyboard
- squircle 1y agoFirst thing I did when I started playing with LLMs was vibe code a bunch of shitty virtual instruments. Roll your own, folks! Good fun.
- deleted 1y ago[deleted]
- steveBK123 1y agoPretty cool
- awongh 1y agoThis is cool! I want to try to build a hardware midi keyboard using mechanical hall effect switches like this: https://mechanicalkeyboards.com/products/wuque-studio-dash-55g-linear-magnetic-he-switch https://mechanicalkeyboards.com/products/wuque-studio-dash-5... There's a few physical keyboards out there but many are super super expensive.
- maxdamantus 1y agoI've kind of done this, just without the actual "build" part—I instead use a Wooting computer keyboard (which has the hall effect switches you're referring to), and I've written some program to emit MIDI based on key velocity. I've been using it very frequently for a few years, and can confirm it's quite fun to use, though I don't have much experience playing other keyboard instruments and haven't tried to learn it seriously enough to make proper use of chords etc. Demo of me playing here, though try not to mind the messy desk and bad recording setup (one-hand, MIDI going through phone due to lack of speakers): https://drive.google.com/file/d/1qZuFlK9GybX5aP5tGi54AvTTFKdzFxn_/edit https://drive.google.com/file/d/1qZuFlK9GybX5aP5tGi54AvTTFKd... The layout I use is not a regular piano layout, but a B-griff layout, as used on a bayan (Russian accordion). I made a demo site for playing with the layout (keyboard or touchscreen), but without velocity sensitivity: https://maxdamantus.gitlab.io/bayan/ https://maxdamantus.gitlab.io/bayan/ The B-griff/C-griff layouts naturally fit computer keyboards, and I'd argue they're better in general than piano layouts for various reasons. There's also this cool video of someone using two Commodores for similar effect: https://youtube.com/watch?v=EBCYvoC4muc https://youtube.com/watch?v=EBCYvoC4muc EDIT: turns out the Terpstra keyboard is also able to work using B-griff: http://terpstrakeyboard.com/web-app/keys.htm?fundamental=261.6255653&right=3&upright=2&size=50&rotation=0&instrument=sawtooth&enum=false&equivSteps=12&spectrum_colors=false&fundamental_color=55FF55&no_labels=false&scale=!%2012-ed2%20B-System%20Chromatic%20Button.scl%0A!%2012-tone%20equal%20tempered%20scale%20consisting%20of%2012%20sonically%20equal%20divisions%20per%20frequency%20halving%2Fdoubling%2C%20mapped%20on%20a%20(hexagonal)%20tilted%20Chromatic%20Button%20System%20Type-B%20used%20on%20some%20button%20accordions.%0A!%0ATerpstra%20Keyboard%20WebApp%20%7C%2012-ed2%20B-System%20Chromatic%20Button%0A12%0A!%0A100.00000%0A200.00000%0A300.00000%0A400.00000%0A500.00000%0A600.00000%0A700.00000%0A800.00000%0A900.00000%0A1000.00000%0A1100.00000%0A1200.00000&names=C%0AD%E2%99%AD%2FC%E2%99%AF%0AD%0AE%E2%99%AD%2FD%E2%99%AF%0AE%0AF%0AG%E2%99%AD%2FF%E2%99%AF%0AG%0AA%E2%99%AD%2FG%E2%99%AF%0AA%0AB%E2%99%AD%2FA%E2%99%AF%0AB¬e_colors=ffffff%0A7b7b7b%0Affffff%0A7b7b7b%0Affffff%0Affffff%0A7b7b7b%0Affffff%0A7b7b7b%0Affffff%0A7b7b7b%0Affffff http://terpstrakeyboard.com/web-app/keys.htm?fundamental=261...
- awongh 1y ago> I've written some program to emit MIDI based on key velocity. nice! Is the velocity code on the firmware side? Is that why it's not included on the demo site?
- maxdamantus 1y agoNo, it's on the software (computer) side. It's not in the demo site because I created that in 2019 [0] for use with a regular keyboard (since I was having issues with the software I'd previously been using for playing MIDI). I only upgraded to the Wooting keyboard in late 2021. I've been meaning to look into adding Wooting support, just haven't got round to it. This would require either WebUSB or WebHID which are still "experimental", and I'm not sure if there will be latency issues. The program I created for computing velocity and emitting MIDI is here [1]. When it's listening for keyboard data it does it in another thread so that it can attach fairly accurate timestamps to the key events, without being subject to pauses from Gtk or something. If there's inconsistency between the key event times and the relative timestamps, the velocity detection can be noticably off. I've noticed this in Wooting's own MIDI application [2]. Hopefully WebUSB/WebHID includes timestamps in the data, so it doesn't have to be subject to JS GC pauses. As well as the Rust program above (possibly Linux-only, though should be easily adaptable to work on Windows/macOS), I've written an Android app that does the same thing so I can use it without a computer (though in Android you have to take control of the USB device rather than just read the HID data), but I haven't uploaded the code anywhere. [0] https://gitlab.com/Maxdamantus/bayan https://gitlab.com/Maxdamantus/bayan [1] https://gist.github.com/Maxdamantus/c5d5133cab1ef3596ac589d2449b25ef https://gist.github.com/Maxdamantus/c5d5133cab1ef3596ac589d2... [2] https://github.com/WootingKb/wooting-analog-midi https://github.com/WootingKb/wooting-analog-midi ... as well as issues with timestamp jitter, this application seems overall a bit bloated for my taste (web-based app using Tauri), and it's inconvenient since it will continue to generate MIDI when you're focused on other applications, so you'd have to close and open it (slow startup time too) each time you want to use it. their timestamp jitter occurs because the Wooting SDK (at least at the time, haven't looked at it recently) worked by running a thread that would update a shared HashMap and you would have to poll that hash map; it wasn't possible to see all updates, and there were no timestamps attached. I avoided the SDK and instead just read the data directly from the "hidraw" device.
- Cthulhu_ 1y agoFun fact, anyone with a surname that ends with the -stra or -sma suffix has their origins in Frisia [0], a region in current-day Netherlands and Germany that retained their independence in the Roman era. Terpstra specifically refers to someone living on a terp, an artificial hill (because there's no hills in the Netherlands lololol) that people would live on or retreat to with the intermittent floodings. This in turn is why the Netherlands is so big when it comes to dairy and cheese; grass was one of the few things that would grow consistently and survive the floods, cows eat grass, cheese and butter can be preserved to last through winter, etc. [0] https://en.wikipedia.org/wiki/Frisia https://en.wikipedia.org/wiki/Frisia
- docdeek 1y agoVery interesting. The only Terpstra I knew of before this link was Niki Terpstra, one of only three Dutch winners of both Paris-Roubaix and the Tour of Flanders.
- agos 1y agoI also recall one Brett Terpstra, maker of Marked app and kind of a known name in the indie Mac developer scene
- futura_heavy 1y agoI thought this was him debuting a new project.
- thechao 1y agoDijkstra!
- cwbrandsma 1y agoAnd you will forever have your name mispronounced by English speakers that can’t wrap their tongues around the -sma or -stra ending. Things like TerpSON, TerpSmith, Terp…. One time while voting the lady working there butchered my name 8 times, she literally could not get it right.
- Aachen 1y agoI'm impressed how responsive the keys are! Will definitely be checking out on desktop if I can see how the audio rendering code works (unless someone here already knows). I presume the audio synthesis API and ontouchstart but maybe there's something clever in addition like prerendering the audio samples rather than synthesising them on press Maybe it also helps that I've got a headphone jack plugged in instead of the Bluetooth I'm used to from listening to things during the day, but even so, my touchscreen just doesn't feel this responsive normally, including in games. It's on my list of things to check the delay of, but since my phone's 960 fps camera is the equipment I use to check that, it is a bit tricky Edit: ontouchstart calls noteOn method https://github.com/wcgbg/terpstrakeyboard/blob/03d526a0ed5c76e227c413b2e5034b66b670726f/keys.js#L663 https://github.com/wcgbg/terpstrakeyboard/blob/03d526a0ed5c7... This eventually calls into audio api start with 0 delay https://github.com/wcgbg/terpstrakeyboard/blob/03d526a0ed5c76e227c413b2e5034b66b670726f/keys.js#L1032 https://github.com/wcgbg/terpstrakeyboard/blob/03d526a0ed5c7... The data to play was retrieved from the server (based on the instrument you selected) and parsed ahead of time https://github.com/wcgbg/terpstrakeyboard/blob/03d526a0ed5c76e227c413b2e5034b66b670726f/keys.js#L1079 https://github.com/wcgbg/terpstrakeyboard/blob/03d526a0ed5c7... It loads samples at four frequencies and plays the nearest one at the appropriate rate (proportional to the target frequency) https://github.com/wcgbg/terpstrakeyboard/blob/03d526a0ed5c76e227c413b2e5034b66b670726f/keys.js#L1023 https://github.com/wcgbg/terpstrakeyboard/blob/03d526a0ed5c7... The settings.audioContext variable is simply an instance of the web audio API as expected (with a fallback to support Safari/webkit) https://github.com/wcgbg/terpstrakeyboard/blob/03d526a0ed5c76e227c413b2e5034b66b670726f/keys.js#L1060 https://github.com/wcgbg/terpstrakeyboard/blob/03d526a0ed5c7... This gainNode it's connecting is just about playback volume it seems https://developer.mozilla.org/en-US/docs/Web/API/BaseAudioContext/createGain https://developer.mozilla.org/en-US/docs/Web/API/BaseAudioCo... and "audioContext.destination", MDN says, you can think of as a speaker device So nothing too special here: of course preloading server data but then simply creating a new sound source during ontouchstart is enough. I guess delay in other software comes from the extra cruft they have such as big libraries (and Bluetooth, in the cases where I use that), not from any actual delay in touchscreen or audio rendering
- dist-epoch 1y agoresponsive, but there is a small click between notes. maybe they start mid phase
- randomtoast 1y agoSomehow I cannot open the website.
- aniviacat 1y agoIt's HTTP only, maybe that's why?
- amne 1y agoThe article link is missing the scheme so the browser will default to https. I get an error about the CNAME mismatching the Host on https for example.
- deleted 1y ago[deleted]
- yonatan8070 1y agoI just get a 404 looking page in Romanian
- TacticalCoder 1y ago[dead]
- _joel 1y agoThis would be great for Klingon Opera :) https://www.youtube.com/watch?v=1LjcBv-OWtQ https://www.youtube.com/watch?v=1LjcBv-OWtQ
- ldb 1y agoWow, not in my wildest dreams would I have thought that such a deep dive into Klingon music theory exists. This is amazing. Thanks for sharing.
- _joel 1y agoIndeed, it's probably the geekiest confluence going! No worries, glad you enjoyed it.
- _joel 1y agooh, not quite, it seems https://www.youtube.com/watch?v=I5vVskOCGsk https://www.youtube.com/watch?v=I5vVskOCGsk
- ldb 1y agoOh man, what a legend this guy is. Using an ambiguity in Klingon lore to explore yet another micro-tonal system is just incredible. And he profoundly apologizes for an off-by-one error he made in the previous video ... as if that hasn't happened to most of us :-)
- gbuk2013 1y agoSound is not quite right - C## should sound like D but it’s slightly off.
- bluGill 1y agoI've been trying to design a keyboard that can be used with the feet - something that I can play like dance dance revolution, while playing something else with my hands (mandolin), thus making me a one man band. Figuring out what a good layout would be is the first step and so far everything I've thought of either lacks useful notes, is too big to reach useful notes, or the keys are too close together. If anyone has ideas on how to do this I'd love help. (or better yet do this as I don't have must time to work on it)
- hobs 1y agoI'd probably be thinking foot pedals and chording if I needed a lot of options.
- coldpie 1y agoHave you looked at existing MIDI foot controllers? E.g. Behringer FCB1010 or Yamaha MFC10 or Roland FC-300.
- Hesinde 1y agoAn organ pedalboard MIDI controller would be an off-the-shelf solution albeit expensive. You could hook it up to a drum rack in a DAW in order to remap the pedals to a useful layout. With a foot activated MIDI controller the number of keys will always be rather limited. Therefore, I think that the virtual layout should be customized to the music you play or even for each song. E.g. you could only map notes of a certain scale and range in order to save space. If you consider building something custom; I have found that outputting to hardware MIDI from an Arduino is delightfully simple. (The hard part on my own project is finding motivation for figuring out how to read velocity from piezos and isolating vibrations.)
- bluGill 1y agoOrgan pedalboards require sitting down and so are not really what I want. The number of keys is the real problem - I don't want to be playing a single note in one octave, I want to play my chord progression and that means I need separate buttons for the major, minor, 7th (which 7th...) for the chords that go with the song.
- addandsubtract 1y agoTIL MacBook keyboards only send 6 key presses at once.
- neuroelectron 1y agoiPad maxes out at 10 https://imgur.com/a/01OYs3o https://imgur.com/a/01OYs3o
- userbinator 1y agoYou aren't going to find NKRO on most laptop keyboards, or really any keyboard, unless it's a "gamer"-oriented high-end one.
- beefman 1y agoNow the Lumatone https://www.lumatone.io/ https://www.lumatone.io/ Mike Battaglia plays Scarborough Fair in 31-tone equal temperament https://www.youtube.com/watch?v=HJKB1_gvhLE https://www.youtube.com/watch?v=HJKB1_gvhLE
- awongh 1y agoA Lumatone is $4250, though!
- Ericson2314 1y agoFor programmers only :(
- htek 1y agoI wish I had bought a few Axis-49 controllers when they were in production. They were a much more reasonable $500 at the time. https://www.c-thru-music.com/cgi/?page=prod_axis-49 https://www.c-thru-music.com/cgi/?page=prod_axis-49
- septimal_lemon 1y agoYou might be interested in the Hexboard. Basically a mini-lumatone for ~$500; main downside is no velocity sensitivity. https://shapingthesilence.com/tech/hexboard-midi-controller/ https://shapingthesilence.com/tech/hexboard-midi-controller/ I'm quite happy with mine, and play it with the Wicki-Hayden layout. https://en.wikipedia.org/wiki/Wicki%E2%80%93Hayden_note_layout https://en.wikipedia.org/wiki/Wicki%E2%80%93Hayden_note_layo...
- pugworthy 1y agoAmusing things to do... * Type things and listen to the various tones. I'd go for a little app that just let me do this day to day. I'd probably find it annoying pretty quickly but it would be interesting turned down low. * Use your browser's zoom to go way out. It has no problems offering you notes way beyond the ability of you to hear it let alone your computer from playing it.
- satiric 1y agoFun to mess around with. The qwerty keyboard maps nicely (for the default tuning you gave anyway). I found I wanted to be able to hold a chord on the keyboard and play a melody with the mouse, but the system only responds to either the keyboard xor the mouse. Any chance it could be made to work with both at the same time?
- nayuki 1y agoMy favorite variant: https://novayashkola.org/janko/ https://novayashkola.org/janko/ , https://en.wikipedia.org/wiki/Jank%C3%B3_keyboard https://en.wikipedia.org/wiki/Jank%C3%B3_keyboard , https://en.wikipedia.org/wiki/Isomorphic_keyboard https://en.wikipedia.org/wiki/Isomorphic_keyboard Since a year ago, I found that I can play songs by ear on the Janko keyboard far more easily than on standard piano keyboards. More resources: https://github.com/wcgbg/terpstrakeyboard/ https://github.com/wcgbg/terpstrakeyboard/ , https://www.youtube.com/results?search_query=janko%20keyboard https://www.youtube.com/results?search_query=janko%20keyboar...
- joshlemer 1y agoFor those who haven't ever gotten into microtonal and other non-standard tuned music before, it's a really interesting space. I would highly recommend checking out Kyle Gann's album Hyperchromatica (https://www.youtube.com/watch?v=gbT9oRbu3h8&list=PL1IsImnKxK5ppCkOEoQ-yjOnAq95wkx9c https://www.youtube.com/watch?v=gbT9oRbu3h8&list=PL1IsImnKxK...), which has a pretty wide variety of pieces/genres, showing the potential of nonstandard tuning. It takes a bit to get used to it but there are brand new colours and emotions that open up here IMO. Definitely worth checking out!
- patrickscoleman 1y agoHighly recommend King Gizzard and the Lizard Wizard for microtonal music too! For example: https://kinggizzard.bandcamp.com/album/flying-microtonal-banana https://kinggizzard.bandcamp.com/album/flying-microtonal-ban...
- cjhveal 1y agoTo add yet another example for those looking to try out microtonal music, Sevish's track Gleam[1] is upbeat/poppy and surprisingly palatable. It explores the crunchy textures of microtonal while resolving to familiar pop cadences and helped bridge the gap for me to start enjoying the spectrum of microtonal harmony. [1]: https://www.youtube.com/watch?v=l9wINwlgxRU https://www.youtube.com/watch?v=l9wINwlgxRU
- bluGill 1y agoTechnically Bach was writing for microtonal music - his well tempered clavier was written to show how songs need to be played in the correct keys to sound right. He was against the systems of the day where some keys could not be used, but his preferred system had each key usable but sounding different. Playing them on a modern equal tempered instrument fails to capture what he was trying to show.
- enneff 1y agoZheanna Erose’s channel is a goldmine of microtonal music and discussion thereof. https://youtube.com/@zheannaerose https://youtube.com/@zheannaerose
- 1y ago
- gtani 1y agoLots of good info in OPs article and this thread, and good band/classical tradition suggests, also. I've been listening to a lot of 21st century string quartets, Ben Johnston (student of Partsch), Caroline Shaw, Garth Knox, Kevin Puts and trying to figure out how they notate them. Also spend time on fretless bass/guitar, pedal/lap steel doing ... stuff.