Hacker Newsnew | past | comments | ask | show | jobs | submit | agourlay's commentslogin

Veritasium published a great video on the topic. https://www.youtube.com/watch?v=ZMQbHMgK2rw


I think right around the time when I watched his video, I got my risc-v CPU inside an FPGA working, including interrupts. I was very hyped about building such a mouse with it, just to prove to myself that my CPU can actually do something "real". It don't need to be the fastest, lightest, smallest, but a small robot that can solve a maze would be cool.

Then I tried to lay things out and realized how much more work that'd be, so I dropped the project (for now).

One day I'll build one though! It's only a matter of years, I think.


Wow, these mice were a lot faster than I expected. In the last part of the video, they talk about fans in the mouse that suck the mouse to the ground to prevent slipping.


The first time the video shows a mouse, I was annoyed by them showing a very clearly sped up recording, which made it difficult to follow. Only later it dawned on me that it's real time, not sped up.



The McMurtry car just doesn't look real at all going round Goodwood

https://www.youtube.com/watch?v=5JYp9eGC3Cc


So does the Wikipedia article.


FYI my focus is solely playing tabs and I do like keyboard shortcuts :)

What kind of shortcuts would you be interested in?


Of the top of my head:

- Play / stop

- Increase / decrease speed

- Go to next section / riff / verse / chorus [1]

- Loop this phrase / riff / verse / chorus

- Turn off drums / bass / guitar tracks (i.e. isolate)

- Switch to click track mode[2]

[1] It'd be great if I could annotate part of the tab as a riff, phrase, or other section, give it a name, and then loop, repeat, jump around amongst riffs in a song (or even multiple songs).

[2] I've always wanted the ability to play a section of the tab as clicks (not notes), just to be able to hear and feel the intended rhythm of a section.


TBH I have no Windows machine to test this release binary.

However I can share with you the release script if you want to double check https://github.com/agourlay/ruxguitar/blob/master/.github/wo...


Thanks for the kind words!

What do you mean exactly by "general purpose tab player"?


Thanks for the heads-up, I was not aware of this.


Hey author here :)

Happy to answer any questions.


Why did you think Rust was the right tool for the job, and why not a language with a GC?


Rust is the language I am the most proficient at this point, so it was a natural choice for me.

Tuxguitar is written in Java and works perfectly fine TBH, even if Rust has clear advantages for high performance software it does not matter that much in this context.


Why would one prefer a language with a GC?

Iced is a great library if you are willing to put in the effort to learn it (as it's new and documentation is still mostly limited to examples)


> Why would one prefer a language with a GC?

One thing less to worry about.


Everything is a tradeoff. Iced is blazing fast, with a low memory footprint (~30MB binary), cross platform, extensible and pretty elegant if a bit challenging to learn.


Your job is to make your users happy. If you spend 2x the amount of time to build a blazing fast UI compared to a normal speed UI, then the question is if you maybe had better spent the time on things your users wanted, like features. Features are not everything, but code that is faster than necessary (or has lower memory footprint) just doesn't bring much to the table from the user's perspective, especially for UI programs. If you were writing an OS kernel or a browser, then maybe (probably even) Rust is a better choice.


> the question is if you maybe had better spent the time on things your users wanted, like features.

That question is for the author of the software alone to decide how they want to build their own software.


For audio software like this, using a GC-free language translates into reliable, stutter-free, low-latency playback, particularly on lower-power devices. A lot of JavaScript-based audio things I've tried, even really simple ones, become miserable experiences once GC pauses start consuming a lot of CPU. I think it's no surprise that GC'd languages are unpopular for audio applications!


But then you should also run it on a realtime OS.


No, why would you? Normal OSes are pretty good at doing reliable audio playback and recording, musicians wouldn't use them otherwise. They don't guarantee five-nines but who cares. They are unlikely to ruin your audio experience.


Yeah? Well, you know, that's just like uh, your opinion, man.


You just said that everything is a trade-off yourself ...


Awesome work! It would be super cool if this could somehow run as a WASM module. Was thinking I would then try to include it in Freetar [0], for example so it can be used to play the tablatures on a page like this: https://freetar.de/tab/joni-mitchell/a-case-of-you-chords-95...

[0] https://github.com/kmille/freetar/


Thanks, I did not know about Freetar!

TBH I have a lot of things to improve before thinking about this kind of interop.

But feel free to create an issue :)


Thanks for the great write-up. I've got an iced application that I wrote 3 years ago, and this has given me the motivation I needed to go update it


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: