Home

Awesome

FAOSDance GitHub Last Commit Build Status Maintainability

A stand-alone, free and open-source and extendable implementation of the Fruity Dance plugin from FL Studio.

Table Of Contents

Notice: As of v0.33.8-alpha, FAOSDance has an auto-updater. It'll handle downloading new versions for you.

Downloads
LatestGitHub Releases (by Release)
GitHub Releases (by Release)
GitHub Releases (by Release)
GitHub Releases (by Release)
GitHub Releases (by Release)
GitHub Releases (by Release)
GitHub Releases (by Release)
GitHub Releases (by Release)
GitHub Releases (by Release)

Comparison With Fruity Dance

Fruity Dance (Official Plugin for FL Studio)FAOSDance (This Program)
InterfaceFruityDanceFAOSDance
ProsShips with a top of the Image line DAWFree, stand-alone and more customizable, has a config file, completely scriptable
ConsRequires owning (paid or trial) and running FL StudioCons Coming Soon
<details> <summary> <b>Not sold yet?</b> </summary> <i>How about now?</i>

FAOSDance At Its Best

This is with the following extensions; Auto Action, Blend, Colour Overlay (rainbow), Filter (blur) and Shake

</details>

Basic Usage

Setting Up

Running On Start-Up

If you want to run the program on start-up, you can using a couple scripts. These will find the latest version of the program in a directory and run it. It's a good idea to add a config, so it starts up without a prompt window.

Using The Config

The easiest way to use the config is to change your settings in the UI and then click the "Save Configuration" button. But if you want to edit the raw config as text, or share it, find your data directory using Finding Your App Data Directory, then open the "config.toml" file.

Config Options

OptionDescription
sprite.sheet(String) The path to the sprite sheet name to use, without any extensions
sprite.action(String) The action to start play through
sprite.fps(Integer) The amount of delay between each frame
sprite.opacity(Double) The opacity of the sprite
sprite.visible(Boolean) Whether or not the sprite is visible
sprite.solid(Boolean) Whether or not the sprite can be clicked and dragged
sprite.always_on_top(Boolean) Whether or not the program stays above other windows
sprite.scaling_type(Enum) The kind of scaling used for the sprite
animation.play(Boolean) Whether or not the animation is playing
animation.rewind(Boolean) Whether or not the animation is playing backwards
animation.frame(Integer) The current frame of animation
location.x(Integer) The location of the window along the X axis
location.y(Integer) The location of the window along the Y axis
rotation.z(Integer) The rotation of the sprite
size.width(Double) The width of the sprite
size.height(Double) The height of the sprite
reflection.visible(Boolean) Whether or not the reflection is visible
reflection.padding(Double) The amount of padding (centered) between the sprite and the reflection
reflection.fade.height(Double) The amount of the reflection hidden, from the bottom up
reflection.fade.opacity(Double) The opacity of the reflection
extensions.enabled(List (String)) A list of extension names to be enabled

Config Examples

[sprite]
sheet="path/to/file/without/extensions"
action="Zitabata"
fps=26

[size]
width=1.0
height=1.0

[reflection]
visible=false
[sprite]
sheet="path/to/file/without/extensions"
action="Held"
opacity=0.94

[size]
width=1.0
height=1.0

[reflection]
visible=false

[extensions]
enabled=["Spin"]

Extending The Program

The program can be extended with scripts written in the Ruby language. The scripts can be found in the settings UI under their own tab, where information and settings for each script can be found.

Using Scripts

Warning: Scripts can run any arbitrary code, always check scripts before using them!

To add new scripts, you'll need to follow Finding Your App Data Directory, then put the scripts in the "scripts" directory.

Writing Scripts

To begin writing scripts, you should probably have a basic understanding of the Ruby language, Swing (specifically the Graphics2D class) and object-oriented programming.

Beyond that, here are some general steps to set up a script:

If you get stuck, there are some example scripts here.

Finding Your App Data Directory

Windows

The easiest way to find this directory by typing "%APPDATA%" into the File Manager or search bar.

Linux

GUI (Nautilus and forks)

First, open your file manager if it isn't already, then show hidden files from the View menu. Then go to home, and .config.

Terminal

First, fire up your terminal if it isn't already, then type; "cd ~/.config". If your terminal doesn't support tilde notation, then type this instead; "cd $HOME/.config".