The app looks great, but since no source code is provided knowing that it's made with Flutter and Rust isn't really of much use for anyone (esp. for learning purposes).
There are two Drop D tunings listed and one is actually Drop C. There is no Drop D♭, you call it Drop C♯ which while it's technically the same set of tones, it's now how guitar players think of it. You have the same issue with E♭ Standard. Each of your notes in these tunings are listed as sharps instead of flats, which is not how guitar players think of the notes in these tunings.
Also, you might want to consider polyphonic tuning. That's what would set you apart from everybody else. I bought a TC Electronic PolyTune earlier this year and it's been a game changer. It's much faster and easier to get tuned
Interesting you mention guitarists thinking in terms of flats. Is that rooted in music theory, preference/convention, or something else?
A sibling common mentions "c#, g#, c#, f, g#, c#" which is exactly how I would think of it. I'd guess that without a key signature to reference it doesn't really matter, but I'm a theory novice so curious about this.
In general polyphonic pitch detection is a much harder problem to solve than monophonic. I guess focussing on guitar tuning only rather than trying to transcribe a whole song makes the problem a bit simpler but still is probably a lot more challenging than handling one note a time. Cool feature though, I had never thought of a polyphonic tuner!
As an alternate tuning person I’d love a simple ‘this is the note you are playing’
I hate having to pick the tuning as I just wanna know a c#, g#, c#, f, g#, c#
It's available free (and no ads) for desktop browsers and as a $1 Android app (on mobile needs to be an app for performance reasons and I believe it's a fair price).
While $1 is certainly far less than the value this app provides, it’s going to be a hard sell when there are several free apps which do the same thing.
The movement is really choppy on my iPhone 13 Pro. Did you use requestAnimationFrame for the tuning movement? & CSS animations for switching instruments? Kinda just wondering how the performance could be so bad. Reminds me of PhoneGap circa 2013
I can confirm. It is extremely choppy and resource hungry for what it does. Since they use Flutter, the UI is rendered using 119 canvas elements. The same thing could be implemented using the web platform (no flutter and no rust) with better results.
As an undergrad I made a guitar tuner using a PIC32 microcontroller to do time-series correlation to figure out the frequency (FFT was too slow for real-time) and a state machine embodied in a stratix FPGA to control a stepper motor to turn the pegs. A different era of “mobile app” I guess.
I would love to see the source code, or at least a simplified version. Audio input in rust and rust talking with flutter on mobile device. Such a cool project.
Well, all the Rust crates I've mentioned in other comment have comprehensive examples attached, so it's just a matter of connecting their functionality together :)
Looks very nice, would you tell us a little bit about what you used to build this? I am just getting started with Rust and it would be cool to hear what approach you went and what you would recommend when starting today.
Performance reasons, also wanted it to work on the web (Flutter web support is fairly recent, and dart/flutter libraries don't automatically work on the web, they have to support the platform).
Speaking only for myself, I'm considering Flutter + Rust because I want to write everything in Rust, but there aren't great GUI options for Rust atm. I've heard good things about the rust<->dart bridge so it seems like a reasonable compromise, esp. given the Dart code to write Flutter UIs seems fairly declarative. Hoping to keep most of the logic in Rust and just the view in Flutter/Dart.
I'm looking for JavaScript library that would allow me to build a hobbyist autoharp tuner. I can program the UI, but need a note generator library. It just needs one API function or equivalent: soundNote(noteNum, duration); Note-number is the MIDI note number, and duration is the duration of the note in micro-seconds. (It can be in "beats" when the beat unit is defined via another function.)
Purchased for Android, love Flutter and been trying to learn guitar off/on, so this could be helpful.
Question re: web (where I have not been impressed with Flutter as a platform) - I just get "Failed to start listening thread." I tried both Firefox and Chrome, latest versions.
Side note: Also noticed I can't highlight/copy the text (common usability/accessibility issue with Flutter Web. I believe it's not that hard to allow?)
You may already be aware, but having a small clip-on digital hardware tuner you can use anywhere without involving a phone is a life upgrade if you're playing guitar on a regular basis.
Of course, this is a cool project for more insight into the technologies involved regardless.
If web - well, it sadly requires modern browser on relatively modern hardware - it has some performance problems currently in browsers, I'm not happy about that fact, I am considering improving it if the app catches enough interest.
If Android - please consider returning the app and getting your money back as long as you still can - I'm afraid I won't be able to solve it in quick fashion.
This is pretty handy, though my usual tuning method is to play a pure tone and match to that. Makes getting right there so much easier when you hear the warbling between guitar and tone stop.
This is very cool! Is there a way to contribute or something to have support for ukulele ? I'm just starting to learn the uke and this could be very useful.
I'm planning to create a simpler free version of the app for the sake of cross-promotion, I may open source that one (but I can't make any promises currently, both regarding creating the actual app and open sourcing it).
With the mouse wheel/trackpad. Flutter Web doesn't actually generate proper DOM, instead it renders things (mostly) from scratch, hence no scroll bars.
[+] [-] taraparo|3 years ago|reply
For anyone interested, I found a nice open source tuner for Android https://github.com/thetwom/Tuner
[+] [-] notfed|3 years ago|reply
1. Create closed-source app in some boring language
2. Promote on hacker news as "written in Rust"
[+] [-] bsder|3 years ago|reply
If they release source code, I'll toss them money. Until then, pass.
[+] [-] bibanez|3 years ago|reply
[+] [-] taylodl|3 years ago|reply
Also, you might want to consider polyphonic tuning. That's what would set you apart from everybody else. I bought a TC Electronic PolyTune earlier this year and it's been a game changer. It's much faster and easier to get tuned
[+] [-] huehehue|3 years ago|reply
A sibling common mentions "c#, g#, c#, f, g#, c#" which is exactly how I would think of it. I'd guess that without a key signature to reference it doesn't really matter, but I'm a theory novice so curious about this.
[+] [-] skybrian|3 years ago|reply
So that's out. I wonder what other research has been done into detecting multiple notes at once?
[+] [-] tomduncalf|3 years ago|reply
[+] [-] RHSman2|3 years ago|reply
[+] [-] RHSman2|3 years ago|reply
Please :)
[+] [-] zduny|3 years ago|reply
[+] [-] KMnO4|3 years ago|reply
[+] [-] bicarbonato|3 years ago|reply
[+] [-] munro|3 years ago|reply
[+] [-] panzerboiler|3 years ago|reply
[+] [-] alvarlagerlof|3 years ago|reply
[+] [-] phdelightful|3 years ago|reply
[+] [-] psuedo_uuh|3 years ago|reply
[+] [-] tyingq|3 years ago|reply
[+] [-] zduny|3 years ago|reply
[+] [-] unknown|3 years ago|reply
[deleted]
[+] [-] audio_stuff|3 years ago|reply
[+] [-] zduny|3 years ago|reply
More details on Rust backend:
For listening (getting audio signal from microphone) I used:
- Android: https://crates.io/crates/oboe
- native desktop/iOS (not currently released): https://crates.io/crates/clap
- Web: https://crates.io/crates/web-sys (so basically JS Web Audio API called from Rust compiled to WASM).
For pitch detection:
- https://crates.io/crates/pitch-detection
[+] [-] account-5|3 years ago|reply
Nothing against rust, just interested is all considering the dart/flutter relationship.
[+] [-] zduny|3 years ago|reply
[+] [-] nu11ptr|3 years ago|reply
[+] [-] n4bz0r|3 years ago|reply
[deleted]
[+] [-] tabtab|3 years ago|reply
[+] [-] LocalPCGuy|3 years ago|reply
Question re: web (where I have not been impressed with Flutter as a platform) - I just get "Failed to start listening thread." I tried both Firefox and Chrome, latest versions.
Side note: Also noticed I can't highlight/copy the text (common usability/accessibility issue with Flutter Web. I believe it's not that hard to allow?)
[+] [-] slfnflctd|3 years ago|reply
Of course, this is a cool project for more insight into the technologies involved regardless.
[+] [-] solatic|3 years ago|reply
[+] [-] zduny|3 years ago|reply
Please reply if you would be interested in free promo codes for the Android app, I will post some.
[+] [-] zduny|3 years ago|reply
[all codes have been redeemed]
[+] [-] criddell|3 years ago|reply
[+] [-] tyingq|3 years ago|reply
[+] [-] zduny|3 years ago|reply
If web - well, it sadly requires modern browser on relatively modern hardware - it has some performance problems currently in browsers, I'm not happy about that fact, I am considering improving it if the app catches enough interest.
If Android - please consider returning the app and getting your money back as long as you still can - I'm afraid I won't be able to solve it in quick fashion.
[+] [-] lightedman|3 years ago|reply
[+] [-] iwebdevfromhome|3 years ago|reply
[+] [-] jaywalk|3 years ago|reply
[+] [-] copperx|3 years ago|reply
[+] [-] zduny|3 years ago|reply
It has documentation attached mentioning pitch detection algorithms it implements.
[+] [-] andrewon|3 years ago|reply
I used an iPhone app with similar interface but couldn't find one that's as intuitive on web until this one.
[+] [-] vhanda|3 years ago|reply
[+] [-] zduny|3 years ago|reply
I'm planning to create a simpler free version of the app for the sake of cross-promotion, I may open source that one (but I can't make any promises currently, both regarding creating the actual app and open sourcing it).
[+] [-] Narishma|3 years ago|reply
[+] [-] K0nserv|3 years ago|reply
[+] [-] zduny|3 years ago|reply
[+] [-] tonypags|3 years ago|reply
[+] [-] zduny|3 years ago|reply