10 ms·
Playing guitar tablatures in Rust
- DoctorWhoof 2y ago[flagged]
- metaketa 2y agoOwner of https://parture.org https://parture.org here; we should work together. Nice work!
- kej 2y agoThis looks like a cool project, but I notice the date at the bottom is from 2020. Presumably it's still alive if you're posting about it, but how alive is it? (If you're comfortable sharing)
- metaketa 2y agoThe website has indeed not been redeployed since then, but the Rust stack currently has the following and is still under development every day: - decentralized server node for hosting scores - sheet music rendering in browser using WASM with Rust port of VexFlow - multiplayer live score editing using custom Rust CRDT impl - search through node's data based on facets like duration, instruments, difficulty, tuning, etc (Meilisearch) - MIDI playing through soundfonts and RustySynth - parsing/importing of Guitar Pro files using Rust-port of pyguitarpro - AI assistant for editing scores using LiveKit, ElevenLabs etc - support for creating different sheet music editor sites using the WASM core for the frontend And more to come.
- javier123454321 2y agoSuper cool, great job. Looks like a really fun project. This really highlights why sheet notation is so much better at describing music than tablature. The advantage of tabs is that they tell you which version of the same note to play (You can play the same note in up to 6 places in the guitar). However, sheet notation tells you precisely the duration of each note, and can often include the intended articulation. Writing music is fascinating, here is an excellent breakdown of different systems which have been developed, and how they came to be: https://www.youtube.com/watch?v=Eq3bUFgEcb4 https://www.youtube.com/watch?v=Eq3bUFgEcb4
- kjkjadksj 2y agoThe biggest advantage of guitar tabs is you don't need to be able to read music. You just need to know how to count. The timing is a non issue as most people will try and learn the song with a tab and a recording of the song.
- javier123454321 2y agoWhich is funny if you presume it is true that tabs precede standard notation (and therefore recording techniques). Tabs make quite a bit of sense in a post recorded music culture. However, the information density you can get in standard sheet notation is far greater. There's tradeoffs.
- kjkjadksj 2y agoPowertabs or guitar pro files fix the tradeoffs at least. You get the sheet music for all instruments, tab, and midi instrument backing tracks to listen to in one view. And a metronome.
- bossyTeacher 2y agoFor most people using tabs, the additional information is not needed as you are most of the time not aiming for an identical replica of the song. You might play it slower or faster, different key, remove sections, etc
- kjkjadksj 2y agoOn the other hand I think tabs actually do strive to be an actual replica of a song. That's why there are so many versions of the same tab that broadly sound the same, from people trying to get as close as they can by ear to the recording.
- nickserv 2y agoTablature does precede standard notation, by hundreds of years. In fact tabs are older than guitars and were heavily used for lute music.
- destructuror44 2y ago> Since TuxGuitar appears to be unmaintained The development of TuxGuitar has recently resumed https://github.com/helge17/tuxguitar https://github.com/helge17/tuxguitar
- agourlay 2y agoThanks for the heads-up, I was not aware of this.
- agourlay 2y agoHey author here :) Happy to answer any questions.
- amelius 2y agoWhy did you think Rust was the right tool for the job, and why not a language with a GC?
- throwadobe 2y agoWhy 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)
- amelius 2y ago> Why would one prefer a language with a GC? One thing less to worry about.
- throwadobe 2y agoEverything 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.
- amelius 2y agoYour 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.
- clwg 2y agoI clicked hoping to see Smoke on the Water mentioned, and there it was right at the start.
- bazzargh 2y ago30 years ago (oh dear, that's got to be too long?) I wanted to print out a bunch of guitar tab from OLGA (the online guitar archive, probably kicked off the net many times since?), but that ascii format meant that when you shrank it to try to fit more on a page, you just ended up with empty space. So I wrote this https://ctan.math.utah.edu/pub/ctan/tex-archive/support/pstab/manual.pst https://ctan.math.utah.edu/pub/ctan/tex-archive/support/psta... (linking to the manual not the code - the manual is itself a program using the code I wrote to do the formatting) - a thing for formatting guitar tab that _ran on our Apple LaserWriter_, because we had pretty much nothing else that could do graphics. I learned postscript to write this, and because I needed to do some diagrams for my PhD, and wrote it in a week... so it's rough. But after the first couple of days I realised, that not only could I get it to format tab typed in the format I could type quickest, but I could get it to parse the ascii tab and reformat it to fit on a page, with nicely drawn lines not minus signs. It also does stuff like printing verses with chords annotated, chord tables, and suchlike. I recall going back to this 10 or 15 years later and the output in ghostscript was fugly, but at the time, I got a message from someone who'd used it to publish a book of banjo music in New Zealand - because it was the only thing that handled variable numbers of strings that he'd found! Of _purely historical_ interest, I wouldn't recommend plumbing the code for any insights, since like I say I was very new to the language, and the stuff I wrote in the manual with my opinions about code are fairly embarrassing. But hey, the past is past.
- homarp 2y agohttps://www.chnm.gmu.edu/digitalhistory/links/cached/chapter7/link7.64.OLGA.html https://www.chnm.gmu.edu/digitalhistory/links/cached/chapter... has the history of OLGA https://archive.org/details/olgaarchive https://archive.org/details/olgaarchive has a snapshot
- aanet 2y agoFantastic project! I loved it. The blog post is informational, and the video is impressive. I dont know nearly enough Rust to understand fully how it was developed, but as a guitar enthusiast who primarily uses tabs to learn new songs/tracks, I love this project! Would love to see how this can be extended for general purpose tab player. That would be awesome. Thanks!
- agourlay 2y agoThanks for the kind words! What do you mean exactly by "general purpose tab player"?
- buildsjets 2y agoI sure do wish that there was an open source alternative to Rocksmith+ that would allow you to play tabs from Ultimate Guitar in a Rockband like presentation format, with scoring and learning tools like repetition and speed-up intervals. RS+ is great for quickly memorizing new riffs and songs, but when they discontinued RS2014, they cut over to a yearly subscription service, AND made it incompatible with the tens of thousands of user-notated songs created with the old API. Just a lot of back catalog stuff now. My 8yo niece is so disappointed she can’t use it learn Taylor Swift songs on the little Strat Mini I gifted her.
- kej 2y agoThe previous version still works and has a decent collection of (user made) Taylor Swift songs, though, doesn't it? Why not just use that?
- adrianh 2y agoTry Soundslice (https://www.soundslice.com/ https://www.soundslice.com/), which has an speed training feature (https://www.soundslice.com/help/en/player/basic/286/speed-training/ https://www.soundslice.com/help/en/player/basic/286/speed-tr...). It's not gamified like Rocksmith, but it's got an excellent learning and practice interface — for _any_ music you throw at it. You can import tabs you find online in various formats, and we recently added a PDF scanning feature as well. There's also a built-in tab editor. Also, it works for sheet music (i.e., not just tabs), so you can use it with any instrument or voice that uses common western music notation. (I help make the site — happy to answer questions)
- Ylpertnodi 2y agoUnder 'plans', what does "Number of slices you can create" with a 'tick' instead of a number, mean. *getting back into guitar, am taking a look, thanks.
- Ylpertnodi 2y ago*replying to self. On desktop, columns are 'unlimited'.
- nrjames 2y agoAs somebody learning guitar and focused on fingerpicking... One of the things that bugs me about Ultimate Guitar tabs is that there are many places where it would help me better to learn to read the tabs if the relevant chord were displayed over the measures/notes. I'm not sure where you are going with your project, but I thought I'd just mention this since I spend a lot of time deciphering the tabs just to figure out what chord position my hand should be in.
- kazinator 2y agoChord symbol, or chord shape? I'm guessing the latter, because that would tell you: put the left hand fingers in these places, and most of the rest of the tab for that measure would just be which of those notes you pick.
- nrjames 2y agoNo, I really just want the chord name: C, F#, G/B, etc.
- nsguy 2y agoA lot of tabs do have them... Also you're not always picking notes from a chord, though I guess often you are.
- Ylpertnodi 2y agoYou always are [picking notes from a chord]...or purposely omitting them. c e g b d f a = CMaj13. Missing/ 'passing' notes - c# g# d# f# a#.
- nsguy 2y agoBut that's not useful. So you're saying just put on a CMaj13 grip for playing anything in a scale to the OP? On your 7 string guitar? EDIT: Also you have to be missing at least one note... CMaj7 had 4 notes + 13 ... c e g b + a (the 13th) so CMaj7/13 Add 4 ? The OP (as I understand it) was wanting to be able to know what shape/grip to use for picking the relevant notes... I'm sure it can be done but you have to also find the position and reasonable shapes that fit the notes in the bar.
- ethagnawl 2y agoAs someone who has been dabbling with both guitar and Rust for a few years, this is very exciting. I'm looking forward to reading this post in full and digging into the app. It's also the second time that iced has caught my attention today. The first was when I ran into an issue installing sniffnet on a new machine and had to revisit the docs. This led me to iced.rs and I eventually wound up playing with the Halo shader edit for a bit. It looks like a nice library and I'm itching to give it a try.
- throwadobe 2y agoThe very recently written pocket guide available at https://docs.iced.rs/iced/ https://docs.iced.rs/iced/ is both a great little crash course on the library and a bit of an admonition. The disclaimer should really help either make you salivate to dive in or stay away entirely, depending on what you're looking for.
- hnuser435 2y agoWatch the sparrow falling Gives new meaning to it all If not today nor yet tomorrow Then some other day
- syngrog66 2y ago[flagged]
- 01HNNWZ0MV43FF 2y agoThere's an edition every three years, so in the next six months we'll get a nice Rust 2024 fad :)
- orliesaurus 2y agoThis is awesome, I sorta gave up learning/playing guitar because of the software tax. I can't wait to give this a try!
- deleted 2y ago[deleted]
- tempodox 2y agoSadly, those ASCII charts do nothing for me. I find them even worse than sheet music. At least I know how to read a sheet.
- deleted 2y ago[deleted]
- pipeline_peak 2y ago_ in Rust
- myhnews 2y agoWindow Defender don't allow the download of this file: ruxguitar-x86_64-pc-windows-msvc.zip. Detected trojan : Script/Phonzy.B!ml False positive ?
- agourlay 2y agoTBH 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/workflows/release.yml#L42 https://github.com/agourlay/ruxguitar/blob/master/.github/wo...
- titzer 2y agoNeat project! I've been using TuxGuitar for years and I hate the UI so much. The ergonomics around basic functionality like "loop this section" and "speed up / slow down the tempo" are so bad. I feel like it was designed by people who are only interested in writing tabs. The user experience for practice is so crappy. I'm sitting here with a guitar in my lap and I absolutely cannot be bothered to navigate some really poorly-laid out drop down menus just to do basic stuff. I want to have keys on the keyboard do all the basic stuff so it's just a single tap with one hand. I looked into TuxGuitar's Java source...it's incredibly complicated for what it does. I literally had no idea how I'd alter to make it better or even extract part of it to make my own UI. If the author reads this: more power to you! And one thing that would be very useful is to make the font REALLY BIG so that players can read it very easily. Squinting at TuxGuitar's default tiny font size sucks so much.
- pixelesque 2y agoSounds like you haven't really looked into TuxGuitar.... You can set custom keyboard shortcuts for most menu items, and setting loop and repeat points is pretty easy in my experience...
- agourlay 2y agoFYI my focus is solely playing tabs and I do like keyboard shortcuts :) What kind of shortcuts would you be interested in?
- titzer 2y agoOf 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.
- miquong 2y agoTabs seem like they'd be great training material for LLMs and generative music. Does anyone know of projects attempting this? Update: looks like some papers got into it last year: Rock Guitar Tablature Generation via Natural Language Processing: https://arxiv.org/pdf/2301.05295 https://arxiv.org/pdf/2301.05295 GTR-CTRL: Instrument and Genre Conditioning for Guitar-Focused Music Generation with Transformers: https://arxiv.org/abs/2302.05393 https://arxiv.org/abs/2302.05393
- TylerE 2y agoI don’t see how they’d be easier than midi.
- bjourne 2y agoYou may find this site interesting: https://folkrnn.org/tune/119105 https://folkrnn.org/tune/119105 Thing is tabs and other kinds of notation only capture a small part of the composition, often just the melody. So to generate "real" polyphonic music you need other kinds of data.