[xiph-cvs] r6779 - trunk/postfish

xiphmont at xiph.org xiphmont at xiph.org
Fri May 28 23:23:22 PDT 2004



Author: xiphmont
Date: 2004-05-29 02:23:22 -0400 (Sat, 29 May 2004)
New Revision: 6779

Added:
   trunk/postfish/README
Log:
Forgot this earlier somehow.

<p><p>Added: trunk/postfish/README
===================================================================
--- trunk/postfish/README	2004-05-29 06:19:37 UTC (rev 6778)
+++ trunk/postfish/README	2004-05-29 06:23:22 UTC (rev 6779)
@@ -0,0 +1,300 @@
+This README file covers the 2004-05-29 pre-release of the Postfish by
+Xiph.Org.
+
+>>>> What is the Postfish?
+
+  The Postfish is a digital audio post-processing, restoration,
+  filtering and mixdown tool.  It works as a linear audio filter, much
+  like a rack of analog effects.  The first stage of the filter
+  pipeline provides a bank of configurable per-channel processing
+  filters for up to 32 input channels.  The second stage provides
+  mixdown of the processed input audio into a group of up to eight
+  output channels.  The third stage applies processing filters to the
+  output group post-mixdown.
+
+  The Postfish is a stream filter; feed it audio from a list of files
+  or input stream, and it renders audio to standard out, as well as
+  optionally providing a configurable audio playback monitor via a
+  sound device.  If the input audio is being taken from files,
+  Postfish also provides simple forward/back/cue seeking and A-B
+  looping control.
+
+>>>> What is the Postfish for?
+
+  The Postfish intends to include exactly and only the most useful
+  basic filters needed to produce a good mixdown from audio recorded
+  'in the field'.  The filter set also comprises the fundamentals
+  needed for master mixdown in a small studio.  It is not an editor;
+  for that reason, it's intended to be used with an audio editor, such
+  as Audacity.
+
+  If, for example, you've just multi-track recorded a rehearsal of
+  your troupe's current rock opera and the Director then appears out
+  of nowhere (they always do) and says "Have a mix for my review by
+  morning", the Postfish is all you need.
+
+  Or, as another example, you've recorded for a band who'd like to put
+  out a CD of the live performance...  All the band FX are already in
+  the multi-track, so the Postfish plus Audacity is all you need.
+
+  In a studio situation, tracks usually get recorded dry, so there's
+  generally multiple mixdown stages of adding effects.  Postfish
+  (obviously) does not give you a large array of instrument or
+  situation-specific effects and it never will (dammit).  What it does
+  give you is the effects necessary to take the tracks from earlier
+  mixing and produce intermediate mixes and final masters.  Of course,
+  if you already have $100k of analog rack... you likely won't be
+  using Postfish.  But hey, who knows....
+
+>>>> What effects does the Postfish include?
+
+Declipper:
+
+  The Postfish declipper is a 'build audio from scratch'
+  reconstruction filter. Any section of audio exceeding a configured
+  amplitude threshold is marked 'lost' and the filter builds new
+  audio to fill the gap. In this way it can be used to repair both
+  digital clipping that occurred during sampling, as well as analog
+  clipping that may have happened at an earlier stage.
+
+Single-band compander:
+
+  A single-band compander is used to compress, limit, expand, or gate
+  an input signal, thus providing basic dynamic range manipulation
+  abilities.  
+
+  The Postfish single-band compander provides independent over and
+  under threshold controls for each channel, each providing expansion,
+  compression, attack, release, lookahead and soft-knee configuration
+  for three independent over, mid and under tracking filters.  Each
+  filter may also be configured to track by peak, or track by RMS
+  energy.
+
+Multi band compander:
+
+  The Postfish multi-band compander is similar to the single-band
+  compander above, and provides all of the same controls with an
+  addition: each over/under threshold is configurable by full-octave,
+  half-octave or third-octave bands, for up to 30 bands of independent
+  companding for each of 32 input channels and the group of eight
+  outputs.
+
+  The multi-band compander includes a global 'mid' compand slider,
+  like the single-band compander.  This slider acquires a new use in
+  multi-band mode however, where it can flatten or expand the dynamic
+  range of an entire channel (or the entire recording) without
+  any artifacts.
+
+Equalization:
+
+  30 band -60/+30dB 1/3-octave beat-less EQ per input channel and full
+  output group.
+
+Deverberator:
+
+  Live recordings have a tendency to end up with too much reverb,
+  especially when one is forced to use ambient miking.  The
+  deverberator dries out overly 'wet' live signals. 
+
+Reverberator:
+
+  ...for adding reverb to signals that are too 'dry', especially to
+  even out apparent depth when mixing close miked signals (like
+  vocals) to an ambient-miked signal.
+
+  The Postfish provides a stereo reverb per input channel and a mono
+  reverb per output post-mix.
+
+Limiting:
+
+  Simple, old-fashioned causal output hard-limiter to avoid unexpected
+  digital clipping on the output.  Configurable by threshold, knee
+  depth and release speed.
+
+Mixdown:
+
+  Postfish provides both a master attenuation and delay panel (which
+  places these basic sliders for all channels on one window) as well
+  as per-input mixdown that allows each input channel to be multiply
+  routed to one or all of eight output through an additional cascade
+  of four additional independent attenuation/delay/invert units per
+  input, as well also allowing each input to be mixed through a
+  'crossplacer'.
+
+  The crossplacer is used to place any input into a stereo [or
+  greater] image by altering not only the relative attenuation across
+  channels (the 'cross attenuate' control), but also by adjusting
+  phase and delay across channels (the 'cross delay' control).  The
+  A-B slider then controls how far the input apparently images toward
+  the A output bank or the B output bank.  
+
+  The mixdown blocks can also be configured to take as input not only
+  the input channel, but also each channel's left (A) or right (B)
+  reverb output.  For example, reverb left can be mixed to the left
+  output, the reverb right mixed to the right channel and the original
+  input crossplaced somewhere between left or right.  The input
+  placement can be altered on the fly thus apparently moving the
+  input's location while the impression of space the reverb creates
+  holds still. For even more realism, adding an additional delay of 10
+  ms or so to the reverb (sound travels roughly one meter in 3 ms) can
+  pull the original image closer without losing the impression of
+  reverberation in a medium-to-large hall.  A reverb delay also allows
+  the use of a faster/tighter reverb time without losing the
+  the impression of size.
+
+  Of course, with eight channels, one can begin imaging/mastering for
+  more than just stereo...
+
+>>>> Don't we already have several free apps that do this sort of thing?
+
+  The short/wrong answer is maybe. The complicated answer is no.
+
+  .) I needed a specific set of filters
+  .) I needed them in one place working together 
+  .) I needed to hear changes I made to settings as I made them
+  .) I needed to be able to absolutely trust the filters would function 
+     as expected 
+  .) I needed it all to be convenient to use
+
+  Given my specific requirements, nothing else came close to filling
+  the niche and I didn't want to cobble together a 90% solution out of
+  multiple other apps when this functionality was the very core of
+  what I needed for mixdown.
+
+  Both the Postfish UI and the filter functionality are intended to be
+  the most usable day-to-day set, rather than sporting the maximum
+  number of buttons in the smallest space or more features than the
+  next app (or the slickest skin).  
+
+  Postfish is the way it is because I need it, and I use it for the
+  core basics of mixing that I absolutely cannot afford to screw up.
+  Some filters (like the declipper and deverberator) are unique.  Even
+  among those that aren't, Postfish as implemented deliberately sets
+  speed/quality tradeoff much higher than most existing apps.
+
+  The multiband compander is a case in point; other free apps do
+  implement this effect. To my knowledge, all use the simplest/fastest
+  method, operating directly on the FFT of a windowed block.  An
+  FFT-based multicompander is fast, but the aliasing and frequency
+  multiplication artifacts (you eventually end up multiplying the
+  input by the transfer function of the window shape; most noticeably,
+  they tend to cause odd pitch changes in raw vocals) render them
+  unsuitable for professional-quality work.
+
+>>>> What does the Postfish require?
+
+  .) Linux 2.x (ports come later) with OSS or ALSA OSS emulation
+  .) Libraries: FFTW3, pthreads, Gtk2
+  .) Gcc and gmake
+  .) A sound card or external USB/Firewire A/D/A
+  .) A video card, preferrably one with fast AGP
+  .) Alot of CPU.  Really.  As much as you can throw at it.  Dual Xeon 3GHZ?  
+     Yup, you can use all of it.
+
+  Seriously, this is a very CPU hungry app because of the
+  aforementioned speed/quality tradeoff.  I can do simple mixdown of 8
+  channels to stereo with a few effects in realtime on my G3-400, but
+  the machine is crying.  The dual Athlon 2600 keeps up much better,
+  but it's still possible to overwhelm it by lighting up all the
+  effects and feeding it enough input channels.  The declipper,
+  especially, eats CPU on heavily damaged audio.  The multiband
+  compander is runner up in 'absurd levels of CPU usage'.
+
+  Postfish, BTW, is designed to scale to dual CPUs.  A dual
+  Athlon/Pentium/UltraSparc/PowerPC runs Postfish much better than a
+  single processor.
+
+>>>> Why is this a pre-release?
+
+  Because it's not finished.  A few things are more obvious than others:
+
+  1) The 'cue sheet' and 'settings list' panels are still
+     unimplemented.  These are the only inactive features on the UI,
+     but they're right on the main panel.
+
+  2) Postfish *should* be a JACK-able app, but isn't.  That too should
+     be done for a real release.
+
+  3) Although the whole thing is designed as a rendering engine
+     wrapped up in a neat async-safe library that's then used by an
+     asynchronous UI, the source isn't entirely arranged that way.  It
+     should be.  It will be for final release.
+
+  4) The stereo reverb code used by Postfish is Steve Harris's GPL
+     plate reverb from LADSPA.  Although this is a solid, reliable
+     reverb implementation, it's also a bit thinner on final output
+     results than I'd like.  Don't get me wrong, this reverb is
+     excellent code, but it places emphasis more toward 'fast' rather
+     than my desired 'best possible results given unlimited CPU'.  I'm
+     evaluating other reverb implementations; this is a case where
+     others have achieved clearly better results than I would, and
+     thus I plan to use the best available to me.
+
+  5) This code is just now seeing light of day.  It is probably *full*
+     of simple bugs.  I'm confident in the audio pipeline itself (I've
+     hammered on it mercilessly) but there's certainly many UI
+     interconnection bugs left to find.
+
+  6) Everyone knows a release requires documentation.  There is no
+     documentation.
+
+>>>> There's no documentation!?
+
+  Not yet; good documentation requires effort and time.  
+
+  That said, if read the list of effects, knew what they were, and
+  knew basically how to use them, you should be able to pick up the
+  Postfish and do useful work in a few minutes of playing around. 
+
+  I took care to establish and follow conventions in the UI: If you're
+  using the shipped postfish-gtkrc theme, square blue buttons turn
+  things on.  Triangular blue buttons pop configuration windows.
+ 
+  The grid of buttons on the right in the 'channel' frame are the
+  effects for the input channels.  The square blue buttons turn a
+  specific effect on for a specific channel.  A triangle pops the
+  configuration for that effect.  Mixing controls are labelled
+  "Atten/Mix" in the lowest row in the "channel" panel.
+
+  Further right is the "master" panel; these controls work the same
+  way for effects on the output channels after mixdown.
+
+  Finally, postfish -h will tell you how to get audio in and read
+  audio out.
+
+  Only two things are probably impossible to figure out just from
+  an afternoon of playing around:
+
+  1) Output from a reverb effect in the "channel" panel is sent to a
+     separate internal stereo bus.  The reverb has to be explicitly
+     mixed into the output on a 'mix' panel.  When postfish starts for
+     the first time, the default setup mixes one side of the reverb
+     pair back into left or right.
+ 
+  2) Turning "Atten/Mix" off for any channel will mute it completely
+     in all input effects, not just in the mixdown (this obviously
+     doesn't affect output, but it also silences all the VU meters for
+     that input channel, and that can be disconcerting if you don't
+     expect it).
+
+>>>> How do I get, build and install it?
+
+  Postfish is in Xiph.Org's Subversion repository.  Get the source using:
+
+    svn co http://svn.xiph.org/trunk/postfish postfish
+
+  Edit the Makefile to select the proper 'ADD_DEF' line.  LinuxPPC
+  users want the first, almost everyone else wants the second.  It
+  should be self explanatory given text in the Makefile.
+
+    cd postfish
+    make
+
+  and as root,
+
+    make install
+
+Happy hacking (and mixing),
+
+Monty
+TD, Xiph.Org

--- >8 ----
List archives:  http://www.xiph.org/archives/
Ogg project homepage: http://www.xiph.org/ogg/
To unsubscribe from this list, send a message to 'cvs-request at xiph.org'
containing only the word 'unsubscribe' in the body.  No subject is needed.
Unsubscribe messages sent to the list will be ignored/filtered.



More information about the commits mailing list