-
Notifications
You must be signed in to change notification settings - Fork 0
/
multi-audio_in_development.html
296 lines (271 loc) · 10.7 KB
/
multi-audio_in_development.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
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
<!DOCTYPE html>
<html lang="en">
<head>
<!-- 2022-07-23 Sat 05:11 -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Multi-audio (In development)</title>
<meta name="generator" content="Org mode">
<meta name="author" content="ivanaf">
<link rel="stylesheet" type="text/css" href="css/org.css"/>
<link rel="icon" href="ico/favicon.ico" type="image/x- icon">
<script type="text/javascript">
/*
@licstart The following is the entire license notice for the
JavaScript code in this tag.
Copyright (C) 2012-2020 Free Software Foundation, Inc.
The JavaScript code in this tag is free software: you can
redistribute it and/or modify it under the terms of the GNU
General Public License (GNU GPL) as published by the Free Software
Foundation, either version 3 of the License, or (at your option)
any later version. The code is distributed WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
As additional permission under GNU GPL version 3 section 7, you
may distribute non-source (e.g., minimized or compacted) forms of
that code without the copy of the GNU GPL normally required by
section 4, provided you include this license notice and a URL
through which recipients can access the Corresponding Source.
@licend The above is the entire license notice
for the JavaScript code in this tag.
*/
<!--/*--><![CDATA[/*><!--*/
function CodeHighlightOn(elem, id)
{
var target = document.getElementById(id);
if(null != target) {
elem.cacheClassElem = elem.className;
elem.cacheClassTarget = target.className;
target.className = "code-highlighted";
elem.className = "code-highlighted";
}
}
function CodeHighlightOff(elem, id)
{
var target = document.getElementById(id);
if(elem.cacheClassElem)
elem.className = elem.cacheClassElem;
if(elem.cacheClassTarget)
target.className = elem.cacheClassTarget;
}
/*]]>*///-->
</script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
displayAlign: "center",
displayIndent: "0em",
"HTML-CSS": { scale: 100,
linebreaks: { automatic: "false" },
webFont: "TeX"
},
SVG: {scale: 100,
linebreaks: { automatic: "false" },
font: "TeX"},
NativeMML: {scale: 100},
TeX: { equationNumbers: {autoNumber: "AMS"},
MultLineWidth: "85%",
TagSide: "right",
TagIndent: ".8em"
}
});
</script>
<script type="text/javascript"
src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS_HTML"></script>
</head>
<body>
<div id="content">
<div class="head">
<div class="title">
<p>
<a href="index.html">Ivanaf</a>
</p>
</div>
<menu>
<ul class="org-ul">
<li><a href="index.html">Home</a></li>
<li><a href="journal.html">Journal</a></li>
<li><a href="about.html">About</a></li>
<li><a href="resume.html">Resume</a></li>
<li><a href="portfolio.html">Portfolio</a></li>
<li><a href="contact.html">Contact</a></li>
<li><a href="projects_ideas.html">Messy Ideas</a></li>
</ul>
</menu>
</div>
<p>
</p><h1>
Multi-audio (In development)
</h1><p>
</p>
<p>
<span class=page-date> <small>
2018-01-21, updated 2020-07-26 — <a href='journal.html#tech' class='tech tagbutton'>tech</a>   <a href="groebner_basis_for_linear_network_coding_in_sage.html">⇦Groebner Basis for Linear Network Coding in Sage</a> – <a href="mit_entrepreneurship_resources.html">MIT entrepreneurship resources⇨</a>
</small> </span>
</p>
<nav id="table-of-contents">
<input id="toggle-toc" style="display: none; visibility: hidden;" type="checkbox">
<label for="toggle-toc">
<h2> <b> Table of Contents </b> </h2>
</label>
<div id="text-table-of-contents">
<ul>
<li><a href="#what-makes-audio-binaural">1. What makes audio binaural?</a></li>
<li><a href="#programs-that-use-hrtf">2. Programs that use HRTF</a></li>
<li><a href="#basic-idea">3. Basic idea</a></li>
<li><a href="#about-the-tools">4. About the tools</a>
<ul>
<li><a href="#http--wwwjackaudioorg-jack">4.1. JACK</a></li>
<li><a href="#zita-convolver">4.2. Zita Convolver</a></li>
<li><a href="#qt">4.3. QT</a></li>
</ul>
</li>
</ul>
</div>
</nav>
<p>
I enjoy <a href="https://en.wikipedia.org/wiki/Binaural_recording">binaural</a>
audio. If you don't know what I'm talking about, I'd recommend putting
on headphones and listening to the
<a href="https://www.youtube.com/watch?v=IUDTlvagjJA">virtual barber shop</a>.
</p>
<div id="outline-container-what_makes_audio_binaural" class="outline-2">
<h2 id="what-makes-audio-binaural"><span class="section-number-2">1</span> What makes audio binaural?</h2>
<div class="outline-text-2" id="text-what-makes-audio-binaural">
<p>
In few words, you can detect from which location a sound is coming from
by detecting the delay (difference in phase) between the ears, which can
reach \(\frac{25cm}{330m/s} \approx 0.8ms\). However, we can localize the
source of a sound in 3 dimensions and the difference in phase only
provides us with one constraint. The rest of the information comes from
how frequencies are absorbed by the head, outer ear and body are
direction dependent; as well as the difference in audio intensity
between the ears.
</p>
</div>
</div>
<div id="outline-container-programs_that_use_hrtf" class="outline-2">
<h2 id="programs-that-use-hrtf"><span class="section-number-2">2</span> Programs that use HRTF</h2>
<div class="outline-text-2" id="text-programs-that-use-hrtf">
<p>
The response of each ear based on the direction of the sound is called
<a href="https://en.wikipedia.org/wiki/Head-related_transfer_function">Head-related transfer function (hrtf)</a>. Multiple programs can make use of HRTF in
order to localize a sound source. Games that use
<a href="https://www.openal.org/">openal</a> usually have a setting to activate
HRTF if you are using headphones. One example of such game is Minecraft.
Another program is
<a href="https://www.reddit.com/r/linux_gaming/comments/2ot5ov/enable_system_wide_hrtf_with_pulseaudio/">pulseaudio</a>.
It allows you to convert 5.1 audio into binaural audio by localizing the
sound that would come from each of the speakers. This makes watching
movies with a headphone a fairly pleasing experience.
</p>
</div>
</div>
<div id="outline-container-basic_idea" class="outline-2">
<h2 id="basic-idea"><span class="section-number-2">3</span> Basic idea</h2>
<div class="outline-text-2" id="text-basic-idea">
<p>
It is easy to set up audio pipes using jack. I usually install
<a href="http://kxstudio.linuxaudio.org/Applications:Cadence">Cadence</a> to do
so, since it is extremely user friendly. Therefore, if I can setup a
simple jack application that uses a simple GUI to decide the location of
an audio source and then play the audio on headphones, it should allow
me to do things such as multiaudio or having some sound sound like it is
moving around me.
</p>
</div>
</div>
<div id="outline-container-about_the_tools" class="outline-2">
<h2 id="about-the-tools"><span class="section-number-2">4</span> About the tools</h2>
<div class="outline-text-2" id="text-about-the-tools">
</div>
<div id="outline-container-http--wwwjackaudioorg-jack" class="outline-3">
<h3 id="http--wwwjackaudioorg-jack"><span class="section-number-3">4.1</span> <a href="http://www.jackaudio.org/">JACK</a></h3>
<div class="outline-text-3" id="text-4-1">
<p>
(<a href="http://kxstudio.linuxaudio.org/Applications:Cadence">Cadence</a>)
</p>
<p>
:CUSTOM_ID: jack-cadence
</p>
<blockquote>
<p>
JACK (JACK Audio Connection Kit) refers to an API and two
implementations of this API, jack1 and jack2. It provides a basic
infrastructure for audio applications to communicate with each other
and with audio hardware. Through JACK, users are enabled to build
powerful systems for signal processing and music production.
</p>
</blockquote>
<p>
In other words, Jack provides an easy way to connect the audio from one
application to another. Using its C++ library we can easily make a
client that can take interface with the audio from other applications.
</p>
<blockquote>
<p>
Cadence is a set of tools useful for audio production.
</p>
</blockquote>
<p>
Cadence is a set of tools that make using JACK much easier. I have never
been able to install JACK, nor use it without installing Cadence.
</p>
</div>
</div>
<div id="outline-container-https--directoryfsforg-wiki-zita-convolverzita_convolver" class="outline-3">
<h3 id="zita-convolver"><span class="section-number-3">4.2</span> <a href="https://directory.fsf.org/wiki/Zita-convolver">Zita Convolver</a></h3>
<div class="outline-text-3" id="text-zita-convolver">
<p>
Install from libzita-convolver.
</p>
<blockquote>
<p>
Zita convolver is a C++ library implementing a real-time convolution
matrix for up to 64 inputs and outputs. It uses multiple partition
sizes to provide both low delay and efficient CPU use.
</p>
</blockquote>
<p>
In other words, Zita Convolver is a very fast and simple way to apply an
impulse response to audio!
</p>
</div>
</div>
<div id="outline-container-https--wwwqtio-qt" class="outline-3">
<h3 id="qt"><span class="section-number-3">4.3</span> <a href="https://www.qt.io/">QT</a></h3>
<div class="outline-text-3" id="text-qt">
<p>
I wanted the tool to have a gui. QT is one that is cross-platform.
</p>
</div></div>
<br>
<div class="comments">
<div id="disqus_thread"></div>
<script type="text/javascript">
/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
var disqus_shortname = 'ivanaf'; // Required - Replace '<example>' with your forum shortname
/* * * DON'T EDIT BELOW THIS LINE * * */
var showComments = function() {
var button = document.getElementById('comment-button')
button.style.display = 'none'
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
};
</script>
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
<button id="comment-button" onclick="showComments()">Show comments</button>
</div>
<div><div>
</div>
</div>
</div>
</div>
<div id="postamble" class="status">
<p class="author">Author: Ivan Tadeu Ferreira Antunes Filho</p>
<p class="date">Date: 2022-07-23 Sat 05:11</p>
<p class="author">Github: <a href="https://github.com/itf/">github.com/itf</a></p>
<p class="creator">Made with <a href="https://www.gnu.org/software/emacs/">Emacs</a> 27.1 (<a href="https://orgmode.org">Org</a> mode 9.3) and <a href="https://github.com/itf/org-export-head">Org export head</a> </p>
</div>
</body>
</html>