replace print/say
replace active print/say
replace print/say
eliminate pager_join(), pager() also does the join
pager_join -> pager
add_effect <effect_chain_name>
is_effect_chain()
add_effect takes effect_chain_name as arg
add_effect takes effect_chain_name as code argument
add Effect attributes: nick, surname
nick is a name attribute of an effect.
It is not unique. Several tracks may have
a "reverb" effect.

when the user defines a nick, she also
defines an effect chain of the same
name, which becomes a preset.

If the user wishes to always apply
the default settings, she can "nick"
the effect before modifying any parameters.

"nick overwrite" could be syntax for
replacing a nick.

"surname" is intended to be set by
multieffect effect chain, when it would
be confusing to have mulitiple tracks
by the same name, it makes sense that they
could all share a surname.

This will allow us to support rfx reverb_chain.
print char codes when "bad effect data line"
add_effect command takes effect chain name as arg
add_effect() takes effect chain arg
add_effect handles effect chain, positioning prefader
typo
add_effect correctly posititions effects using
the new syntax.
Effect chains are not positioned properly
Also, failed warnings returned after successful operation
change attribute name "nick" -> "name"
add fancy_ops_o() method
grammar: "before" definition now includes effect chain name.
It returns the correct op_id needed to play the effect.
But I think it should be a track method.
$track->fx_pos("reverb")
suppress warnings on unknown effect code.
This branch is getting triggered, which is the real problem