<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Comments on: Хелп, а хелп, что такое startPosition в sound.extract?</title>
	<atom:link href="http://0xffffff.ru/temp/archives/58/feed" rel="self" type="application/rss+xml" />
	<link>http://0xffffff.ru/temp/archives/58</link>
	<description>Flasheress Blogue</description>
	<pubDate>Sat, 31 Jul 2010 19:17:08 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
		<item>
		<title>By: Рост</title>
		<link>http://0xffffff.ru/temp/archives/58#comment-2931</link>
		<dc:creator>Рост</dc:creator>
		<pubDate>Wed, 20 May 2009 15:24:47 +0000</pubDate>
		<guid isPermaLink="false">http://0xffffff.ru/temp/?p=58#comment-2931</guid>
		<description>Ниббл, отлично разложил все! Просто небольшая статья получилась, но такая, что будет любому ежику понятно :)</description>
		<content:encoded><![CDATA[<p>Ниббл, отлично разложил все! Просто небольшая статья получилась, но такая, что будет любому ежику понятно <img src='http://0xffffff.ru/temp/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: nibb13</title>
		<link>http://0xffffff.ru/temp/archives/58#comment-2885</link>
		<dc:creator>nibb13</dc:creator>
		<pubDate>Sat, 09 May 2009 09:31:30 +0000</pubDate>
		<guid isPermaLink="false">http://0xffffff.ru/temp/?p=58#comment-2885</guid>
		<description>У тебя, случаем, ограничения на размер комментария нет?.. =)</description>
		<content:encoded><![CDATA[<p>У тебя, случаем, ограничения на размер комментария нет?.. =)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: nibb13</title>
		<link>http://0xffffff.ru/temp/archives/58#comment-2881</link>
		<dc:creator>nibb13</dc:creator>
		<pubDate>Fri, 08 May 2009 17:07:07 +0000</pubDate>
		<guid isPermaLink="false">http://0xffffff.ru/temp/?p=58#comment-2881</guid>
		<description>Немного теории человеческими словами.

Звук == волна. У (звуковой тоже) волны две характеристики: частота и амплитуда. Амплитуда (вертикальные колебания волны на графике) задаёт громкость, а частота (горизонтальные колебания, проход через "нулевую") задаёт тон (высоту звука).
Управляя амплитудой (изменяя её значение в отдельно взятой точке) мы влияем на частоту, делая звук неоднородным и, как следствие, различимым (информативным, если так понятнее)

Цифровой звук, в отличие от аналогового - дискретный. У нас не может быть реально бесконечного массива (рано или поздно закончатся память и винт). Поэтому мы его преобразовываем (гугли АЦП) в массив значений амплитуды в данной точке. Точки эти находятся на равном временном "расстоянии" друг от друга. Соответственно их количество в единицу времени чётко задаётся. Измеряется оно в "замерах в секунду" или, попросту, герцах. И эта характеристика цифрового звука называется частотой дискретизации.

В качестве примера - "частота дискретизации 44100" означает, что мы взяли аналоговую волну и 44100 раз в секунду замеряли значение амплитуды (гугли аппроксимацию). Получился массив значений, по которым можно приблизительно восстановить исходную волну (гугли интерполяцию). Кстати, тут происходит неизбежная потеря данных, поэтому цифровой звук всегда хуже чем аналоговый.

Теперь мы подходим к определению сэмпла. Всё просто. Один замер == сэмпл. Т.е. сэмпл == значение амплитуды в данное время. Т.о. сэмпл под номером 44100 (при частоте в 44100) == значение аплитуды ровно после секунды проигрывания трэка. А сэмпл под номером 88200 находится в начале третьей секунды.

Иллюстрации:
http://g.imagehost.org/0477/likbez_1.jpg
http://g.imagehost.org/0529/likbez_2.jpg
http://g.imagehost.org/0339/likbez_3.jpg
http://g.imagehost.org/0740/likbez_4.jpg

Теория закончилась, теперь практика.

.startPosition - номер сэмпла, с которого мы начинаем читать в буфер "bytes" количество сэмплов "EXTRACT".
Если мы не указываем этот параметр, то он сам сдвигается на EXTRACT при каждом чтении.

В итоге твой код читает 1024 сэмпла (не всю секунду!!!) начиная с места ".position*44.1."
.position измеряется в миллисекундах (в хелпе об этом не сказано), 44.1 - это от дефолтовой частоты дискретизации. Т.о. 1000 мс * 44.1 == 44100, номер сэпла, который соответствует одной секунде etc...

Ага, сумбурно, согласен. Задавай вопросы. Пост мониторю.</description>
		<content:encoded><![CDATA[<p>Немного теории человеческими словами.</p>
<p>Звук == волна. У (звуковой тоже) волны две характеристики: частота и амплитуда. Амплитуда (вертикальные колебания волны на графике) задаёт громкость, а частота (горизонтальные колебания, проход через &#8220;нулевую&#8221;) задаёт тон (высоту звука).<br />
Управляя амплитудой (изменяя её значение в отдельно взятой точке) мы влияем на частоту, делая звук неоднородным и, как следствие, различимым (информативным, если так понятнее)</p>
<p>Цифровой звук, в отличие от аналогового - дискретный. У нас не может быть реально бесконечного массива (рано или поздно закончатся память и винт). Поэтому мы его преобразовываем (гугли АЦП) в массив значений амплитуды в данной точке. Точки эти находятся на равном временном &#8220;расстоянии&#8221; друг от друга. Соответственно их количество в единицу времени чётко задаётся. Измеряется оно в &#8220;замерах в секунду&#8221; или, попросту, герцах. И эта характеристика цифрового звука называется частотой дискретизации.</p>
<p>В качестве примера - &#8220;частота дискретизации 44100&#8243; означает, что мы взяли аналоговую волну и 44100 раз в секунду замеряли значение амплитуды (гугли аппроксимацию). Получился массив значений, по которым можно приблизительно восстановить исходную волну (гугли интерполяцию). Кстати, тут происходит неизбежная потеря данных, поэтому цифровой звук всегда хуже чем аналоговый.</p>
<p>Теперь мы подходим к определению сэмпла. Всё просто. Один замер == сэмпл. Т.е. сэмпл == значение амплитуды в данное время. Т.о. сэмпл под номером 44100 (при частоте в 44100) == значение аплитуды ровно после секунды проигрывания трэка. А сэмпл под номером 88200 находится в начале третьей секунды.</p>
<p>Иллюстрации:<br />
<a href="http://g.imagehost.org/0477/likbez_1.jpg" rel="nofollow">http://g.imagehost.org/0477/likbez_1.jpg</a><br />
<a href="http://g.imagehost.org/0529/likbez_2.jpg" rel="nofollow">http://g.imagehost.org/0529/likbez_2.jpg</a><br />
<a href="http://g.imagehost.org/0339/likbez_3.jpg" rel="nofollow">http://g.imagehost.org/0339/likbez_3.jpg</a><br />
<a href="http://g.imagehost.org/0740/likbez_4.jpg" rel="nofollow">http://g.imagehost.org/0740/likbez_4.jpg</a></p>
<p>Теория закончилась, теперь практика.</p>
<p>.startPosition - номер сэмпла, с которого мы начинаем читать в буфер &#8220;bytes&#8221; количество сэмплов &#8220;EXTRACT&#8221;.<br />
Если мы не указываем этот параметр, то он сам сдвигается на EXTRACT при каждом чтении.</p>
<p>В итоге твой код читает 1024 сэмпла (не всю секунду!!!) начиная с места &#8220;.position*44.1.&#8221;<br />
.position измеряется в миллисекундах (в хелпе об этом не сказано), 44.1 - это от дефолтовой частоты дискретизации. Т.о. 1000 мс * 44.1 == 44100, номер сэпла, который соответствует одной секунде etc&#8230;</p>
<p>Ага, сумбурно, согласен. Задавай вопросы. Пост мониторю.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
