FamiStudio NES music editor

Discuss NSF files, FamiTracker, MML tools, or anything else related to NES music.

Moderator: Moderators

Post Reply
bleubleu
Posts: 66
Joined: Wed Apr 04, 2018 7:29 pm
Location: Montreal, Canada

FamiStudio NES music editor

Post by bleubleu » Sat Aug 03, 2019 8:56 pm

Hi!

I took some time in the last few weeks to make a simple NES music editor. It is intended to be more user-friendly than FamiTracker. Its feature set is designed to match FamiTone2, and even has native export to it.
  • Modern DAW-style UI with sequencer and piano roll, no hexadecimal anywhere
  • Full Undo/Redo support
  • Native export to FamiTone2 music format
  • Famitracker text import
  • Basic MIDI input support
  • Low CPU usage (Direct2D for graphics, XAudio2 for audio, fairly well threaded)
  • Runs on top of Blargg's Nes_Snd_Emu.
Update 1.2.0
  • macOS support
  • Extended note range to 8 octaves
  • Volume tracks support
  • Release envelopes & release notes
  • Hi-DPI support (100%, 150% and 200% scaling on Windows, Retina on macOS)
  • Config dialog
  • MIDI improvements (device selection and note release)
  • Improved NSF memory usage
  • Misc bug fixes
Update 1.1.0
  • New export dialog
  • Added WAV export
  • Added FamiTracker Text export (see the wiki for limitations)
  • Added NSF export (see the wiki for limitations)
  • Bug fixes and code refactoring
It is available on famistudio.org.

Here is a quick video tutorial to get you started.

Image

Let me know what you think.

-Mat
Last edited by bleubleu on Fri Oct 18, 2019 8:22 am, edited 6 times in total.

User avatar
koitsu
Posts: 4216
Joined: Sun Sep 19, 2004 9:28 pm
Location: A world gone mad

Re: FamiStudio NES music editor

Post by koitsu » Sat Aug 03, 2019 9:12 pm

Video, documentation, README.md, etc. do not do a good job explaining what file formats this thing *exports* to, nor does it mention what it natively saves as (searching the wiki for "save" turns up nothing, "export" only mentions Famitone2, but then the screenshots mentions NESASM, yet the docs say nothing about available choices). This is probably the most important piece of information, so its omission is kind of weird.

I have friends who are very interested in this -- they're folks who have a lot of difficulty comprehending the tracker-based interface of FamiTracker -- yet with omission of file format export seems like an oversight. They really want .NSF and .NES export capability, understandably.

bleubleu
Posts: 66
Joined: Wed Apr 04, 2018 7:29 pm
Location: Montreal, Canada

Re: FamiStudio NES music editor

Post by bleubleu » Sat Aug 03, 2019 9:49 pm

do not do a good job explaining what file formats this thing *exports* to, nor does it mention what it natively saves as
Thanks for the feedback. Its very hard to decide which features to include in an initial release. You want to get a lot of features in, but you also want to get something out asap so that people can start giving you feedback. Its a trade off.

Right now, it saves as a proprietary file format (*.fms), and exports to FamiTone2 music format (ASM6, NESASM or CA65, does the exact same thing as the tools included with FT2). I plan to add FamiTracker TXT export soon (once you are in the FamiTracker ecosystem, you can export to anything). NSF is more of a long term goal, i wouldn't expect it in the next few weeks.

-Mat

tepples
Posts: 21754
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: FamiStudio NES music editor

Post by tepples » Sun Aug 04, 2019 6:07 am

I'm trying to use your program on a PC running Debian GNU/Linux version 10, codename "buster". I have Wine to run Win32 applications, such as FamiTracker, OpenMPT, FCEUX debugger, and BGB, and Mono to run .NET applications, such as Mesen and Mesen-S. However, its MSI package appears to require the .NET Framework, and Wine doesn't appear to be able to use the system installation of Mono.

Code: Select all

$ wine --version
wine-4.0 (Debian 4.0-2)
$ mono --version
Mono JIT compiler version 5.18.0.240 (Debian 5.18.0.240+dfsg-3 Wed Apr 17 16:37:36 UTC 2019)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
	TLS:           __thread
	SIGSEGV:       altstack
	Notifications: epoll
	Architecture:  amd64
	Disabled:      none
	Misc:          softdebug 
	Interpreter:   yes
	LLVM:          supported, not enabled.
	Suspend:       preemptive
	GC:            sgen (concurrent by default)
$ wine msiexec /i ~/Downloads/FamiStudio1.0.0.msi 
This setup requires the .NET Framework version v4.6.1.
Please install the .NET Framework and run this setup
again. The .NET Framework can be obtained from the
web. Would you like to do this now?
[ Yes ] [ No ]
I can run .NET Framework executables using Mono, but only if they're bare executables, not packed inside an MSI file. Google Search for mono msi file brought me the question "How does one use Mono if you have to install an MSI file first?" on Stack Overflow. Its answer recommends extracting the executables from the MSI file using 7-Zip:

Code: Select all

$ mkdir ~/Downloads/famistudio
$ cd ~/Downloads/famistudio
$ 7z x ../FamiStudio1.0.0.msi
$ ls
'[5]SummaryInformation'             '!File'
'!AdminExecuteSequence'             '!Icon'
'!AdminUISequence'                   Icon._853F67D554F05449430E7E.exe
'!AdvtExecuteSequence'               Icon._C68722421FCC688B85FAE8.exe
'!Binary'                           '!InstallExecuteSequence'
 Binary.DefBannerBitmap             '!InstallUISequence'
 Binary.MSVBDPCADLL                 '!Media'
 Binary.NewFldrBtn                  '!ModuleSignature'
 Binary.UpFldrBtn                   '!MsiAssembly'
 Binary.VSDNETCFG                   '!MsiAssemblyName'
 _CFB98006EDAD3916AB3649C68FE29E89  '!ProgId'
'!_Columns'                         '!Property'
'!Component'                        '!RadioButton'
'!Control'                          '!Shortcut'
'!ControlCondition'                 '!_StringData'
'!ControlEvent'                     '!_StringPool'
'!CustomAction'                     '!_Tables'
'!Dialog'                           '!TextStyle'
'!Directory'                        '!UIText'
'!EventMapping'                     '!Upgrade'
'!Extension'                        '!_Validation'
'!Feature'                          '!Verb'
'!FeatureComponents'                '!_VsdLaunchCondition'
These opaque filenames don't help me understand the structure. I'll assume that one of the largest ones actually contains the executable:

Code: Select all

$ ls -lS | head
-rw-r--r-- 1 pino pino 663000 Aug  4 08:36 _CFB98006EDAD3916AB3649C68FE29E89
-rw-r--r-- 1 pino pino 308480 Aug  4 08:36 Binary.MSVBDPCADLL
-rw-r--r-- 1 pino pino 105056 Aug  4 08:36 Binary.DefBannerBitmap
-rw-r--r-- 1 pino pino  45154 Aug  4 08:36 !_StringData
-rw-r--r-- 1 pino pino  11236 Aug  4 08:36 Binary.VSDNETCFG
-rw-r--r-- 1 pino pino  10248 Aug  4 08:36 !_Validation
-rw-r--r-- 1 pino pino   5356 Aug  4 08:36 !Control
-rw-r--r-- 1 pino pino   4952 Aug  4 08:36 !_StringPool
-rw-r--r-- 1 pino pino   4150 Aug  4 08:36 Icon._853F67D554F05449430E7E.exe
$ file _CFB98006EDAD3916AB3649C68FE29E89
_CFB98006EDAD3916AB3649C68FE29E89: Microsoft Cabinet archive data, 663000 bytes, 12 files, at 0x54 "_01299B527B5AC73A8726542470FB71CC", iFolder 0x1 "_05F2D34326FD7BA9900BC09042467735", 6 cffolders, number 1, 9 datablocks, 0x1 compression
$ 7z l _CFB98006EDAD3916AB3649C68FE29E89
   Date      Time    Attr         Size   Compressed  Name
------------------- ----- ------------ ------------  ------------------------
2018-08-24 05:58:52 .....       274944               _01299B527B5AC73A8726542470FB71CC
2018-08-24 05:59:14 .....        92160               _05F2D34326FD7BA9900BC09042467735
2019-08-04 08:50:44 .....         1113               _0E8D5BE6867142BA88C824E848A44DF4
2019-08-04 08:50:44 .....         7335               _2170D06C2813442491EACBF5C1BB3201
2019-08-04 08:50:44 .....         6764               _29A022B6EE314228BD07A95FFF02AAC0
2018-08-24 05:59:00 .....       148480               _5616854BA49B9742429146EEED13A3C6
2019-08-04 08:50:44 .....         7316               _6802629516074A218C72D553A3E74FED
2019-08-04 10:37:42 .....       388096               _9A90968E7DE1ED1BDE8FAAF5D985BF31
2019-08-04 08:50:44 .....        24576               _A9AC56D0A4C619C24D2B64784FFAB7DC
2018-08-24 05:59:04 .....       495616               _ADD4BCB9277D5C9E405EEAAF846FA4BE
2018-08-24 05:59:08 .....       283136               _DAED96EE0502954FBFAEFAFC2C7DF771
2019-08-04 08:50:44 .....          191               _F91C73742125D3078B90EA1D78DD9BA3
------------------- ----- ------------ ------------  ------------------------
Oh goody, more opaque filenames. Now I'm stuck.

I'd try dual booting into Windows, but this computer never came with an activated copy of Windows. I bought it used off-lease on eBay, and when it arrived, the included copy of Windows 10 could not connect to the volume activation server, presumably because said server wa on a corporate LAN. I looked at the bottom of the case to activate it but discovered that the Certificate of Authenticity containing the product key had been torn off. So on this computer, Debian is all I have. Even on another computer to which I have access, Windows 10 starts up and shuts down so slowly that dual-booting is an ordeal of several minutes. (If you want, I can time it for you.)

How do I go about extracting the executable from the MSI so that I can run it in Mono? Incidentally, I had the same problem of needing .NET Framework in the installer when trying to install Authy for Windows on Linux in order to set up 2-factor authentication on Twitch in order to get my Twitch stream key for use with OBS, and the end result was that I gave up trying to stream on Twitch.

Or how hard would it be to distribute a "portable application" version, which is just the executable in a zipfile? That way I could unzip it and run it using Mono.

User avatar
Banshaku
Posts: 2328
Joined: Tue Jun 24, 2008 8:38 pm
Location: Fukuoka, Japan
Contact:

Re: FamiStudio NES music editor

Post by Banshaku » Sun Aug 04, 2019 8:21 am

Look interesting (saw it on twitter too). Don't know about that way of making music compared to trackers but I hope to give it a try someday ;)

User avatar
gauauu
Posts: 659
Joined: Sat Jan 09, 2016 9:21 pm
Location: Central Illinois, USA
Contact:

Re: FamiStudio NES music editor

Post by gauauu » Sun Aug 04, 2019 4:18 pm

Very cool. I'll play with it later, but it looks like a really nice addition to the tooling that's available. Thanks for releasing this.

bleubleu
Posts: 66
Joined: Wed Apr 04, 2018 7:29 pm
Location: Montreal, Canada

Re: FamiStudio NES music editor

Post by bleubleu » Sun Aug 04, 2019 5:04 pm

tepples wrote: Or how hard would it be to distribute a "portable application" version, which is just the executable in a zipfile? That way I could unzip it and run it using Mono.
Hi!

I'll be honest I don't know any of the implications of trying to run this on anything other than Windows. Since it uses Direct2D and XAudio2, whcih is very much Windows-only tech, I'm not sure it will work.

That being said, I can definitely post a portable executable, the only thing the installer really does is copy the file, do the .fts file association and create a shortcut in your start menu, all of which you can do yourself.

I'll try to post a ZIP tonight.

-Mat

User avatar
tokumaru
Posts: 11466
Joined: Sat Feb 12, 2005 9:43 pm
Location: Rio de Janeiro - Brazil

Re: FamiStudio NES music editor

Post by tokumaru » Sun Aug 04, 2019 6:42 pm

Even though I use Windows, I consider a portable option very welcome, so thanks for doing that. I hope to give your program a try really soon, it looks pretty good!

User avatar
bazza
Posts: 89
Joined: Fri Nov 24, 2017 1:36 pm
Location: Argentina
Contact:

Re: FamiStudio NES music editor

Post by bazza » Sun Aug 04, 2019 7:33 pm

wine, wine, wine...
For when an editor of nes native GNU/linux

User avatar
rainwarrior
Posts: 7677
Joined: Sun Jan 22, 2012 12:03 pm
Location: Canada
Contact:

Re: FamiStudio NES music editor

Post by rainwarrior » Sun Aug 04, 2019 8:18 pm

This looks cool.

bleubleu
Posts: 66
Joined: Wed Apr 04, 2018 7:29 pm
Location: Montreal, Canada

Re: FamiStudio NES music editor

Post by bleubleu » Mon Aug 05, 2019 5:39 am

Or how hard would it be to distribute a "portable application" version, which is just the executable in a zipfile? That way I could unzip it and run it using Mono.
I added a Zip file with everything in it in the release section on GitHub (FamiStudio1.0.0-PortableExe.zip). Best of luck.

-Mat

bleubleu
Posts: 66
Joined: Wed Apr 04, 2018 7:29 pm
Location: Montreal, Canada

Re: FamiStudio NES music editor

Post by bleubleu » Fri Aug 16, 2019 10:07 pm

koitsu wrote:do not do a good job explaining what file formats this thing *exports* to, nor does it mention what it natively saves as
Version 1.1.0 was just released with WAV, FamiTracker and (basic) NSF export support. I hope it addresses your concerns.

-Mat

bleubleu
Posts: 66
Joined: Wed Apr 04, 2018 7:29 pm
Location: Montreal, Canada

Re: FamiStudio NES music editor

Post by bleubleu » Fri Oct 11, 2019 7:19 am

FamiStudio 1.2.0 was just released with macOS support and tons of other good stuff.

Image

User avatar
the_zi
Posts: 8
Joined: Thu Mar 22, 2018 5:44 am
Location: New York
Contact:

Re: FamiStudio NES music editor

Post by the_zi » Tue Dec 10, 2019 7:20 pm

Love it- thank you for all of your work! It's nice to be able to work on my mac and not parallels/famitracker... :evil:

It's amazing you have the same export functionality as FT, but can I put in an import request? Even if it's from a .txt file?

Thanks again and keep up the great work!
Bleep Bop Records
8 Bit Music For The 21st Century

Post Reply