-
Notifications
You must be signed in to change notification settings - Fork 0
/
HiLoFilter.html
206 lines (169 loc) · 8.82 KB
/
HiLoFilter.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>HiLoFilter</title>
<link rel="stylesheet" href="/css/reset.css" type="text/css" />
<link rel="stylesheet" href="/css/default.css" type="text/css" />
<link rel="stylesheet" href="/css/button.css" type="text/css" />
<script language="javascript" src="/js/email.js"></script>
<!-- google analytics -->
<script type='text/javascript'>
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type='text/javascript'>
var pageTracker = _gat._getTracker("UA-4400684-1");
pageTracker._initData();
pageTracker._trackPageview();
</script>
</head>
<body>
<div id="smallheader">
<div class="wrapper">
<div id="logo">
<a href="/"><img src="/images/ta_logo_inverted.png" alt="Teragon Audio"/></a>
</div>
<!--
<div id="right">
<form method="get" id="searchform" action="#">
<fieldset class="search">
<input type="text" class="box" />
<button class="btn" title="Search">Search</button>
</fieldset>
</form>
</div>
-->
</div>
</div>
<div id="contentpart">
<div class="wrapper">
<ul class="menu">
<li class="menuitem"><a href="index.html">Home</a></li>
<li class="menuitem"><a href="/software.html">Software</a></li>
<li class="menuitem"><a href="/developers.html">Developer Portal</a></li>
<li class="menuitem"><a href="/performers.html">Performer Portal</a></li>
<li class="menuitem"><a href="/contact.html">Contact</a></li>
</ul>
<div id="content">
<div id="main" class="news">
<!-- Start content -->
<h1 id="hilofilter">HiLoFilter</h1>
<p><strong>NOTE</strong>: This software is unsupported and is no longer being updated or
maintained. It likely will not work on newer versions of macOS.</p>
<p>HiLoFilter is a simple hipass and lopass filter which can be easily controlled
with a single knob. It is loosely inspired by the same type of filter found on
some Pioneer DJM mixers, and also the <a href="http://arcticanaudio.com/effects/thepilgrim.html">The Pilgrim</a>, another great plugin
which provides roughly the same functionality.</p>
<p>So for those who haven’t used such a filter, here’s how it works:</p>
<ul>
<li>When the knob is in the center position, no audio processing is performed</li>
<li>Turning the knob to the right from center will start to cut low frequencies</li>
<li>Turning the knob to the lift will cut the high frequencies</li>
</ul>
<h2 id="features">Features</h2>
<ul>
<li>Configurable “dead zone” determines how big the middle position of the knob
should be. Without a dead zone, filtering will be performed unless the knob
is at the exact center. Many users have controllers without sticky points in
the center, and during a performance that “close enough” factor ensures that
the cleanest possible sound is given without accidentally cutting a bit from
the high/low end.</li>
<li>Configurable, independent high/low limits for the filter. Sometimes you want
the filter to cut 100% of the sound at each end, sometimes not. HiLoFilter
has got you covered.</li>
<li>Each filter’s range can be independently configured from 20Hz-20kHz</li>
<li>Logarithmic scaling for frequency parameters. This ensures that filtering on
both the high and low ends of the frequency spectrum is accurate and sane.</li>
<li>Filter resonance. Enough said.</li>
<li>Great CPU performance, uses nearly 50% as much power as The Pilgrim (more on
that below).</li>
<li>Dead zone goes up to 11. Rock on!</li>
</ul>
<h2 id="performance">Performance</h2>
<p>Part of the reason I wrote HiLoFilter was that The Pilgrim’s performance
was starting to impact my DJ setup. I was constructing a loop mixing set with
Ableton Live, where I had 2 “decks”, each with 8 independent channels. To save
knobs, I wanted one filter per channel, so I started looking for a nice
DJM-like filter. I found The Pilgrim and was quite happy with it, but lacking
a dead zone, I built an audio effect rack with a utility plugin (passthru) and
two instances of The Pilgrim. The result was a liveset with 2 * 8 * 2 = 32
instances.</p>
<p>A single instance of The Pilgrim uses nearly no CPU, but 32 of them takes a
noticeable chunk. I started experiencing audio dropouts from this and all the
other stuff in my liveset, and got rid of the effect chain, which reduced the
liveset to 16 instances. It was better, but still too high.</p>
<p>HiLoFilter isn’t anything special. I coded it in an afternoon, and the filter
code is from the long-retired Convolver plugin from <a href="http://teragonaudio.com">Teragon Audio</a>. But
written in highly optimized C++, the performance is almost twice as good as
The Pilgrim.</p>
<p>I benchmarked HiLoFilter against The Pilgrim in an empty liveset with 100
instances (more details on the test setup below). The resulting CPU usage
reported by Ableton Live was roughly 31% for 100 instances of HiLoFilter, and
58% for 100 instances of The Pilgrim, a CPU savings of nearly 50%.</p>
<p>As HiLoFilter has a passthru dead zone, I benchmarked HiLoFilter both in the
passthru state and when filtering and found that the difference was
negligible.</p>
<h2 id="the-verdict">The Verdict</h2>
<p>The Pilgrim is a great plugin, and I can definitely recommend that users try
both it and HiLoFilter to determine which one they prefer more, based on the
sound and features. For my needs, a dead zone and low CPU usage were enough to
necessitate writing this plugin, but in a situation where one wants only one
such plugin on the master channel controlled by a sticky knob, these might not
matter.</p>
<h2 id="limitations">Limitations</h2>
<p>Currently HiLoFilter is only available as a 32-bit Universal Binary for Mac
OSX. It should run as both a VST2 and AudioUnit plugin. The plugin should also
build under Windows as a 32-bit VST2 plugin (and there are project files ready
to do just that), but I’m too lazy too install VS2010 and test under this
platform. If someone out there is so willing, grab the source on GitHub and
send me a built DLL, which I would be happy to post on my website.</p>
<h2 id="bugs-and-feedback">Bugs and Feedback</h2>
<p>HiLoFilter was, as mentioned, coded in a short amount of time. It has not been
heavily tested, though the filter code was recycled from a more well-tested
plugin. You might very well find bugs, so beware! If you do find any, please
contact me at support (a) teragonaudio (dot) com. Likewise, if you’re into
GitHub, you can file a bug report there.</p>
<h2 id="licensing">Licensing</h2>
<p>HiLoFilter is licensed under the GPL. It uses the excellent <a href="http://rawmaterialsoftware.com/juce">Juce
framework</a>, and therefore is also GPL’d. The source
code is available at <a href="http://github.com/teragonaudio/HiLoFilter">the HiLoFilter GitHub website</a>.</p>
<h2 id="testing-configuration">Testing Configuration</h2>
<p>Both plugins were tested in an empty liveset, processing an unwarped MP3
playing through 20 audio effect chain containing 5 instances each. My computer
is a MacBook Pro 2x2.66 Core 2 Duo with 8Gb RAM and an Intel 310 SSD (3Gbps),
running OSX 10.6.8. The test was performed with Ableton Live 8.3 with a buffer
size of 512. Your results may vary.</p>
<hr />
<p>Changelog:</p>
<p>Version 1.0.2:</p>
<ul><li> Parameters are correctly saved/restored</li></ul>
<p>Version 1.0.1:</p>
<ul>
<li>Add windows build</li>
<li>Improve documentation</li>
</ul>
<p>Version 1.0.0:
(No comment)</p>
<!-- End content -->
</div>
<div id="sidebar">
<ul class="sidemenu">
<li><a href="http://static.teragonaudio.com/downloads/HiLoFilterHiLoFilter.zip" class="downloadbutton"><b>Download</b></a><p></p></li>
<li><a href="https://github.com/teragonaudio/HiLoFilter/zipball/master">Source code</a></li>
<li><a href="https://github.com/teragonaudio/HiLoFilter">Project page</a></li>
</ul>
</div>
</div>
<div style="clear:both;"></div>
<div id="bottom">
<p class="footer">
<b>Having problems with this software?</b> Send an email to
<script>mail2("support", "teragonaudio", 0, "subject=HiLoFilter", "support at teragonaudio dot com")</script>.
Copyright (c) 2012 Teragon Audio. All Rights Reserved.
</p>
</div>
</div>
</div>
</body>
</html>