This is the GitHub page of FamiStudio, which is intended for people wanting to view/download the source code or report bug fixes.
If you are simply interested in installing FamiStudio, please visit the brand new famistudio.org or itch.io.
For any questions, you can reach me at [email protected].
All releases are available in the Releases section. If you are on Windows, simply download and run the .MSI installer and a shortcut to FamiStudio will be placed in your Start menu.
On Linux, PipeWire might have issues. In order to fix that, the only known solution is to go into the dllmap(FamiStudio.exe.config
) and remove the target property for libopenal. Make sure you have OpenAL installed on your system!
FamiStudio is composed of a few projects:
- The main FamiStudio application is written in C#.
- NesSndEmu, NotSoFatso, ShineMp3, Vorbis & GifDec are C++ DLLs and are provided as binaries since they rarely change.
- The Setup project (Windows only)
On Windows, Visual Studio 2019 is used for development. The project contains everything, including both DLLs and the Setup project. In you plan to recompile the C++ DLLs, you will need to install C++ support in Visual Studio. The Setup project is built using the "Microsoft Visual Studio Installer Projects" extension which can be installed from Visual Studio in the "Extensions and Updates" menu.
On MacOS, Visual Studio 2019 for Mac is used to compile the main application. The C++ DLLs can be compiled using a little shell script "build_macos.sh" that is located in the each of the folders. No fancy makefile here. PortAudio and RtMidi, which are used for audio output and MIDI input respectively have been pre-compiled using Homebrew and are likely not going to change often. The Application bundle is updated manually at each release.
On Linux, MonoDevelop 7.8.4 (build 2) is used to compile the main application. Much like MacOS, a little shell script, "build_linux.sh" is provided to compile each of the C++ DLLs. No makefile is provided at the moment. OpenAL Soft is provided as a precompiled AMD64 binary with ALSA support, if you recompile your own you will need to replace libopenal32.so or edit the dllmap (FamiStudio.exe.config) to point to the correct library. Same for RtMidi which is provided as librtmidi.so.
On Android, Visual Studio 2019 is used, along with the Xamarin Android assemblies. The C++ DLLs needs to be compiled manually for all 4 architectures (x86, x64, ARM, ARM64) whenever there is a change. We target a minimum version of Android 8.0 (Oreo), so make sure to test features on all versions in between.
I'm hesitant to take unsolicited pull requests. If you want to contribute a feature, please get in touch with me first so we can come up with a plan. This will avoid wasting both your time and mine.
Assuming we agree on a feature to be developed, I expect:
- All features needs to be implemented and tested on all 4 platforms (Windows, MacOS, Linux and Android).
- Testing must include Hi-DPI scaling on Windows (150% and 200%), Retina display on MacOS, 100%/200% on Linux as these have been know to break often.
- Any feature that impacts the music needs to be integrated to all import/export format (FamiTracker, NSF, FTI, etc.)
- Any new feature needs to be added to the NSF driver (including its multi-expansion chip variant) and needs to be toggeable if it has a cost (RAM or CPU cycles).
- New features need to be integrated with any of the 3 unit tests that applies (Sound engine code similarity, NSF import/export and sound emulation tests).
- Documentation needs to be updated as well.
Please open issues contact me if you find bugs or have feature suggestion ideas. You can find me:
- On the NESDEV Forums as BleuBleu
- On Twitter @NesBleuBleu
- On YouTube
- On Itch.io
- On the FamiStudio Discord