7 ms·
Electron - does that mean it’s built with JavaScript and webaudio API? Congrats on the launch!
by ssttoo 7y ago
Electron - does that mean it’s built with JavaScript and webaudio API?
Congrats on the launch!
- rodw 7y agoEssentially yes, and thank you. Being able to leverage WebAudio was a major factor in the decision to use Electron. To be honest at first I was thinking of Electron/WebAudio as a prototyping tool that I would only use for a proof-of-concept, but I've been pleasantly surprised by its performance and capabilities. So far I haven't found a compelling reason to change. When you don't need to worry about cross-browser compatibility the modern HTML5 toolset is really pretty powerful.
- ssttoo 7y agoAwesome, thanks! I’ve seen proof-of-concept pitch detection in webaudio but it’s great to learn it’s production-worthy, not just a demo. I’ll try fatpick (love the name, btw) when I get to a guitar and report back. Also curious what did you use for painting the tabs. DIY in Canvas? Or vexflow? Btw there’s a nice talk from Adrian Holovaty on perf challenges with soundslice and its drawing/updating of notation (standard and tabs)
- rodw 7y agoLol, I've never even seen at VexFlow before, or if I have I've forgotten about it. But from a quick scan I think FATpick's tablature view is a little different what VexFlow does. FATpick's view is like a "piano-roll" - the x-axis maps directly to time such that the notes scroll from right to left at a constant rate, with the width of each "bubble" directly corresponding to the duration of that note. VexFlow does "traditional" tablature (and stave) notation, like the sheet music most people are familiar with, in which all notes are more-or-less the same width on the score, independent of duration. That said, adding conventional (stave) notation to the player view (instead of or in addition to tabs) is on the roadmap, and VexFlow seems like it be very useful for that.
- mrkstu 7y agoI think stave+tab would be ideal. What little guitar I've picked up has actually been stave notation, but I've got a lot of missing chords in my knowledge base- having the tab right there by the notes/chords would help me master new chords...
- rodw 7y agoActually, as you probably already know, there's a third notation that is commonly used for chords, like these things - https://duckduckgo.com/?q=chord+box&iax=images&ia=images https://duckduckgo.com/?q=chord+box&iax=images&ia=images That's also on the roadmap. Right now FATpick renders chords just like any other set of notes in tablature, which is less than ideal once you have much experience with playing chords at all.
- rodw 7y agoThe graphics are directly rendered on an HTML Canvas. It took a little bit of optimization (and a performance-conscious design to begin with) to get there but it seems to consistently get 60 FPS even with all of the graphics, audio streaming and signal processing. Actually the graphics are the easy part, the bulk of the time in the "inner loop" is in the audio analysis. Not to give away any secret sauce but in my experience naively using `AnalyserNode.getFloatFrequencyData` does not provide adequate performance or even accuracy when under "noisy" conditions. FATpick uses a "proprietary" (custom) pitch detection algorithm, but, other than a few domain-specific insights maybe, there's nothing particularly groundbreaking about it -- it's doing the same kind of things you'll find in academic literature on the topic, just judiciously selected and tuned by endless (and ongoing) lab-testing.
- aleatorisch 7y agoCool project, wish I could try it! Given that it's Electron, is there a reason you don't have a Linux version?
- rodw 7y agoMostly the opportunity cost relative to other things to spend time on. But you're right. It should just work on Linux too. There may be some platform-specific quirks to work out, but you are not the first person to ask for this. If you contact me at rod@<the domain above> or via the form on the website I would be happy to hook you up with a Linux build to try out. If nothing else I could probably offer a not-officially-supported Linux version if enough people are interested in that.
- Nerdfest 7y agoI'm guessing that a few of us would be interested if you could build one. This sounds great.
- aleatorisch 7y agoSweet, thanks! Email sent
- rodw 7y agoJust for future reference for people that come across this thread and would also like a Linux build, there is now a "hidden" and unsupported Linux download available. See https://www.fatpick.com/blog/release-notes-fatpick-v1-4-2-linux https://www.fatpick.com/blog/release-notes-fatpick-v1-4-2-li...