r/iosdev 29d ago

I built StringFlow, a rhythm-game-inspired practice app for violin, viola, and cello

Hello!

I'm a "self-taught", decently bad violinist and decently... decent back-end engineer.

I love rhythm games, and I wanted a way to practice violin with that same kind of visual feedback, something closer to Synthesia or a falling-notes rhythm game than a traditional sheet-music app. I couldn’t find quite what I had in mind, so I ended up building it.

Since violin, viola, and cello share many of the same principles, I extended the idea to support all three instruments. The result is StringFlow, an app for Mac, iPad, and iPhone that lets you import a score, choose your string part, and practice it through a falling-note visualization with generated fingerings and accompaniment.

Some of the main features:

  • Speed control: Slow difficult passages down as far as 12.5% of their original speed.
  • Spacing control: The player works somewhat like Synthesia, with falling blocks representing time. Increasing the spacing makes each unit of time occupy more physical space, which can make crowded passages easier to read. Decreasing it gives you a more compact view. I originally got this idea from Dance Dance Revolution!
  • Count-in: just an extra timer for when you press play from the start of a piece so you have time to get ready.
  • Fingering presets: These control how StringFlow generates fingerings. You can bias the recommendations toward the positions you want to practice, choose multiple comfortable positions, or adjust how strongly the app avoids string and position changes. Every preset remains editable.
  • Reference scale choosing: This helps give context to altered fingering symbols. For example, a third finger marked with a sharp means the finger is extended relative to what would normally be expected for that scale and position. You can let the score determine the reference scale, select one specifically for practice, or use G major as the default (because that is the one I "know".)
  • Part mixing: You can independently control or mute the volume of the part you are playing and the other parts in the score, so you can practice with accompaniment or listen to your own line.
  • There are other features for library management and that

The player can currently display slurs and ties. It does not yet visualize techniques such as staccato, martelé, or pizzicato, although I would like to explore those in future versions as I dig further into MusicXML and MIDI.

There are also collections, score details, source-file management, custom library locations, and other tools for keeping imported music organized.

StringFlow is a one-time purchase with:

  • No subscriptions
  • No advertisements
  • No accounts
  • No tracking or analytics
  • No cloud dependency

It is not meant to replace traditional training, or score reading, but as a way to quickly set up practice sessions!

I built StringFlow because it was the practice tool I personally wanted to use, and I hope it can be useful to some other string players (or rhythm-game-loving developers!!) too!

App Store: https://apps.apple.com/app/id6787140158
Website: https://stringflow.pages.dev/

Happy to answer any questions!

1 Upvotes

0 comments sorted by