
Jsfxr Pro
Retro sound effects generator
Yesterday I soft-launched Jsfxr Pro to the launch email list and this morning I woke up to the first genuine subscriber signing up.

I've been experiencing hardcore imposter syndrome for the past few days as I put the finishing touches on the app. My strategy was to ignore the feeling and power forward. Now that several people have signed up and I have one paying customer, the feeling is slowly dissipating.
I have a huge number of things to do on the TODO list today. Back to work!

5 Comments
5 Comments
Hey Indie Hackers!
Welp, the code is done. I've deployed the beta. I've sent the link to testers. I've warmed up the Jsfxr Pro launch list. This little sound effects generator is ready to roll.
This is my 4th time around the round-about. It's my 4th time building a micro-SaaS from scratch to completion and then shipping. I learned a lot from the first three attempts, and from various other projects, and I think this one has a real chance at becoming a sustainable business.
My business hypothesis for this project is simple: eyeballs == $$$. I finally got this simple fact through my thick engineering skull: if nobody sees your thing, nobody will buy your thing. So many indie hackers struggle with this. We focus on the building and hand-wave away the distribution and marketing plan. Then when the code is done we move on to the next thing without even telling anybody about what we made. That's insane!
One simple metric helped me understand the impact of eyeballs (i.e. marketing): revenue-per-visitor. One day I gathered together all the stats from the different things I've made and I worked out this number for each project. All I had to do was divide the total revenue for each project by the total number of visits to that project's page.
The results varied wildly. The games I made had the lowest revenue per visitor. For the games to be sustainable I would have to get a huge number of eyeballs on them. One of my other micro-SaaS projects had a very good revenue-per-visitor number, but the problem was the visitor number was low. In the sweet spot were my music and audio apps. They have a reasonable revenue-per-visitor and just enough visitors to be making a steady bit of side income.
Once you know the revenue per visitor you realize there are two ways of increasing total revenue. You can either increase the ratio, so you get more revenue for each visitor, or you can increase the total number of visitors. Increasing the ratio is generally done by optimizing conversions and pricing. Increasing the visitors comes down to marketing.
With Jsfxr Pro I am going for the latter strategy. I am focusing on the denominator, the "per visitor" part. I run a free version of Jsfxr at https://sfxr.me which gets more than ten thousand hits per month. A lot of those visitors come from search. My basic hypothesis is that with a denominator that high and a Pro product that is at least as good as my previous audio apps, I should see higher revenue. Basically, the distribution channel is already flooded with visitors and I am just inserting a Pro product into the stream.
I'm launching in a few days, so let's see how it goes. The site is in beta right now and I have sent the link out to testers. Once final beta testing is done I'll be launching and will post an update here. I'm excited to see if my hypothesis pans out!
Thanks for reading. π

Comment
Jsfxr Pro is so close to being done. This week I want to finish the final dev tasks leading up to launch:
- Finish the end-to-end tests. There are just a couple more to write so the app is fully tested from signup to creating sounds and offline sync.
- Integrate Google Auth. Approximately 1/3rd of the signups on the launch list are using Gmail. They will probably want to log in with Google. I am using Passport JS for auth and there is a plugin so hopefully this won't take too much effort.
- Email checkbox on the accounts page, and unsubscribe fixes so that people can manage their email preferences. I plan to only send critical product updates, but some people may not even want those, so I need to give them an easy way to opt out.
- Trackback handler. I need to fix this in the underlying Sitefox framework. I want any errors that happen on the site to get emailed to me immediately. It would be good to aim for zero defects.
There are now 233 people on the launch list. I would like to begin launch preparations next week by emailing them. If I get all the dev work done this week then I can do that.
It's Monday in my timezone. Let's go!

Comment
Work continues apace on Jsfxr Pro. After a year of development I am down to the polishing tasks and getting ready for launch. \o/
Yesterday I added more end-to-end tests, fixed a bug, and modified the sound effect rendering engine to make sure it always returns the exact same sound deterministically.
Today I continued work on the e2e tests to get ready for testing the sync code. I also warmed up the email server with the help of a few friends and delivery was 100%.
Deterministic rendering
The underlying library Jsfxr has long had this problem where it uses Math.random() when rendering any sound effect built on noise (as opposed to a e.g. a squarewave). What this means is each time you render a noise based sound effect it comes out slightly different.
I fixed this using David Bau's wonderful seedrandom.js module. Now the (render-sound sound) function replaces the global Math.random() function temporarily with a deterministic one seeded on the sound effect's b58 representation, which is unique to each sound.
End to end tests.
The Jsfxr Pro codebase has both unit tests and end-to-end tests. In the past I have not been that big on tests but they have really been handy on this project. They help me make sure any datastructure changes are watertight so nobody loses any data. Already the tests have saved my bacon several times when a change in one part of the app has broken something in the other part.
I'm using Microsoft's Playwright framework to implement the end-to-end tests. It's neat watching them run:

Comment
According to git log, Nov 8th 2021 was the day Jsfxr Pro was started. The original free tool sfxr.me had been online for many years and gets thousands of visitors each month.
I started Jsfxr Pro by building a simple landing page explaining the new features, and an email form so that people could sign up to be notified of the release. I linked it from the popular free tool and waited to see how many people would sign up.

Comment
About
Thousands of people use Jsfxr every month. The pro version brings exciting new features like creating sound packs for use in games and game jams.





Comment