How was Famistudio born?
I was working on my little NES homebrew game project and reached a point where I needed audio. I had created myself little tools for basically everything else: sprites, animations, tilesets, levels, etc. The audio was one aspect of the project where I just was going to use off-the-shelf tools/library. I just did not feel like spending any time on sound. FamiTone2, the audio library I was planning on using supported importing directly from FamiTracker, seemed perfect.
But then I started trying to make music in FamiTracker and I just could not. Don't get me wrong, I understand how trackers work, I am a programmer, hexadecimal does not scare me in the slightest. In a lot of ways, trackers feel a lot like programming. But the whole paradigm just did not match with how my brain thinks of music.
I immediately started working on a tool.
Unlike my other little tools that are not publicly available and are specific to my game.
I decided that I would share this one.
What was development like?
Being a graphics programmer, I decided that I would try to make something that is visually pleasing and that would feel very smooth to the user. I tried to make something that would be as far from trackers as possible: nothing that looks like a Linux terminal, no hexadecimal anywhere.
I went with C# for development speed, with a Direct2D backend for hardware-accelerated graphics. This allowed me to get a buttery-smooth, 60 fps UI, even on relatively modest hardware. For audio, I stood on the shoulders of giants and used Nes_Snd_Emu Blargg's Audio Libraries by Blargg. I had very accurate NES audio emulation out of the box and was written by a pillar of the NES Dev community.
The first version came together extremely quickly. In about 6 weeks I had something that basically did the job for what I needed. The "eureka" moment came when I managed to recreate the little MegaMan jingle that plays when you select a stage
I could see the notes on screens creating harmonies, it made sense to me.
I thought I was done after that. I had everything I needed for my game. I put the project up on GitHub, tweeted to my 50 followers and called it a day
Sound up! Version 1.0.0 of FamiStudio is available on GitHub. Check it out! https://t.co/v5inc5TMPM #nesdev #nes #nintendo #8bit #famitracker #famistudio #chiptune pic.twitter.com/C1vK8aAi5b— NesBleuBleu (@nesbleubleu) August 4, 2019
But by some mystery of social-media algorithms, the tweet got over 100K views.
And then people started to ask for more features... More export format, audio expansions, MacOS, Linux, etc. And here we are, almost exactly a year later.
What did you learn about yourself through this project?
This is not so much something I learned about myself, but rather about maintaining an open-source software. This is my first experience and it has been very eye-opening.
What people don't seem to realize (and I sure did not before embarking on this project) is that open source devs have day jobs and spend their evenings and weekends working on their games and apps. I found that a lot of people seem to take this for granted and will outright demand features that would take dozens of hours of developments, after using the app only 5 minutes.
Lesson: be nice to your open-source devs, support their patreons, report small bugs, get involved in their community first, then ask for improvements. Not the other way around! :)
What makes this project special?
[I think I partially covered this in other questions, let me know if you disagree]
How does the sound play a role in a game?
[I don't have a strong opinion on sound, see next question].
How does music play a role in a game?
Music, especially for NES games where graphics are extremely limited, is super important. The limited graphics of the NES are not enough, at least with modern eyes, to convey much emotion. It's just a bunch of pixels.
But the music (along with the gameplay, of course) can get you to keep going after you got knocked out in Punch Out! can make a new area feel threatening like in Castlevania, or can help you maintain that perfect rhythm in Ninja Gaiden.
A modern example of this is Undertale. The game has the most basic graphics, most of it being in black and white, and is an absolute emotional roller coaster.
What games influenced this one the most?
All the classics: MegaMan, Castlevania, Zelda, Metroid, etc. Being a kid from the early 80s, these were my evenings and weekends.
Any fun stories or wild moments during development?
Not really. I did work on FamiStudio all over the place though. NSF export was mostly added during a flight to Indonesia. Most of the slide notes and VRC6 support were coded during a trip to Oman. FDS support was partially done on a boat during a diving trip.
Do you think preserving older gameplay mechanics in new games is important?
[Not super related, ill pass if you don't mind].
What's your favorite memory in chiptunes?
[I'll pass, not sure people care about my childhood :)]
Who will enjoy this application the most?
FamiStudio was initially designed for NES homebrewers in mind, with built-in support to export to the various formats they might need for their project. Yet, it received a rather underwhelming reception from the NES dev community. To this day I am not aware of a single homebrew game using it in their audio pipeline.
Hardcore chiptune artists that master trackers have no use for it. They completely master the tracker paradigm, they have been using them for 15+ years and the tool itself is not an obstacle to their creativity. Switching to FamiStudio would be a downgrade in their workflow. The best tool is still the one you know best.
On the other hand, the less experimented members of the chiptune community and the indie developers seemed very intrigued by it. But this community does not care about all the quirks and limitations of the NES console, or emulation accuracy. They just want to make bleeps and bloops. "Why can't I control the volume on the triangle channel?", "Why can't I play 2 notes at the same time?" they ask.
In a nutshell, FamiStudio tries to walk the fine line between what NES homebrewers might need, and what chiptune artists or indie devs want, and yet seem to fail at satisfying both. I am obviously half-joking here, but there is a lot of truth in this.
Bottom Line, why must someone try this tool over their current?
The area where I'm hoping FamiStudio find a niche is for people like me: people who always wanted to make chiptune or a simple game, but found themselves paralyzed looking at trackers. People who never understood why learning hexadecimal was a requirement to make chiptune.
How do you want Famistudio to be remembered?
[Sounds a bit pretentious to want to be remembered for a GitHub app, ill skip this one if you don't mind! :)]
Linux support was just added, which was the final platform that was still not supported. I'm very happy with how the port turned out. The Linux community is small, but they really get being you when they see developers trying to port their stuff to the OS they like. A lot of people volunteered to test early builds, gave feedback, etc.
I think we have a pretty complete package now. I want to let the app mature a bit, see if we can get the community to grow, take their feedback and focus on stability as well as little quality of life features.
I am dying to get back to my little NES game. I put it on hold for a year now. I will need to find a way to split my time between two projects from now on.