From 3692f1ccea29d507fa4279792d38fb15e6db4b47 Mon Sep 17 00:00:00 2001 From: boris_mikhaylov Date: Mon, 23 Mar 2009 07:28:21 +0000 Subject: Description are moved. git-svn-id: svn://svn.code.sf.net/p/bs2b/code/trunk/libbs2b@81 bc0edfbe-c936-4687-b64d-f70bc3985e72 --- doc/Makefile.am | 16 +- doc/bs2b-ru.html | 410 ------------------------------ doc/bs2b.html | 413 ------------------------------- doc/bs2b_label.png | Bin 4171 -> 0 bytes doc/bs2b_lib-ru.html | 108 -------- doc/bs2b_lib.html | 107 -------- doc/content-ru.html | 28 --- doc/content.html | 27 -- doc/download.html | 5 - doc/img/Bach-BWV1066-Overture-diff.png | Bin 7048 -> 0 bytes doc/img/Bach-BWV1066-Overture-diff_e.png | Bin 6741 -> 0 bytes doc/img/Makefile.am | 9 - doc/img/bs2b_e_exdata_f.png | Bin 8469 -> 0 bytes doc/img/bs2b_exdata_f.png | Bin 10341 -> 0 bytes doc/img/bs2b_h-trans_d.png | Bin 7291 -> 0 bytes doc/img/bs2b_h-trans_f.png | Bin 8688 -> 0 bytes doc/img/bs2b_h_e-trans_d.png | Bin 7165 -> 0 bytes doc/img/bs2b_h_e-trans_f.png | Bin 8155 -> 0 bytes doc/index-ru.html | 19 -- doc/index.html | 18 -- doc/license.html | 38 --- doc/readme.txt | 2 + 22 files changed, 3 insertions(+), 1197 deletions(-) delete mode 100644 doc/bs2b-ru.html delete mode 100644 doc/bs2b.html delete mode 100644 doc/bs2b_label.png delete mode 100644 doc/bs2b_lib-ru.html delete mode 100644 doc/bs2b_lib.html delete mode 100644 doc/content-ru.html delete mode 100644 doc/content.html delete mode 100644 doc/download.html delete mode 100644 doc/img/Bach-BWV1066-Overture-diff.png delete mode 100644 doc/img/Bach-BWV1066-Overture-diff_e.png delete mode 100644 doc/img/Makefile.am delete mode 100644 doc/img/bs2b_e_exdata_f.png delete mode 100644 doc/img/bs2b_exdata_f.png delete mode 100644 doc/img/bs2b_h-trans_d.png delete mode 100644 doc/img/bs2b_h-trans_f.png delete mode 100644 doc/img/bs2b_h_e-trans_d.png delete mode 100644 doc/img/bs2b_h_e-trans_f.png delete mode 100644 doc/index-ru.html delete mode 100644 doc/index.html delete mode 100644 doc/license.html create mode 100644 doc/readme.txt diff --git a/doc/Makefile.am b/doc/Makefile.am index 2da1440..7cc1f0d 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -1,15 +1 @@ -SUBDIRS = \ - img - -EXTRA_DIST = \ - bs2b.html \ - bs2b_label.png \ - bs2b_lib.html \ - bs2b_lib-ru.html \ - bs2b-ru.html \ - content.html \ - content-ru.html \ - download.html \ - index.html \ - index-ru.html \ - license.html +EXTRA_DIST = readme.txt diff --git a/doc/bs2b-ru.html b/doc/bs2b-ru.html deleted file mode 100644 index 0685489..0000000 --- a/doc/bs2b-ru.html +++ /dev/null @@ -1,410 +0,0 @@ - - - - Bauer stereophonic-to-binaural DSP - - - - - - - - - - -
Bauer stereophonic-to-binaural DSP.
-
- 1. -Предисловие.

-
-Обычная стерео запись производится для прослушивания -громкоговорителями. Это означает, что звукорежиссер делает стерео -микширование с адаптацией звука для прослушивания одного канала обеими -ушами. Следовательно, вы будете утомлены при длительном прослушивании в -наушниках больше из-за суперстерео эффекта чем из-за плохой конструкции -наушников. В наушниках отсутствует то, что звук идет от каждого канала -к противоположному уху, -достигает его через некоторое короткое время проходя дополнительное -расстояние, и с частично ослабленными верхними частотами из-зи эффекта -тени головы. -И задержка до дальнего уха несколько больше на низких частотах чем на -высоких. Bauer stereophonic-to-binaural DSP (bs2b) -предназначен для улучшения прослушивания аудио стерео программ в -наушниках. Это улучшение хорошо было объяснено дизайнерами электронных -схем такими как -Benjamin Bauer [1], Siegfried Linkwitz [2], -Chu Moy [3], Jan Meier [4], John -Conover [10], -HeadRoom [9]. -Задержка в низкочастотном диапазоне, фильтры высокой частоты (ФВЧ), -фильтры ослабления низкой частоты (ФОНЧ), и взаимосмешение в их -электронных схемах сделаны на аналоговых RL -(Bauer) или RC -(Linkwitz, Moy, Meier) фильтрах перврго порядка. Такой дизайн -производит желаемые эффекты и естественно исключает эффект гребенчатого -фильтра в верхнем диапазоне частот благодаря нелинейному свойству -фазово-частотной характеристики (ФЧХ) этих фильтров. bs2b делает такую -же работу посредством простых и быстрых (в сревнение со сверткой) -однополярных рекурсивных цифровых фильтров, потому что эти фильтры -имеют такие же свойства как электронный RC-фильтры [5], - [6], [7]. -Я выбрал такие значения частот среза для ФВЧ и ФОНЧ которые позволяют -получать желательные задержку и наиболее ровную результирующую -амплитудно-частотную характеристику (АЧХ). К сожалению, я не вычислил -реальное значение частоты среза ФОНЧ, но это не так важно. ФОНЧ -цифровой фильтр может быть представлен как двойной фильтр: как -вычитание ослабленного профильтрованного ФВЧ сигнала из оригинального -сигнала. -Это может быть математически приведено к одношаговому рекурсивному -фильтру. В первом релизе (1.0.0) bs2b я применял двушаговый метод для -ФОНЧ с использованием уже полученного ФВЧ сигнала, но это делает -значение частоты среза ФОНЧ немного меньше чем я предполагал, и это -ведет к выделению низко-средних частот. Тем не менее, как написал Chu -Moy [3], значение частоты среза ФОНЧ должно быть -немного больше чем это значение для ФВЧ для достижения более гладкой -АЧХ кросфидера. Поэтому, я сделал одношаговый метод для ФОНЧ во втором -релизе bs2b. Я начал этот проект потому что звук других, которые я -слушал до этого, наушниковых плагинов для аудиоплееров не удовлетворил -меня. Основновное ухудшение звука наушниковыми DSP производится -эффектом гребенчатого фильтра из-за использования FFT свертки с -линейной ФЧХ для фильтрации. Есть плагин HeadPlug -который имеет опцию 'decomb', и автор пишет об этом: "The way the -plugin does -this is -really damn-ass straight-forward from a technical point of view". Я -попытался сделать это намного легче для CPU. Последнее замечание. bs2b -не производит симуляцию какого либо окружения и не производит какую -либо HRTF [8] трансформацию в высокочастотном -диапазоне. Некоторое применение HRTF в высокочастотном диапазоне уже -сделано наушниками, исключая бинауральные наушники такие как Etymotic ER-4B.
-Итак, пробуйте использовать bs2b чтобы почуствовать звук немного вне -вашей головы для облегчения работы вашего мозга.
-
- 2. -Теория.
-
-Однополюсный рекурсивный фильтр представляется рекурсивным выражением:
-O[n] = a0 * I[n] + a1 * I[n-1] + b1 * O[n-1]
-где a0, a1, b1 - рекурсионные коэффициенты, I[n] - входящие значения -сэмплов, -O[n] - результирующие (фильтрованные) значения сэмплов. Характеристики -фильтров зависят от рекурсионных коэффициентов. Таблица 2.1 показывает -perl программу которая вычисляет частотную и временную зависимости bs2b -с помощью H-преобразования [5].
-
- Table 2.1. bs2b-H-transform.pl.
- - - - - - -
#!/usr/bin/perl
-
-use Math::Complex;
-
-$s    = 40000; # Sample rate (Hz)
-
-$Fc   = shift; # Lowpass filter cut frequency (Hz)
-$Gd   = shift; # Lowpass filter gain (dB)
-$Ad_h = shift; # Highboost filter gain (dB) (0dB is highs)
-
-# example:
-# perl bs2b-H-transform.pl 700 -8 -2
-# it makes -6 dB crossfeed level
-#
-
# bs2b 2.0.0b uses data listed below.
-# perl bs2b-H-transform.pl 700 -5.5  -2.5  # high crossfeed -level
-# perl bs2b-H-transform.pl 500 -6.75 -2.25 # middle crossfeed level
-# perl bs2b-H-transform.pl 360 -8    --2    # low crossfeed level
-
# bs2b 2.1.0 uses additional 'Easy' -data that below.
- # perl bs2b-H-transform.pl 700 -8 --2       # high -easy crossfeed -level
- # perl bs2b-H-transform.pl 500 -9 -1.8     # middle easy crossfeed level
- # perl bs2b-H-transform.pl 360 -10 -1.6    # low easy crossfeed level
-
-

- $G    = 10 ** ($Gd / 20);
-$A_h  = 10 ** ($Ad_h / 20);
-$G_h  = 1 - $A_h;
-
-$Gd_h = 20 * log($G_h) / log(10);
-$Fc_h = $Fc * (2 ** (($Gd - $Gd_h) / 12)); # '/3' by my theory, but...
-
-print "Fc_low = $Fc\nFc_high = $Fc_h\n";
-print "G = $G\nG_h = $G_h\n";
-
-$fc   = $Fc / $s;
-$d    = 1 / 2 / pi / $fc;
-$x    = exp(-1 / $d);
-
-$fc_h = $Fc_h / $s;
-$d_h  = 1 / 2 / pi / $fc_h;
-$x_h  = exp(-1 / $d_h);
-
-# Lowpass single pole filter coefficients
-$b1   = $x;
-$a0   = $G * (1 - $x);
-$a1   = 0;
-
-# Highboost single pole filter coefficients
-$b1_h = $x_h;
-$a0_h = 1 - $G_h * (1 - $x_h);
-$a1_h = -$x_h;
-
-$w0 = 2 * pi * 4 / $s / 1.15;
-$z = exp(i * $w0);
-$H0   = ($a0   + $a1   / $z) / (1 - -$b1   / $z);
-$H0_h = ($a0_h + $a1_h / $z) / (1 - $b1_h / $z);
-
-for ($w = $w0 * 1.15; $w <= pi/2; $w0 = $w, $w *= 1.15)
-{
-    $z = exp(i * $w);
-    $H   = ($a0   + $a1   -/ $z) / (1 - $b1   / $z);
-    $H_h = ($a0_h + $a1_h / $z) / (1 - $b1_h / $z);
-
-    $str = sprintf("%f\t%f\t%f\t%f\t%f\t%f\t%f\n",
-        $s * $w / 2 / pi,
-        rho($H),    # -20 * log(rho($H)) / log(10) (dB)
-        theta($H) * 180 / -pi,    # degree
-        (theta($H) - theta($H0)) / -($w - $w0) * 1000000 / $s,     # mcs
-        rho($H_h),  # 20 * -log(rho($H_h)) / log(10)
-        theta($H_h) * 180 / -pi,  # degree
-        (theta($H_h) - theta($H0_h)) -/ ($w - $w0) * 1000000 / $s  # mcs
-    );
-
-    $str =~ s/\./\,/g; # Russian locale
-  
-    print $str;
-
-    $H0   = $H;
-    $H0_h = $H_h;
-}
-
-
-Рисунки 2.1 и 2.2 показывают результаты выше указанной программы. -Другими словами, -это тереотические зависимости bs2b DSP. Показаны только установки bs2b -низкого (low) уровня взаимосмешения '-L' и высокого (high) уровня -взаимосмешения '-H'. Средняя установка (middle) уровня взаимосмешения -опущена для наглядности. 'HB' означает ФОНЧ (highboost -filter). 'LP' означает ФВЧ (lowpass filter). 'M' означает сумму этих -отфильтрованных сигналов, -которая может быть интерпретирована как bs2b действие на двухканальный -моно сигнал.
-
- Рисунок -2.1. bs2b теоретическая -частотная характеристика.
- bs2b theoretical frequency response
-
-На рисунке 2.2 отрицательное время представляет задержку сигнала в -микросекундах.
-
- Рисунок 2.2. bs2b теоретическая временная - характеристика.
- bs2b theoretical time delay response
-
-Эти характеристики выглядят так как если бы виртуальные стерео -громкоговорители переместились от 30 -градусов (high crossfeed level) до 60 градусов (low crossfeed -level) по азимуту.
-
-Рисунки 2.3 и 2.4 показывают результаты выше указанной программы для -новых 'Easy' -уровней взаимосмешения выпуска 2.1 bs2b. Показаны только установки -low-easy уровня смешения -'-L' и high-easy уровня смешения '-H'.
-
- Рисунок 2.3. bs2b теоретическая частотная характеристика. 'Easy' версия.
- bs2b theoretical frequency response. 'Easy' version
-
-High-easy установка схожа с Chu Moy [3] -версией кроссфидера.
-Рисунок 2.4 представляет характеристику временной задержки 'Easy' -версии.
-
- Рисунок 2.4. bs2b теоретическая временная характеристика. 'Easy' версия.
- bs2b theoretical time delay response. 'Easy' version
-
-Эти характеристики выглядят похожими на 'нелегкую' версию из-за -одинакового набора частот среза для ФВЧ и малого различия в наборе -частот среза для ФОНЧ для обеих версий.
-
- 3. -Эксперимент.
-

-Рисунок 3.1 показывает практические частотные характеристики bs2b. Это -частотный анализ пропущенного через -bs2b сигнала белого шума. Три вида белого шума: двухканальный моно -сигнал 'M', двухканальный независимый сигнал 'I' и одноканальный -сигнал. Обработка посредством bs2b одноканального сигнала -представляется как характеристика ФОНЧ 'HB' или канал с первичным -сигналом и как -характеристика ФВЧ 'LP' или канал без первичного сигналаl. Показаны -только установки bs2b низкого уровня '-L' и высокого уровня '-H' -смешивания. Установка среднего уровня смешивания опущена для -наглядности.
-
- Рисунок 3.1. bs2b частотная характеристика.
- bs2b frequency response
-
-Рисунок 3.2 показывает разницу между частотным анализом реальной аудио -программы и частотным анализом этой программы обработанной bs2b.
-
- Рисунок 3.2. J.S. Bach -"BWV1066" -"Overture" разница частотного -анализа.
- J.S. Bach "BWV1066" "Overture" frequency analysis difference
-
-Рисунок 3.3 показывает практические частотные характеристики bs2b c -установкой 'Easy High'.
-
- Рисунок 3.3. bs2b частотная -характеристика. 'Easy' версия.
- bs2b frequency response. 'Easy' version
-
-Рисунок 3.4 как рисунок 3.2 но для 'Easy High' ('-H') и 'Easy -Low' ('-L') установок.
-
- Рисунок 3.4. J.S. Bach -"BWV1066" -"Overture" разница частотного анализа. 'Easy' версия.
- J.S. Bach "BWV1066" "Overture" frequency analysis difference. 'Easy' version
-
-
- 4. -Ссылки.
-
- [1]  Benjamin B. Bauer. Stereophonic -Earphones -and -Binaural Loudspeakers.
-
JAES Volume 9 -Number 2 pp. 148-151; April 1961. http://www.aes.org/
-
-
- [2]  Siegfried Linkwitz. Improved Headphone -Listening. Build a stereo-crossfeed circuit.
-
Audio; December 1971. http://www.linkwitzlab.com/
-
-
- [3]  Chu Moy. An Acoustic Simulator for -Headphone -Amplifiers.
- -
- [4]  Jan Meier. A DIY Headphone Amplifier.
- -
- [5]  Steven W. Smith, Ph.D. The Scientist -and -Engineer's Guide to Digital Signal Processing.
-
California Technical -Publishing; ISBN 0-9660176-3-3 (1997). http://www.dspguide.com/
-
-
- [6]  Davide Rocchesso. Introduction to -Sound -Processing.
-
(C) 2003 Davide Rocchesso, GNU -FDL. http://profs.sci.univr.it/~rocchess
-
-
- [7]  BORES Signal Processing: Introduction -to -DSP.
-
(C) 2004 Bores Signal Processing. - http://www.bores.com/courses/intro/index.htm
-
-
- [8]  Richard O.Duda. 3-D Audio for HCI.
-
(C) -1996-2000 Richard O.Duda. http://interface.cipic.ucdavis.edu/
-
-
- [9]  HeadRoom. About the HeadRoom -Crossfeed.
- -
- [10]  John Conover. Spatial Distortion -Reduction Headphone Amplifier.
- -
-
Авторское право (c) -2006  -Борис Михайлов < http://www.tmn.ru/~bor>
- - diff --git a/doc/bs2b.html b/doc/bs2b.html deleted file mode 100644 index 04162fc..0000000 --- a/doc/bs2b.html +++ /dev/null @@ -1,413 +0,0 @@ - - - - Bauer stereophonic-to-binaural DSP - - - - - - - - - -
Bauer stereophonic-to-binaural DSP.
-
- 1. -Preface.

-
-A regular stereo record is produced for listening by loudspeakers. This -means -that sound engineer makes stereo mixing with interpretation of sound -for hearing of one channel by both ears. Therefore, you will be tired -by long time headphone listening more through superstereo effect than -through -bad -headphone design. What’s missing -in headphones is the sound going from each channel to the opposite ear, -arriving a short time later for the extra distance traveled, and with a -bit of high frequency roll-off for the shadowing effect of the head. -And the time delay to the far -ear is somewhat longer at low frequencies than at high frequencies. -The Bauer stereophonic-to-binaural DSP (bs2b) is -designed to improve headphone listening of stereo audio records. This -improvement have been described well by electronic circuit designers -like -Benjamin Bauer [1], Siegfried Linkwitz [2], -Chu Moy [3], Jan Meier [4], John -Conover [10], -HeadRoom [9]. -The time delay at low frequency range, lowpass filters, highboost -filters and crossfeeding of their circuits has been made by first order -RL -(Bauer) or RC -(Linkwitz, Moy, Meier) analog filters. This design makes desired -effects and naturally eliminates comb filter effect at high frequency -range by -nonlinear phase response property of these filters. The bs2b makes the -same job by simple and fast (in comparison with convolution) single -pole recursive digital filters, because -these filters has a properties as an electronic RC-filters [5], [6], [7]. -I have -select a such values of cutoff frequencies of lowpass and -highboost -filters that allow to get a desired time delay and -most smooth resulting frequency -response. Unfortunately, I did not calculate the real value -of -cutoff -frequency of highboost filter, but it is not so important. A highboost -digital filter can be presented as two-step filter: as a -subtraction of attenuated lowpass filtered signal from original signal. -This -can be mathematically presented to the one-step recursive filter. In -the first (1.0.0) release of bs2b I -was apply a two-step method for highboost filter with using of already -calculated lowpas filtered signal, but it -makes the value of cutoff frequency of highboost filter little -lower than I was -assume, and it leads to a thickness in the lower midrange. -Nevertheless, as Chu Moy wrote [3], the -value of highboost filter cutoff frequency -should be little -higher then lowpass filter one for -more smooth frequency -response of crossfeeder. Therefore, I have made an one-step -method for highboost -filter in second release of bs2b. I was started this project -because the sound of other, I have see before, audioplayer's headphone -plugins have not satisfy me. The primary degradation of sound by -headphone -DSPs is prodiced by a -comb filter effect due to using of FFT convolution with -linear phase response for filtering. There is a HeadPlug -plugin that have -'decomb' option, and author wrote about it: "The way the plugin does -this is -really damn-ass straight-forward from a technical point of view". I -have -try to make it much easier for CPU. Last -note. The bs2b don't produce simulation of any ambient and don't -produce any HRTF [8] transform in high frequency -range. Some implementation of HRTF in the high frequency range is -already have done by -headphones, except -of binaural headphones like Etymotic ER-4B.
-So, try to use bs2b to feel sound little out from your -head to lighten the work of  your brain.
-
- 2. -Theoretical issue.
-
-Single -pole recursive filter is -presented by recursion eqation:
-O[n] = a0 * I[n] + a1 * I[n-1] + b1 * O[n-1]
-where a0, a1, b1 are recursion coefficients, I[n] is an input samples, -O[n] is an output (filtered) samples. Filter's response is relay to -recursion coefficients. Table 2.1 shows a perl program that calculate -frequency and time delay -responses of bs2b by H-transform [5].
-
- Table 2.1. bs2b-H-transform.pl.
- - - - - - -
#!/usr/bin/perl
-
-use Math::Complex;
-
-$s    = 40000; # Sample rate (Hz)
-
-$Fc   = shift; # Lowpass filter cut frequency (Hz)
-$Gd   = shift; # Lowpass filter gain (dB)
-$Ad_h = shift; # Highboost filter gain (dB) (0dB is highs)
-
-# example:
-# perl bs2b-H-transform.pl 700 -8 -2
-# it makes -6 dB crossfeed level
-#
-# bs2b 2.0.0b uses data listed below.
-# perl bs2b-H-transform.pl 700 -5.5  -2.5  # high crossfeed -level
-# perl bs2b-H-transform.pl 500 -6.75 -2.25 # middle crossfeed level
-# perl bs2b-H-transform.pl 360 -8    --2    # low crossfeed level
-
# bs2b 2.1.0 uses additional 'Easy' -data that below.
- # perl bs2b-H-transform.pl 700 -8 --2       # high -easy crossfeed -level
- # perl bs2b-H-transform.pl 500 -9 -1.8     # middle easy crossfeed level
- # perl bs2b-H-transform.pl 360 -10 -1.6    # low easy crossfeed level
-
-
-$G    = 10 ** ($Gd / 20);
-$A_h  = 10 ** ($Ad_h / 20);
-$G_h  = 1 - $A_h;
-
-$Gd_h = 20 * log($G_h) / log(10);
-$Fc_h = $Fc * (2 ** (($Gd - $Gd_h) / 12)); # '/3' by my theory, but...
-
-print "Fc_low = $Fc\nFc_high = $Fc_h\n";
-print "G = $G\nG_h = $G_h\n";
-
-$fc   = $Fc / $s;
-$d    = 1 / 2 / pi / $fc;
-$x    = exp(-1 / $d);
-
-$fc_h = $Fc_h / $s;
-$d_h  = 1 / 2 / pi / $fc_h;
-$x_h  = exp(-1 / $d_h);
-
-# Lowpass single pole filter coefficients
-$b1   = $x;
-$a0   = $G * (1 - $x);
-$a1   = 0;
-
-# Highboost single pole filter coefficients
-$b1_h = $x_h;
-$a0_h = 1 - $G_h * (1 - $x_h);
-$a1_h = -$x_h;
-
-$w0 = 2 * pi * 4 / $s / 1.15;
-$z = exp(i * $w0);
-$H0   = ($a0   + $a1   / $z) / (1 - -$b1   / $z);
-$H0_h = ($a0_h + $a1_h / $z) / (1 - $b1_h / $z);
-
-for ($w = $w0 * 1.15; $w <= pi/2; $w0 = $w, $w *= 1.15)
-{
-    $z = exp(i * $w);
-    $H   = ($a0   + $a1   -/ $z) / (1 - $b1   / $z);
-    $H_h = ($a0_h + $a1_h / $z) / (1 - $b1_h / $z);
-
-    $str = sprintf("%f\t%f\t%f\t%f\t%f\t%f\t%f\n",
-        $s * $w / 2 / pi,
-        rho($H),    # -20 * log(rho($H)) / log(10) (dB)
-        theta($H) * 180 / -pi,    # degree
-        (theta($H) - theta($H0)) / -($w - $w0) * 1000000 / $s,     # mcs
-        rho($H_h),  # 20 * -log(rho($H_h)) / log(10)
-        theta($H_h) * 180 / -pi,  # degree
-        (theta($H_h) - theta($H0_h)) -/ ($w - $w0) * 1000000 / $s  # mcs
-    );
-
-    $str =~ s/\./\,/g; # Russian locale
-  
-    print $str;
-
-    $H0   = $H;
-    $H0_h = $H_h;
-}
-
-
-Pictures 2.1 and 2.2 shows a results of above program. In other words, -there is a theoretical responses of bs2b DSP. Only low crossfeed level -'-L' and high crossfeed level '-H' presets of bs2b are shown. Middle -crossfeed level preset is omitted for clearness. 'HB' is highboost -filter. 'LP' is lowpass filter. 'M' is a sum of these filtered signals, -that can be interpreted as bs2b action to a two channel mono signal.
-
- Picture 2.1. bs2b theoretical -frequency -response.
- bs2b theoretical frequency response
-
-At picture 2.2 a negative value of time presents delay of signal by -microseconds.
-
- Picture 2.2. bs2b theoretical -time delay response.
- bs2b theoretical time delay response
-
-This responses looks as a virtual stereo speakers are moved from -30 -degrees -azimuth (high crossfeed level) to 60 degrees azimuth (low crossfeed -level).
-
-Pictures 2.3 and 2.4 shows a results of above program for new 'Easy' -crossfeed levels of 2.1 release of bs2b. Only low-easy crossfeed level -'-L' and high-easy crossfeed level '-H' presets of bs2b are shown.
-
- Picture 2.3. bs2b theoretical -frequency -response. 'Easy' version.
- bs2b theoretical frequency response. 'Easy' version
-
-The high-easy preset is close to Chu Moy's [3] -version of crossfeeder.
-Picture 2.4 presents delay response of 'Easy' version.
-
- Picture 2.4. bs2b theoretical -time delay response. 'Easy' version.
- bs2b theoretical time delay response. 'Easy' version
-
-This responses looks close to noneasy version because of the same -set of cutoff frequencies of lowpass filters and little differences of -highboost filters for both versions.
-
- 3. -Practical data.
-

-Picture 3.1 shows the practical frequency responses of -bs2b. This is a frequency analysis of applied to -bs2b white noise signals. There -are two channel mono signal 'M', two channel independ signal 'I' and -one channel signal. The bs2b processing of one channel signal is -presented as highboost filtered 'HB' or channel with primary signal and -as -lowpass filtered 'LP' or channel without primary signal. Only low -crossfeed -level '-L' and high crossfeed level '-H' presets of -bs2b are shown. Middle crossfeed level preset is omitted for clearness.
-
- Picture 3.1. bs2b frequency -response.
- bs2b frequency response
-
-Picture 3.2 shows the difference between -frequency analysis of real audio -program and -frequency analysis of that program has been processed by bs2b.
-
- Picture 3.2. J.S. Bach -"BWV1066" -"Overture" frequency analysis difference.
- J.S. Bach "BWV1066" "Overture" frequency analysis difference
-
-Picture 3.3 shows the practical frequency responses of 'Easy High' -preset of -bs2b.
-
- Picture 3.3. bs2b frequency -response. 'Easy' version.
- bs2b frequency response. 'Easy' version
-
-Picture 3.4 is like picture 3.2 but for 'Easy High' ('-H') and 'Easy -Low' ('-L') presets.
-
- Picture 3.4. J.S. Bach -"BWV1066" -"Overture" frequency analysis difference. 'Easy' version.
- J.S. Bach "BWV1066" "Overture" frequency analysis difference. 'Easy' version
-
-
- 4. -References.
-
- [1]  Benjamin B. Bauer. Stereophonic -Earphones -and -Binaural Loudspeakers.
-
JAES Volume 9 -Number 2 pp. 148-151; April 1961. http://www.aes.org/
-
-
- [2]  Siegfried Linkwitz. Improved Headphone -Listening. Build a stereo-crossfeed circuit.
-
Audio; December 1971. http://www.linkwitzlab.com/
-
-
- [3]  Chu Moy. An Acoustic Simulator for -Headphone -Amplifiers.
- -
- [4]  Jan Meier. A DIY Headphone Amplifier.
- -
- [5]  Steven W. Smith, Ph.D. The Scientist -and -Engineer's Guide to Digital Signal Processing.
-
California Technical -Publishing; ISBN 0-9660176-3-3 (1997). http://www.dspguide.com/
-
-
- [6]  Davide Rocchesso. Introduction to -Sound -Processing.
-
(C) 2003 Davide Rocchesso, GNU -FDL. http://profs.sci.univr.it/~rocchess
-
-
- [7]  BORES Signal Processing: Introduction -to -DSP.
-
(C) 2004 Bores Signal Processing. - http://www.bores.com/courses/intro/index.htm
-
-
- [8]  Richard O.Duda. 3-D Audio for HCI.
-
(C) -1996-2000 Richard O.Duda. http://interface.cipic.ucdavis.edu/
-
-
- [9]  HeadRoom. About the HeadRoom -Crossfeed.
- -
- [10]  John Conover. Spatial Distortion -Reduction Headphone Amplifier.
- -
-
Copyright (c) 2006  -Boris Mikhaylov < http://www.tmn.ru/~bor>
- - diff --git a/doc/bs2b_label.png b/doc/bs2b_label.png deleted file mode 100644 index cd6e4c3..0000000 Binary files a/doc/bs2b_label.png and /dev/null differ diff --git a/doc/bs2b_lib-ru.html b/doc/bs2b_lib-ru.html deleted file mode 100644 index b733b22..0000000 --- a/doc/bs2b_lib-ru.html +++ /dev/null @@ -1,108 +0,0 @@ - -Bauer stereophonic-to-binaural DSP - - - - - - - - - - - - - - - - - -
Bauer stereophonic-to-binaural DSP: описание библиотеки.
-
-Библиотека bs2b проста в -использовании. Смотрите таблицу 1 для примера. Это упрощенный код 'bs2bstream.c'. Файлы 'bs2b.h', 'bs2bclass.h' и 'bs2bconvert.c' пакета исходного кода также могут помочь.
-Вы можете использовать 'bs2bstream' вместе с 'lame' вот такой командной строкой:
  lame -t --decode test-44-16.wav - | bs2bstream -4 | \
     -lame -r -x -m j -s 44.1 --bitwidth 16 --preset extreme - test.mp3
или без '-x' перемены местами байтов входного файла, вот такой:
   -lame -t --decode test-44-16.wav - | bs2bstream -4 | \
     -lame -r -m j -s 44.1 --bitwidth 16 --preset extreme - test.mp3

- Таблица 1. Пример использования библиотеки bs2b.
- - - - - - -
#include <stdio.h>
#include "bs2b.h"
-
-int main()
-{
-  t_bs2bdp bs2bdp;
-  short    sample[ 2 ];
-
-  bs2bdp = bs2b_open();
-
-  /* Default init value
-  bs2b_set_srate( bs2bdp, 44100L );
-  bs2b_set_level( bs2bdp, BS2B_DEFAULT_CLEVEL );
-  */
-
  /* 16 bit raw PCM */
-  while( 2 == fread( sample, sizeof( short ), 2, stdin ) )
-  {
-    bs2b_cross_feed_16( bs2bdp, sample );
-    fwrite( sample, sizeof( short ), 2, stdout );
-  }
-
-  bs2b_close( bs2bdp );
-  bs2bdp = 0;
-
-  return 0 ;
-}

-
-
- -Значение частоты дискретизации по умолчанию равно 44100 Гц. Значение -уровня взаимосмешения по умолчанию есть 'High Easy' (6). Если частота -дискретизации -аудио данных другая или вы хотите изменить уровень взаимосмешения то вы -должны вызвать функции 'bs2b_set_srate' и -'bs2b_set_level' соответственно.
-
- - Таблица 2. Пример использования библиотеки bs2b в C++.
- - - - - - - - - - -
#include <stdio.h>
#include "bs2bclass.h"
-
-int main()
-{
-  bs2b_base bs2b;
-
-  //
Default init value
- - -  //bs2b.set_srate( 44100L );
-  //bs2b.set_level( BS2B_DEFAULT_CLEVEL );
-
  short sample[ 2 ]; //
16 bit raw PCM
- -   while( 2 == fread( sample, sizeof( short ), 2, stdin ) )
-  {
-    bs2b.cross_feed( sample );
-    fwrite( sample, sizeof( short ), 2, stdout );
-  }
-
-  return 0 ;
-}

-
- -
-
Авторское право (c) -2006  Борис Михайлов < http://www.tmn.ru/~bor>
- \ No newline at end of file diff --git a/doc/bs2b_lib.html b/doc/bs2b_lib.html deleted file mode 100644 index 52e48fa..0000000 --- a/doc/bs2b_lib.html +++ /dev/null @@ -1,107 +0,0 @@ - -Bauer stereophonic-to-binaural DSP - - - - - - - - - - - - - - - - - -
Bauer stereophonic-to-binaural DSP: library -description.
-
-The bs2b -library is simple -to use. See table 1 for example. It is a reductive code of 'bs2bstream.c'. The 'bs2b.h', 'bs2bclass.h' and 'bs2bconvert.c' files of the source code -package can help also.
-You can use a 'bs2bstream' with 'lame' by a command line like this:
  lame -t --decode test-44-16.wav - | bs2bstream -4 | \
    lame -r -x -m j -s 44.1 --bitwidth 16 --preset extreme - test.mp3
-or without of '-x' swap bytes of input file, like this:
  lame -t --decode test-44-16.wav - | bs2bstream -4 | \
    lame -r -m j -s 44.1 --bitwidth 16 --preset extreme - test.mp3

- Table 1. Example of using of bs2b -library.
- - - - - - -
#include <stdio.h>
#include "bs2b.h"
-
-int main()
-{
-  t_bs2bdp bs2bdp;
-  short    sample[ 2 ];
-
-  bs2bdp = bs2b_open();
-
-  /* Default init value
-  bs2b_set_srate( bs2bdp, 44100L );
-  bs2b_set_level( bs2bdp, BS2B_DEFAULT_CLEVEL );
-  */
-
  /* 16 bit raw PCM */
-  while( 2 == fread( sample, sizeof( short ), 2, stdin ) )
-  {
-    bs2b_cross_feed_16( bs2bdp, sample );
-    fwrite( sample, sizeof( short ), 2, stdout );
-  }
-
-  bs2b_close( bs2bdp );
-  bs2bdp = 0;
-
-  return 0 ;
-}
-
-
-Sample rate default value is 44100 Hz. Crossfeed level default value is -'High Easy' (6). If sample rate of audio data is different or if you -want to -change -crossfeed level then you must call 'bs2b_set_srate' and -'bs2b_set_level' functions accordingly.
-
- Table 2. Example of using of bs2b -library by C++.
- - - - - - - - - - -
#include <stdio.h>
#include "bs2bclass.h"
-
-int main()
-{
-  bs2b_base bs2b;
-
-  //
Default init value
- -  //bs2b.set_srate( 44100L );
-  //bs2b.set_level( BS2B_DEFAULT_CLEVEL );
-
  short sample[ 2 ]; //
16 bit raw PCM
-   while( 2 == fread( sample, sizeof( short ), 2, stdin ) )
-  {
-    bs2b.cross_feed( sample );
-    fwrite( sample, sizeof( short ), 2, stdout );
-  }
-
-  return 0 ;
-}
-
- -
-
Copyright (c) 2006  -Boris Mikhaylov < http://www.tmn.ru/~bor>
- \ No newline at end of file diff --git a/doc/content-ru.html b/doc/content-ru.html deleted file mode 100644 index 0958e40..0000000 --- a/doc/content-ru.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - Bauer stereophonic-to-binaural DSP: Content - - - - -Bauer stereophonic-to-binaural

-English
-Предисловие
-Теория
-Эксперимент
-Библиотека
-Ссылки
-Домой
-Загрузить
-Форум
-Лицензия
-

- - Get Bauer stereophonic-to-binaural DSP at SourceForge.net. Fast, secure and Free Open Source software downloads -

- - diff --git a/doc/content.html b/doc/content.html deleted file mode 100644 index ef91f3b..0000000 --- a/doc/content.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - Bauer stereophonic-to-binaural DSP: Content - - - -Bauer stereophonic-to-binaural

-Russian
-Preface
-Theory
-Experiment
-Library
-References
-Home
-Download
-Forum
-License
-

- - Get Bauer stereophonic-to-binaural DSP at SourceForge.net. Fast, secure and Free Open Source software downloads -

- - diff --git a/doc/download.html b/doc/download.html deleted file mode 100644 index 8a867bd..0000000 --- a/doc/download.html +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/doc/img/Bach-BWV1066-Overture-diff.png b/doc/img/Bach-BWV1066-Overture-diff.png deleted file mode 100644 index 04f041d..0000000 Binary files a/doc/img/Bach-BWV1066-Overture-diff.png and /dev/null differ diff --git a/doc/img/Bach-BWV1066-Overture-diff_e.png b/doc/img/Bach-BWV1066-Overture-diff_e.png deleted file mode 100644 index 5c894f4..0000000 Binary files a/doc/img/Bach-BWV1066-Overture-diff_e.png and /dev/null differ diff --git a/doc/img/Makefile.am b/doc/img/Makefile.am deleted file mode 100644 index 46098d7..0000000 --- a/doc/img/Makefile.am +++ /dev/null @@ -1,9 +0,0 @@ -EXTRA_DIST = \ - Bach-BWV1066-Overture-diff_e.png \ - Bach-BWV1066-Overture-diff.png \ - bs2b_e_exdata_f.png \ - bs2b_exdata_f.png \ - bs2b_h_e-trans_d.png \ - bs2b_h_e-trans_f.png \ - bs2b_h-trans_d.png \ - bs2b_h-trans_f.png diff --git a/doc/img/bs2b_e_exdata_f.png b/doc/img/bs2b_e_exdata_f.png deleted file mode 100644 index 5ef2e24..0000000 Binary files a/doc/img/bs2b_e_exdata_f.png and /dev/null differ diff --git a/doc/img/bs2b_exdata_f.png b/doc/img/bs2b_exdata_f.png deleted file mode 100644 index 722670c..0000000 Binary files a/doc/img/bs2b_exdata_f.png and /dev/null differ diff --git a/doc/img/bs2b_h-trans_d.png b/doc/img/bs2b_h-trans_d.png deleted file mode 100644 index bfd485a..0000000 Binary files a/doc/img/bs2b_h-trans_d.png and /dev/null differ diff --git a/doc/img/bs2b_h-trans_f.png b/doc/img/bs2b_h-trans_f.png deleted file mode 100644 index c1df8ee..0000000 Binary files a/doc/img/bs2b_h-trans_f.png and /dev/null differ diff --git a/doc/img/bs2b_h_e-trans_d.png b/doc/img/bs2b_h_e-trans_d.png deleted file mode 100644 index 1e5641d..0000000 Binary files a/doc/img/bs2b_h_e-trans_d.png and /dev/null differ diff --git a/doc/img/bs2b_h_e-trans_f.png b/doc/img/bs2b_h_e-trans_f.png deleted file mode 100644 index 2919303..0000000 Binary files a/doc/img/bs2b_h_e-trans_f.png and /dev/null differ diff --git a/doc/index-ru.html b/doc/index-ru.html deleted file mode 100644 index 8d0da80..0000000 --- a/doc/index-ru.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - Bauer stereophonic-to-binaural DSP - - - - - - - - diff --git a/doc/index.html b/doc/index.html deleted file mode 100644 index fc01f9c..0000000 --- a/doc/index.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - Bauer stereophonic-to-binaural DSP - - - - - - - diff --git a/doc/license.html b/doc/license.html deleted file mode 100644 index dd33803..0000000 --- a/doc/license.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - License - - - - - - - - -
-

- Copyright (c) 2005 Boris Mikhaylov -

-

Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation files -(the "Software"), to deal in the Software without restriction, -including without limitation the rights to use, copy, modify, merge, -publish, distribute, sublicense, and/or sell copies of the Software, -and to permit persons to whom the Software is furnished to do so, -subject to the following conditions:

-

The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY -KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-
- - diff --git a/doc/readme.txt b/doc/readme.txt new file mode 100644 index 0000000..4d0fb93 --- /dev/null +++ b/doc/readme.txt @@ -0,0 +1,2 @@ +Online and downloadable description is available +at http://bs2b.sourceforge.net/ -- cgit v1.2.3