Convert tabs to spaces. Remove accidently committed debug line
[xiph/unicode.git] / postfish / README
blobe99fcd735d2219c792c40d14304d8210ef247293
1 This README file covers the 2005-01-01 pre-release of the Postfish by
2 Xiph.Org.
4 >>>> What is the Postfish?
6   The Postfish is a digital audio post-processing, restoration,
7   filtering and mixdown tool.  It works as a linear audio filter, much
8   like a rack of analog effects.  The first stage of the filter
9   pipeline provides a bank of configurable per-channel processing
10   filters for up to 32 input channels.  The second stage provides
11   mixdown of the processed input audio into a group of up to eight
12   output channels.  The third stage applies processing filters to the
13   output group post-mixdown.
15   The Postfish is a stream filter; feed it audio from a list of files
16   or input stream, and it renders audio to standard out, as well as
17   optionally providing a configurable audio playback monitor via a
18   sound device.  If the input audio is being taken from files,
19   Postfish also provides simple forward/back/cue seeking and A-B
20   looping control.  The next major update of Postfish will also
21   include automation to allow mixdown settings to be 'recorded' and
22   applied automatically during rendering.
24 >>>> What is the Postfish for?
26   The Postfish intends to include exactly and only the most useful
27   basic filters needed to produce a good mixdown from audio recorded
28   'in the field'.  The filter set also comprises the fundamentals
29   needed for master mixdown in a small studio.  It is not an editor;
30   for that reason, it is intended to be used with an audio editor such
31   as Audacity.
33   If, for example, you've just multi-tracked a rehearsal of your
34   troupe's current rock opera and the Director then appears out of
35   nowhere (they always do) and says "Have a mix ready for my review by
36   morning", the Postfish is all you need.
38   Or, as another example, you've recorded for a band who'd like to put
39   out a CD of the live performance...  All the band FX are already in
40   the multi-track, so the Postfish plus Audacity is all you need.
42   In a studio, tracks usually get recorded dry, so there's generally
43   multiple mixdown stages of adding effects.  Postfish (obviously)
44   does not give you a large array of instrument or situation-specific
45   effects and it never will.  What it does give you is the effects
46   necessary to take the tracks from earlier mixing and produce preview
47   mixes and final masters.  Of course, if you already have $100k of
48   analog rack... you likely won't be using Postfish.  If you don't
49   have that rack already, Postfish means you won't need it.
51 >>>> What effects does the Postfish include?
53 Declipper:
55   The Postfish declipper is a 'build audio from scratch'
56   reconstruction filter. Any section of audio exceeding a configured
57   amplitude threshold is marked 'lost' and the filter builds new
58   audio to fill the gap. In this way it can be used to repair both
59   digital clipping that occurred during sampling, as well as analog
60   clipping that may have happened at an earlier stage.
62 Single-band compander:
64   A single-band compander is used to compress, limit, expand, or gate
65   an input signal, thus providing basic dynamic range manipulation
66   abilities.  
68   The Postfish single-band compander provides independent over and
69   under threshold controls for each channel, each providing expansion,
70   compression, attack, release, lookahead and soft-knee configuration
71   for three independent over, mid and under tracking filters.  Each
72   filter may also be configured to track by peak, or track by RMS
73   energy.
75 Multi band compander:
77   The Postfish multi-band compander is similar to the single-band
78   compander above, and provides all of the same controls with an
79   addition: each over/under threshold is configurable by full-octave,
80   half-octave or third-octave bands, for up to 30 bands of independent
81   companding for each of 32 input channels and the group of eight
82   outputs.
84   The multi-band compander includes a global 'mid' compand slider,
85   like the single-band compander.  This slider acquires a new use in
86   multi-band mode however, where it can flatten or expand the dynamic
87   range of an entire channel (or the entire recording) without
88   any artifacts.
90 Equalization:
92   30 band -60/+30dB 1/3-octave beat-less EQ per input channel and full
93   output group.
95 Deverberator:
97   Live recordings have a tendency to end up with too much reverb,
98   especially when one is forced to use ambient miking.  The
99   deverberator dries out overly 'wet' live signals.  Also good for
100   taking unwanted room echo out of speech recordings.
102 Reverberator:
104   ...for adding reverb to signals that are too 'dry', especially to
105   even out apparent stage depth when mixing close miked signals (like
106   vocals) to an ambient-miked signal.
108   The Postfish provides a stereo reverb per input channel and a mono
109   reverb per output post-mix.
111 Limiting:
113   Simple, old-fashioned causal output hard-limiter to avoid unexpected
114   digital clipping on the output.  Configurable by threshold, knee
115   depth and release speed.
117 Mixdown:
119   Postfish provides both a master attenuation and delay panel (which
120   places these basic sliders for all channels on one window) as well
121   as per-input mixdown that allows each input channel to be multiply
122   routed to one or all of eight output through an additional cascade
123   of four additional independent attenuation/delay/invert units per
124   input, as well also allowing each input to be mixed through a
125   'crossplacer'.
127   The crossplacer is used to place any input into a stereo [or
128   greater] image by altering not only the relative attenuation across
129   channels (the 'cross attenuate' control), but also by adjusting
130   phase and delay across channels (the 'cross delay' control).  The
131   A-B slider then controls how far the input apparently images toward
132   the A output bank or the B output bank.  
134   The direct mixdown blocks allow additional manual control over the
135   input->output matrix; the direct mixdown blocks run in parallel with
136   the crossplacer and all may be active simultaneously.
138   Of course, with eight output channels, one can begin
139   imaging/mastering for more than just stereo...
141 >>>> Don't we already have several free apps that do this sort of thing?
143   The short/wrong answer is maybe. The complicated answer is no.
145   .) I needed a specific set of filters
146   .) I needed them in one place working together 'out of the box' 
147   .) I needed to instantly hear changes I made to settings as I made them
148   .) I needed to be able to absolutely trust the filters 
149   .) I needed it all to be convenient to use
151   Given my specific requirements, nothing else came close to filling
152   the niche and I didn't want to cobble together a 90% solution out of
153   multiple other apps when this functionality was the very core of
154   what I needed for mixdown.
156   Both the Postfish UI and the filter functionality are intended to be
157   the most usable day-to-day set, rather than sporting the maximum
158   number of buttons in the smallest space, pack in more features than
159   the next app, or sport the slickest 'skin'.
161   Postfish is the way it is because I need it, and I use it for the
162   core basics of mixing that I absolutely cannot afford to screw up.
163   Some filters (like the declipper and deverberator) are unique.  Even
164   among those that aren't, Postfish deliberately sets speed/quality
165   tradeoff much higher than most existing apps.
167   The multiband compander is a case in point; other free apps
168   implement this effect. To my knowledge, all use the simplest/fastest
169   method, operating directly on the FFT of a windowed block.  An
170   FFT-based multicompander is fast, but the aliasing and frequency
171   multiplication artifacts (you eventually end up multiplying the
172   input by the transfer function of the window shape; most noticeably,
173   they tend to cause odd pitch changes in raw vocals) render them
174   unsuitable for professional-quality work.
176 >>>> What does the Postfish require?
178   .) Linux 2.x (ports come later) with OSS or ALSA OSS emulation
179   .) Libraries: FFTW3, pthreads, Gtk2
180   .) Gcc and gmake
181   .) A sound card or external USB/Firewire A/D/A
182   .) A video card, preferrably one with fast AGP
183   .) Alot of CPU.  Really.  As much as you can throw at it.  Dual Xeon 3GHZ?  
184      Yup, you can use all of it.
186   Seriously, this is a very CPU hungry app because of the
187   aforementioned speed/quality tradeoff.  I can do simple mixdown of 8
188   channels to stereo with a few effects in realtime on my G3-400, but
189   the machine is crying.  My dual Athlon 2600 keeps up much better,
190   but it's still possible to overwhelm it by lighting up all the
191   effects and feeding it enough input channels.  The declipper,
192   especially, eats CPU on heavily damaged audio.  The multiband
193   compander is runner up in 'absurd levels of CPU usage'.  If you
194   don't have fast AGP video, the EQ panel alone will probably kill
195   your machine.
197   Postfish, BTW, is designed to scale to multiple CPUs.  A dual
198   Athlon/Pentium/UltraSparc/PowerPC runs Postfish much better than a
199   single processor.
201 >>>> Why is this a pre-release?
203   Because it's not finished.  A few things are more obvious than others:
205   1) A number of panels are still unimplemented.  These are the only
206      inactive features on the UI, but they're right on the main panel.
208   2) Postfish *should* be a JACK-able app, but isn't.  That too should
209      be done for a real release.
211   3) Although the whole thing is designed as a rendering engine
212      wrapped up in a neat async-safe library that's then used by an
213      asynchronous UI, the source isn't entirely arranged that way.  It
214      should be.  It will be for final release.
216   4) This code is just now seeing light of day.  It is probably *full*
217      of simple bugs.  I'm confident in the audio pipeline itself (I've
218      hammered on it mercilessly) but there's certainly many UI
219      interconnection bugs left to find.
221   5) The automation robot isn't there yet.  Right now a user has to
222      frob knobs in realtime to make settings adjustments during a
223      render.  That's not really acceptible.  All teh setttings changes
224      must be preprogrammable; they will be.
226   6) Everyone knows a release requires documentation.  There is no
227      documentation.
229 >>>> There's no documentation!?
231   Not yet; good documentation requires effort and time.  
233   That said, if you read the list of effects, knew what they were, and
234   knew basically how to use them, you should be able to pick up the
235   Postfish and do useful work in a few minutes of playing around.
237   I took care to establish and follow conventions in the UI: If you're
238   using the shipped postfish-gtkrc theme, square blue buttons turn
239   things on.  Triangular blue buttons pop configuration windows.  
241   (If you're running a nonstandard system-wide Gtk2 'theme' that skins
242   a set of custom widget renderers into Gtk, well, I'll let you deal
243   with figuring the convention out as I use a number of custom widgets
244   subclassed from 'stock' Gtk and so you'll see a mixmash of classic
245   Gtk and your skin.  Sorry, no way around it other than to purpousely
246   defeat your 'theme' which you probably won't like either.)
248   The grid of buttons on the right in the 'channel' frame are the
249   effects for the input channels.  The square blue buttons turn a
250   specific effect on for a specific channel.  A triangle pops the
251   configuration for that effect.  Mixing controls are labelled
252   "Atten/Mix" in the lowest row in the "channel" panel.
254   Further right is the "master" panel; these controls work the same
255   way for effects on the output channels after mixdown.
257   Finally, postfish -h will tell you how to get audio in and reroute
258   audio out.
260   Only two things are probably impossible to figure out just from
261   an afternoon of playing around:
263   1) When Postfish starts for the first time, all input channels are
264      mixed into the center of a two channel output.  If, for example,
265      the input is already two stereo channels and the output should be
266      the same, the proper mixdown configuration is to go to the
267      mixdown panels for channel 1 and channel 2 and then set input
268      channel 1 to mix only into output channel 1 and input channel 2
269      to only output channel 2.
271   2) Turning "Atten/Mix" off for any channel will mute it completely
272      in all input effects, not just in the mixdown (this obviously
273      doesn't affect output, but it also silences all the VU meters for
274      that input channel, and that can be disconcerting if you don't
275      expect it).
277 >>>> How do I get, build and install it?
279   Postfish is in Xiph.Org's Subversion repository.  Get the source using:
281     svn co http://svn.xiph.org/trunk/postfish postfish
283   Edit the Makefile to select the proper 'ADD_DEF' line.  LinuxPPC
284   users want the first, almost everyone else wants the second.  It
285   should be self explanatory given text in the Makefile.
287     cd postfish
288     make
290   and as root,
292     make install
294 Happy hacking (and mixing),
296 Monty
297 TD, Xiph.Org