I’ve spent over a week with Claude Code on Audio apps via flutter and feel like it’s now a reasonable time to share my experience.
The project
I wanted to revive/port an old music/piano note teaching app I had. That ended up being too complicated due to the game elements and Claude’s lack of visual feedback. So I switched to an app I did in literally 7 days from idea to pushing to the app store to reduce the complexity. This app just synthesized a background noise like white noise or binaural beats, or played a looped audio file like waves crashing. It had a minimal and generated graphics that were just drawn with lots of small fading lines.
Here’s some YouTube videos that show the first few days of live-streaming using Claude code to make this app. And here’s a webapp with some intermediate version of it that’s public but probably has lots of bugs. The android version runs but I won’t put it up until fixing more bugs.
The good
- Flutter worked for both web and android, and web hosting via cloudflare pages was easy and free.
- Claude was able to convert my wave files to ogg.
- Claude was able to more or less understand my abstract and fairly obscure aesthetic of ‘crappy fading short segment lines that emerge and surface some texture’. However, it had a lot of trouble with SVG for the app logo and I had to manually go in there.
- I’ve been trying to digest the CC tips on Hacker News and Reddit. Some people say there is a high learning curve, but I didn’t find that to be the case. Prompting is very important, and talking it for a while to make sure it understands and is ready to go was one thing that was recommended. But in practice I was only able to do that often in the beginning of the project.
- The CLI experience felt like a large step up from IDEs like Cursor or Windscribe. Being able to run arbitrary scripts and commands was very powerful. It was a bit to cautious with asking for permission when I had already granted it. Definitely blows the older copy and paste error coding methods out of the water.
- It was able to do basic DSP including enveloped white noise and binaural beats, porting my example, and normalizing. It struggled a bit with this at first so I was skeptical, but it was not an issue after a little while.
- It’s fun enough to get me over the hurdle of trying out totally new to me frameworks like flutter.
- It was useful for adding extra sounds and graphics to the app once the pattern was established and the code was relatively stable.
The bad
- At many times, it felt like coaching a college intern that knew about a framework that you didn’t. It felt like it would take the easy way out too often, and it definitely does not consider best practices unless they are the easy way. Some HN’ers refer to it as favoring malicious compliance, but I think it’s just trying to go where it can with limited context and attention.
- For this project, doing it by hand would have been faster if I knew flutter/dart, which I don’t. The fastest combination would have been to use Claude to get to the first 70% and then write the rest myself. There’s sooo much time wasted with the cases where Claude keeps a random 80% of the constraints in mind, making it a whack-a-mole thing. For the graphical and audio issues, this was often a problem. The UI was very simple, so that could explain why it wasn’t a problem.
- A lot of this ‘wasted time’ feeling comes from the thought that I made the original app very quickly, in 7 days, including all the iOS app store icon and listing BS that goes with it. However, I should be fair and say that I only spent one or two hours per day on it, whereas when I made the app I was probably putting in 4-8 hours, and I was using an app framework and my own audio libraries that I knew like the back of my hand.
- I hit the limit on my pro account often. Knowing when to clear and compact might be a skill that improves this. The worst part is not knowing how far it had gotten, and being unsure if I should take over manually. It would be hugely useful if you could pay to ‘shake-out’ the last prompt after the limit was exceeded, because you don’t know when it will happen in many cases and you may waste work if you manually take over.
The ugly
- Android setup was a bit painful, due to Claude not being aware of the environment. Worse, Claude constantly forgot about the environment (such as the location of the Android SDK) after I told it multiple times to keep this information, store in a file if you need to, etc. The NDK setup and license accepting in particular took much longer than needed.
- By far the worst issue was that Claude was unable to fix my audio playback bugs. It’s not able to run and test out the app in a CI-like way or even look at the logcat output. Instead, it wrote tests that did not find any issues.
- Claude constantly forgot to stick to the development culture I asked for, with tests, small commits, and definitely running the build/test script before committing a feature. Even with agents, it doesn’t do this unless I ask. This ‘forgetfulness’ bleeds into other areas as well. I want to highlight that this isn’t about context window – it would often forget in the next prompt that was well within the context.
I have some deep learning projects (estimating music quality) that I want to get back to, so I’ll be trying it out on that next, as well as some web scraping apps for bank and brokerage bonuses. At this point it’s useful, but it’s more novel and ‘almost-fun’ than useful. So I don’t feel like buying the $200/mo max plan yet. At the end of the month we’ll see if I renew. I didn’t renew Gemini even though I liked it the first week, so we’ll see. These things usually get better and faster (with the exception of GPT-5 flopping this week), so maybe I’ll have a new framework to try in a couple months.