pouët.net

TinyFM8

   _________  _                   ________  ____    ____    ____    
  |  _   _  |(_)                 |_   __  ||_   \  /   _| .' __ '.  
  |_/ | | \_|__   _ .--.    _   __ | |_ \_|  |   \/   |   | (__) |  
      | |   [  | [ `.-. |  [ \ [  ]|  _|     | |\  /| |   .`____'.  
     _| |_   | |  | | | |   \ '/ /_| |_     _| |_\/_| |_ | (____) | 
    |_____| [___][___||__][\_:  /|_____|   |_____||_____|`.______.' 
                           \__.'                                                                                       


TinyFM8 Overview
================

What is TinyFM8?
TinyFM8 is an FM synthesizer that is a result of reverse engineering of the 
commercial Native Instruments FM8. This basically means that you get to enjoy
FM8 instrument library that contains 800+ instruments.

Is it legal?
Probably not! FM8 is a commercial tool that was engineered for long time. 
TinyFM8 comes with source code and pretty much revels FM8 secrets. We have 
actually reversed engineered BOTH file formats and actual synth algorithms. 
It is important that you DO NOT DO ANY COMMERCIAL USE WITH THIS!

What's Included?
================
  
  > Binaries Package - http://bit.ly/TinyFM8_binary

    * TinyFM8.dll        - The main FM synthesizer VST. 
                           The VST can be loaded into Renoise (or any other
                           software). Once loaded, you can open TinyFM8 user
                           interface, load/test and adjust instruments using
                           the standard FM8 user interface! (See the VST-IN-VST
                           section below).

    * CompressorFX.dll   - A compression effect VST. This effect can be used in 
                           individual tracks or on master channel. 
                           Apply with care :)

    * ReverbFX.dll       - A reverb effect that VST. Same as the CompressorFX,
                           effect can be applied to a track or to the master
                           channel.

    * RenoiseLoader.exe  - An application that loads Renoise 2.5.1 songs that
                           are based on TinyFM8 VST chain, play them and export
                           header file (MusicData.h). The header file then
                           needs to be included in the executable build.
  

  > Sources Package - http://bit.ly/TinyFM8_source
  
    * ExeMusic          (C++, VS2008) Sample executable music project that 
                        (C++, VS2010) allows you to create tiny executable that
                                      plays music. This code is based on IQ's
                                      64kb framework, but it can easily ported
                                      to other frameworks.

    * SoundRenderer     (C++, VS2010) Sources for SoundRenderer.dll. 
                                      This library is used by all the different
                                      VSTs. It actually contains all the synth 
                                      sound rendering code as well as the
                                      effects code.

    * VST Projects      (C#,  VS2010) All VST projects. This includes TinyFM8, 
                                      ReverbFX and CompressorFX. There are some
                                      supporting libraries such as zlib.net,
                                      VST.net and NRenoiseTools.

    * RenoiseLoader     (C#,  VS2010) Sources for RenoiseLoader.exe 


"VST-IN-VST" - The concept
==========================
To save some time on user interface development we have used a VST-IN-VST
tactic. This basically means that TinyFM8 VST is both a VST client that can be
used by any standard sound studio application that supports VSTs. However, it 
is also a VST host of FM8.dll VST. This allows us to slave FM8 user interface
to our needs. 
So, yes, you actually need FM8 installed in your system but since we're just
using FM8 user interface it is NO LONGER NEEDED once composing stage is done.


FM8 vs. TinyFM8
===============
The main difference between FM8 and TinyFM8 (sound wise) is that TinyFM8 has
sizing coding Considerations in mind, this means that we have chosen to ignore
some FM8 features for the sake of smaller code size.

Features that we have chosen to ignore are:
    * Arpeggiator
    * XY-Pad and Morphing
    * Effects (some will be implemented externally with an additional VST)
    * Expert->Mod (Modulation Matrix)
    * Z filter implementation is a little different.

The bottom line is that not all instruments sound the same in FM8 and TinyFM8,
some are worst and some are actually better. You actually get compare between 
FM8 and TinyFM8 by playing with the <SCROLL LOCK> key.

SCROLL LOCK key allows you to select between the sound sources (that is
Original FM8 vs. TinyFM8 sources). In general use FM8 just for reference.
   
   
Renoise 2.5.1 - Is it a must?
=============================
No, you can you use the VST(s) with any sound application that support VST.
However, if you wish to eventually create an executable music, you should:

  1. Use Renoise 2.5.1
  2. Compose music (Avoid using: effects, tempo changes, automation)
  3. Load your song using RenoiseLoader and export it to MusicData.h file.
  4. Open and Build the ExeMusic.sln project.


Can I use TinyFM8 in my demo?
=============================
Absolutely! TinyFM8 has everything you need to incorporate in you demo/intro.
The main features are:
  * Small size footprint about few kb.
  * Interleaved music and instrument data (for better compression)
  * Deep and configurable buffering
  * Syncing, events and triggers are provided
  * Application-Abstraction-Layer that allows you to mount sound renderer into
    your existing framework (current it's connected to a modified version of IQ
    64k Framework). See FM8_AppAbstractionLayer.h for details.
  

Requirements and installation
=============================
  * Unless you have VS2010 installed - You MUST install the both the following:
    .NET4     http://msdn.microsoft.com/en-us/netframework/aa569263.aspx
    VC Redist http://www.microsoft.com/en-us/download/details.aspx?id=5555
    
  * Install FM8.
    Please mind that not all FM8 versions use the same file format. 

  * Install Renoise 2.5.1
    Again, it is best if download the torrent.

  * Install VSTs
    Just unpack TinyFM8-bin.rar to some random folder and make sure Renoise is
    directed to it. 
    
    When TinyFM8 VST starts the first time it will ask you to locate FM8.DLL. 
    Assuming FM8 a standard next-next-next FM8 installation, file will be 
    located in "c:\Program Files (x86)\Native Instruments\FM8\VSTPlugins".

Thanks To:
==========
  * AtomDelta      - For help all along they way --- THANKS!
  * bacter/spd^apx - For help with testing and the awesome sample songs
  * knl            - For help with pre-release testing
  * Razior         - For help with pre-release testing
  * IQ/RGBA        - For releasing his 64kb framework
  * @lx/requency   - For his great project: NRenoiseTools 

Final words
===========
This project has been a baby of mine for some time now. I decided to release 
it to the public as part of recent demoscene source bombs that keep dropping. 

In general, I have future plans for this synth to make it into a 4kb friendly 
version. this will probably happened only after I'll release a demo I have 
been working for some time now.

Couple of requests: 

First, any suggestions, bugs fixes, improvements, ideas or whatever are really
really welcomed.

Second, I'm always interested in adding sample songs to the package. so, please
share your songs if manage to produce something nice. 

Love you all,
JohnD.demoscene@gmail.com