================================
PuavoHard Intro Music Composer 3
--------------------------------

Welcome to the world of intro music.
With PHPIMC3 you can easily create music for your 4k intro.
Start with the songs and instruments that comes with this and see how they work.

PHPIMC3 supports:
- Additive synthesis
- FM synthesis
- Four oscillator types (sine, saw, square, noise)
- Six effects (delay, flange, low-pass, high-pass, resonance, overdrive)
- Eight channels and unlimited oscillators and effects per channel.
- Envelopes
- WAV export
- C++ code export

========================
Using song in a 4k intro
------------------------

NOTE: The example songs included in this package are not meant to be used in 4k.
They are too big for 4k intros. Try to use less oscillators and effects in your songs!

You can generate c++ code easily from your song.
Open the song and select file -> export -> c++
A notepad window opens immediately with the exported code inside.
Copy the first part of the code - Defines - into ImcSongDataDefines.h
Save the rest of the file in ImcSongData.cpp

Then you need to add these and the rest of the files into your project.
You can find the needed files from the "cpp" folder.

Add the following into your main cpp file.:
  #include "ImcSongApi.h"

And add to your main function:
  ImcSongPlay();

If you wan't to track the song position, add a global variable:
  TImcSongPos songPos;

And add to your main loop:
  ImcSongUpdatePos(songPos);
  
Link the program with winmm.lib.

That's all. The player plays the song immediately without any precalc.

You may want to see and try ExampleMain.cpp in the "cpp" folder.

=================
Optimization tips
-----------------

There are few ways to reduce the size of the exported c++ code.

- Use contiguous pattern numbers in a channel.
  For example, do not use pattern number F if you don't use pattern E.
  If you use a pattern number F, the exprter exports all the patterns
  from 1 to F.

- Use resonance instead of low-pass.
  The resonance effect includes a low-pass effect.
  If you use both effects then the compiled player will contain code
  for both effects. If you don't use an effect the unused effect code
  will be removed from the compiled player code.

- If you are creating a 4k intro, use crinkler to pack it.
  When doing so, don't link the standard c library with it if possible.
  The song player contains a sine (ImcIntSin) and random (ImcRand)
  functions that can be used anywhere in your code.


