1 This README file covers the 2005-01-01 pre-release of the Postfish by
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
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?
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
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
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
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
92 30 band -60/+30dB 1/3-octave beat-less EQ per input channel and full
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.
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.
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.
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
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
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
197 Postfish, BTW, is designed to scale to multiple CPUs. A dual
198 Athlon/Pentium/UltraSparc/PowerPC runs Postfish much better than a
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
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
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
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.
294 Happy hacking (and mixing),