Login:
Menu:
Post: Author:
FamiTracker > General > Source and development > So, I'm working on a Linux version of FamiTracker Owner: NukeThePotato New post
Page 1 of 6 Sort: Goto Page: [1] [2] [3] [4] [5] [6] Next >>
So, I'm working on a Linux version of FamiTracker Posted: 2012-06-07 14:27  (Last Edited: 2013-01-03 23:23) Reply | Quote
NukeThePotato

Avatar

Member for: 5087 days
Location: Calgary, AB, Canada
Status: Offline

#35553
Well, it's really more of a set of previews at the moment. They're very WIP. Use at your own discretion.

---

Google Code project page

Downloads
June 7 - Preview 1:
Source (117.1kB)
Source with git tree (1.6MB)
32 bit binary (88.7kB)
64 bit binary (76.0kB)

June 14 - Preview 2 (post)
Source (158.5kB)
Source with git tree (1.6MB)
64 bit binary (6.4MB)

August 2 - Preview 3 (post)
Source (193.9kB)
Source with git tree (2.5MB)
64 bit binary (6.9MB)

January 3, 2013 - Preview 4 (post)
Source (282kB)
64 bit binary (6.7MB)

---

So, a pet project of mine for the past 12 days or so has been trying to port FamiTracker to Linux. Given the entangling labyrinth of source code, I wasn't sure if I would follow through. Well, I decided to try anyway.
This is my first porting project, and doing this port has been a valuable learning experience.

I'm releasing a preview for two reasons.
    • To receive useful and constructive feedback from users and developers
    • To warm people up to a Linux release instead of (completely) surprising everyone in the end.


  • Frequently Asked Questions (by nobody)

    Objectives and todo
    - Get Famitracker running natively on Linux (duh)
    -- Ubuntu/Fedora packages (<1 MB)
    -- Other .tar.gz package, bundled with Qt4 and libstdc++ (~6-7 MB)

    - Build on Windows and OS X. I don't have a Mac, so someone else can do this.

    - Allow use of the player in open source projects

    - Create a command line interface for simple jobs
    -- Exporting to WAV/NSF
    -- Playback
    -- Piping sound to stdout (eg. $ famitracker -p song.ftm | thisprogramplaysaudio)

    - Remote control interface (through named pipe or stdin)

    - PulseAudio, SDL audio, Jack playback

    ---

    I've been using FamiTracker since around 2008 (leisurely), and dabbling into the NES homebrew scene in 2010. I'm not that new to the NES scene, but I've been more of a lurker.
    Also, the wall of text may make it seem like I'm overpresenting this a bit. I'm just being really verbose.

    Anyway, have fun!

    Posted: 2012-06-07 20:49  (Last Edited: 2012-06-07 21:20) Reply | Quote
    PJ

    Avatar

    Member for: 5134 days
    Location: Poland
    Status: Offline

    #35562
    OK, first thing: I'm not familiar with CMAKE, but following your steps exactly like in readme does not work, i can't compile this thing. I tried other directory names(it could be just a typo) but it doesnt work anyway:
    Quote:

    [root@blaszak fami]# mkdir famitracker-bin
    [root@blaszak fami]# cd famitracker-bin/
    [root@blaszak famitracker-bin]# cmake -DCMAKE_BUILD_TYPE=Release ../famitracker
    CMake Error: The source directory "/home/piotrek/Pobieranie/fami/famitracker" does not exist.
    Specify --help for usage, or press the help button on the CMake GUI.
    [root@blaszak famitracker-bin]# cmake -DCMAKE_BUILD_TYPE=Release ../famitracker-bin
    CMake Error: The source directory "/home/piotrek/Pobieranie/fami/famitracker-bin" does not appear to contain CMakeLists.txt.
    Specify --help for usage, or press the help button on the CMake GUI.
    [root@blaszak famitracker-bin]# cmake -DCMAKE_BUILD_TYPE=Release ../Source
    -- The C compiler identification is GNU 4.7.0
    -- The CXX compiler identification is GNU 4.7.0
    -- Check for working C compiler: /usr/bin/gcc
    -- Check for working C compiler: /usr/bin/gcc -- works
    -- Detecting C compiler ABI info
    -- Detecting C compiler ABI info - done
    -- Check for working CXX compiler: /usr/bin/c++
    -- Check for working CXX compiler: /usr/bin/c++ -- works
    -- Detecting CXX compiler ABI info
    -- Detecting CXX compiler ABI info - done
    -- Found ALSA: /usr/lib/libasound.so (found version "1.0.25"
    CMake Error at CMakeLists.txt:58 (setup_libs):
    Unknown CMake command "setup_libs".


    -- Configuring incomplete, errors occurred!




    However, binary works! I tried a few songs and it plays them! Great job so far!
    Edit: I found FTM that causes segfault. It's here. It has engine speed changed, i don't know if that is important.

    And one thing more, this time to forum software authors: this is kind of ridiculous that i get this error:
    Quote:
    Text to long max 50 characters

    just because i respond in this topic and "RE:" part makes title too long :P



    Posted: 2012-06-08 00:04 Reply | Quote
    NukeThePotato

    Avatar

    Member for: 5087 days
    Location: Calgary, AB, Canada
    Status: Offline

    #35565
    PJ wrote:
    OK, first thing: I'm not familiar with CMAKE, but following your steps exactly like in readme does not work, i can't compile this thing.

    Ah. You should create famitracker-bin outside of the directory you extracted all the files in. So, not the same directory as ReadMe.txt, but the one before it. I should have been more specific. (I referred to the 'source' directory as the entirety of the source, not the "Source" directory. Yeah, confusing. ) It's been updated.

    PJ wrote:
    I found FTM that causes segfault. It's here. It has engine speed changed, i don't know if that is important.

    It appears to use the FDS expansion chip (which is unimplemented atm), but it never plays anything from it. So it accesses a channel set to NULL (it doesn't exist) when playing the notes and then segfaults.
    Resaving the file with Internal only (Module -> Module Properties) plays the file.
    Then I found it was going REALLY slow. The player wasn't accounting for the engine speed, so now that's fixed. The binaries are updated.

    PJ wrote:
    And one thing more, this time to forum software authors: this is kind of ridiculous that i get this error:
    Quote:
    Text to long max 50 characters

    just because i respond in this topic and "RE:" part makes title too long :P

    Sucky. The title I was going to give was originally too long, so I made it EXACTLY 50 characters. I knew I didn't need that "So, ". :/


    Attachments:
    metroid_complete_ost_2.ftm (45 Kb)
    Posted: 2012-06-08 02:58 Reply | Quote
    TechEmporium

    Avatar

    Member for: 5894 days
    Status: Offline

    #35572
    It's a good thing that you're making it a terminal program (greater compatibility across all Linux distros,) but do you intend to implement a GUI eventually (i.e.: X-Windows GUI instead of something desktop-dependent)?

    I compiled it under the latest Linux Mint just fine & so far, other than the missing FDS support, it works pretty well.

    Some people do, however, avoid using FamiTracker in WINE entirely & either dual-boot to Windows, or use a VM running Windows (I use VirtualBox & QEmu).

    _______________________
    Technology: the one thing that's hated & cursed at by all engineers, technologists, scientists & technicians!

    (Lousy modern technology! )
    Posted: 2012-06-08 03:16 Reply | Quote
    NukeThePotato

    Avatar

    Member for: 5087 days
    Location: Calgary, AB, Canada
    Status: Offline

    #35573
    TechEmporium wrote:
    It's a good thing that you're making it a terminal program (greater compatibility across all Linux distros,) but do you intend to implement a GUI eventually (i.e.: X-Windows GUI instead of something desktop-dependent)?

    I compiled it under the latest Linux Mint just fine & so far, other than the missing FDS support, it works pretty well.

    Some people do, however, avoid using FamiTracker in WINE entirely & either dual-boot to Windows, or use a VM running Windows (I use VirtualBox & QEmu).

    I'm currently working on a Qt GUI. The terminal playback was for the sake of the preview, but it'll also be in the final product using a flag argument.

    $ famitracker -p ./playsinterminal.ftm
    $ famitracker ./playsingui.ftm

    I have in dev screenshots of the work-in-progress gui. It really doesn't do much at the moment. No editing or anything.


    Attachments:
    screenshot_from_20120607_190940.png (471 Kb)
    Posted: 2012-06-08 14:20 Reply | Quote
    PJ

    Avatar

    Member for: 5134 days
    Location: Poland
    Status: Offline

    #35588
    OK, I managed to compile it. And the metroid ftm indeed plays slow, you updated binary, but not source

    Posted: 2012-06-09 14:27 Reply | Quote
    NukeThePotato

    Avatar

    Member for: 5087 days
    Location: Calgary, AB, Canada
    Status: Offline

    #35625
    PJ wrote:
    OK, I managed to compile it. And the metroid ftm indeed plays slow, you updated binary, but not source

    The sources should have been up to date since the last time I updated them. Try it again. (the readme has the "Create a new directory outside of the extracted directory" bit)

    I should also have a GUI preview up very soon now. For the meanwhile, have a screenshot.

    Screenshot!

    Posted: 2012-06-09 18:40 Reply | Quote
    rainwarrior

    Avatar

    Member for: 5559 days
    Location: Canada
    Status: Offline

    #35627
    I don't use linux, but I think it's really cool that you're doing this. Good effort, Nuke!

    Posted: 2012-06-10 04:21 Reply | Quote
    particlese

    Avatar

    Member for: 5072 days
    Location: US
    Status: Offline

    #35646
    Cool! I will definitely be testing this out tomorrow. I fiddle around with music mostly on Linux, so it would be great to have Famitracker there, too.

    Thank you for working on this!

    Posted: 2012-06-10 04:37  (Last Edited: 2012-06-10 07:29) Reply | Quote
    com63

    Avatar

    Member for: 5697 days
    Location: North Van, BC, Canada.
    Status: Offline

    #35647
    Awesome work! I use OpenSuse 12.1, myself; if you can't build OpenSuse RPMs for it later down the line, I could possibly do it. I've been screwed over in the past by lack of OpenSuse-compatible RPMs.

    Stoked for Jack support.

    I might be able to port it over to the GPH Caanoo, which supports QT, but with some limitations.

    _______________________
    Everything moves real slow when it's 40 below.
    Posted: 2012-06-11 00:25 Reply | Quote
    particlese

    Avatar

    Member for: 5072 days
    Location: US
    Status: Offline

    #35665
    Sounds great so far (tested with multi-song 2a03+VRC6 files), and it was a breeze to compile with whatever dev packages I already had. The commented wave-out works nicely, too. I'm definitely looking forward to the Jack support and to playing around with that .ui file I spy in the screenshot, assuming you decide to keep going with that option.

    I'm trying to come with a question or two to keep things interesting, but that wall of text keeps getting in the way. Keep up the good work!

    Posted: 2012-06-15 06:37 Reply | Quote
    NukeThePotato

    Avatar

    Member for: 5087 days
    Location: Calgary, AB, Canada
    Status: Offline

    #35788
    Update:
    Preview 2 is up! You get the Qt GUI this time. (console player also included)
    Note: The GUI is very incomplete!
    Screenshot

    I'll update the main post with the download links from now on. To also save on walls of text, all other important text will be in the included README.
    A custom compiled version of Qt 4.8.1 is bundled in the binary, and I'm not sure how well it runs on other systems. I think there's a GTK+ dependency for the styling support, but it should still run on a majority of Linux distros. If it doesn't run, let me know what the errors are.
    There's also no 32 bit binary at the moment because cross compiling on Ubuntu is a pain in the ass. However, you can still compile from source.

    Oh yeah, and FDS support!

    JACK support is in the works. It's a biiiit different from ALSA, so it'll take some time to get right.

    To run the binaries, just launch the .sh files.

    Downloads
    Source (158.5kB)
    Source with git tree (1.6MB)
    64 bit binary (6.4MB)

    Posted: 2012-06-15 08:59 Reply | Quote
    zephemeros

    Avatar

    Member for: 5353 days
    Location: Campbell River, British Columbia
    Status: Offline

    #35794
    This is just absolutely amazing. The time you're taking to make this port is very well appreciated, trust me!

    _______________________
    | youtube | soundcloud |
    Posted: 2012-06-15 09:25 Reply | Quote
    Gamma

    Avatar

    Member for: 5225 days
    Location: Alaska
    Status: Offline

    #35796
    I entertained the idea of trying out linux, and came up with a list of software i'd need to be able to use natively in the OS in order to seriously consider the switch. Famitracker was obviously on this list - so, thank you for your efforts!

    Posted: 2012-06-15 18:03  (Last Edited: 2012-06-15 18:10) Reply | Quote
    PJ

    Avatar

    Member for: 5134 days
    Location: Poland
    Status: Offline

    #35806
    Hey, it really works! Great job!

    However, when i move window into another desktop, Control Panel turns off spontaneously - it just disappears, and an option in menu View->Control Panel becomes unchecked. I'm using Awesome WM.

    Also, when window is too narrow and you can't see all five channels, there is no horizontal scrollbar.

    Edit: I just noticed that there were some icons on the screenshots. I don't have any icons, there are just titles.

    Page 1 of 6 Sort: Goto Page: [1] [2] [3] [4] [5] [6] Next >>