<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=406406&amp;view=findpost&amp;p=3642716</guid>
        <pubDate>Thu, 17 Dec 2015 20:29:48 +0000</pubDate>
        <title>Работа с BassAsio</title>
        <link>https://forum.sources.ru/index.php?showtopic=406406&amp;view=findpost&amp;p=3642716</link>
        <description><![CDATA[tumanovalex: А что такое &quot;Ваш кэп&quot;?]]></description>
        <author>tumanovalex</author>
        <category>Программирование звука</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=406406&amp;view=findpost&amp;p=3642703</guid>
        <pubDate>Thu, 17 Dec 2015 17:20:35 +0000</pubDate>
        <title>Работа с BassAsio</title>
        <link>https://forum.sources.ru/index.php?showtopic=406406&amp;view=findpost&amp;p=3642703</link>
        <description><![CDATA[Prince: Если устанавливать частоту через панель, то нет смысла устанавливать частоту в программе. Она уже и так установлена.<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>BASS_ASIO_GetRate() рапортует, что частоты устанавливаются успешно. Однако на устройстве есть индикаторы, показывающие текущую частоту дискретизации. Исходя из их показаний частоты дискретизации не переключаются</div></div><br>
Глюк. <br>
<em class='tag-i'>Ваш кэп</em>.<br>
<br>
<br>
Никто не запрещает уставливать частоту через контрол панель.]]></description>
        <author>Prince</author>
        <category>Программирование звука</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=406406&amp;view=findpost&amp;p=3642473</guid>
        <pubDate>Wed, 16 Dec 2015 06:51:21 +0000</pubDate>
        <title>Работа с BassAsio</title>
        <link>https://forum.sources.ru/index.php?showtopic=406406&amp;view=findpost&amp;p=3642473</link>
        <description><![CDATA[tumanovalex: Я попробовал, не устанавливается. Пробовал и вызывать Start. Если устанавливать частоту через панель и ту же частоту использовать в программе, то программа работает нормально: файлы записываются правильно.Если выбранная в программе частота не соответствует текущей частоте устройства, получаются файлы с нулевым размером]]></description>
        <author>tumanovalex</author>
        <category>Программирование звука</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=406406&amp;view=findpost&amp;p=3642438</guid>
        <pubDate>Tue, 15 Dec 2015 21:04:22 +0000</pubDate>
        <title>Работа с BassAsio</title>
        <link>https://forum.sources.ru/index.php?showtopic=406406&amp;view=findpost&amp;p=3642438</link>
        <description><![CDATA[Prince: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>BASS_ASIO_GetRate() рапортует, что частоты устанавливаются успешно. Однако на устройстве есть индикаторы, показывающие текущую частоту дискретизации. Исходя из их показаний частоты дискретизации не переключаются </div></div><br>
а если после BASS_ASIO_SetRate вызвать BASS_ASIO_ControlPanel и глянуть там, установилась ли заданная частота.]]></description>
        <author>Prince</author>
        <category>Программирование звука</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=406406&amp;view=findpost&amp;p=3642435</guid>
        <pubDate>Tue, 15 Dec 2015 19:49:43 +0000</pubDate>
        <title>Работа с BassAsio</title>
        <link>https://forum.sources.ru/index.php?showtopic=406406&amp;view=findpost&amp;p=3642435</link>
        <description><![CDATA[tuchin: Запись на Дельте прекрасно работает, все команды установки частоты дискретизации отрабатываются без проблем. Видимо, Моту имеет какие-то особенности, в которых нужно разбираться. Если разберетесь, сообщите, пожалуйста, в чем было дело. Интересно, из-за чего могут быть такие проблемы.]]></description>
        <author>tuchin</author>
        <category>Программирование звука</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=406406&amp;view=findpost&amp;p=3640976</guid>
        <pubDate>Wed, 09 Dec 2015 10:56:10 +0000</pubDate>
        <title>Работа с BassAsio</title>
        <link>https://forum.sources.ru/index.php?showtopic=406406&amp;view=findpost&amp;p=3640976</link>
        <description><![CDATA[tuchin: Я попробовал. Сообщение об успешной установке: 44100, 48000, 88200, 96000. Ошибки: 64000, 19200. К сожалению, на Delta 66 нет индикаторов, поэтому проверить, правильно ли устанавливается частота дискретизации, можно лишь записав тестовый аудио сигнал в файлы при разных частотах и загрузив их в аудиоредактор. Если Вы дополните свою тестовую программу возможностью записи в файлы при разных частотах хотя бы по одному каналу, обещаю проверить, как только будет время.]]></description>
        <author>tuchin</author>
        <category>Программирование звука</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=406406&amp;view=findpost&amp;p=3640791</guid>
        <pubDate>Tue, 08 Dec 2015 13:41:11 +0000</pubDate>
        <title>Работа с BassAsio</title>
        <link>https://forum.sources.ru/index.php?showtopic=406406&amp;view=findpost&amp;p=3640791</link>
        <description><![CDATA[tumanovalex: tuchin, попробуйте, пожалуйста, тестовую программу на своей Дельте]]></description>
        <author>tumanovalex</author>
        <category>Программирование звука</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=406406&amp;view=findpost&amp;p=3640666</guid>
        <pubDate>Mon, 07 Dec 2015 16:47:00 +0000</pubDate>
        <title>Работа с BassAsio</title>
        <link>https://forum.sources.ru/index.php?showtopic=406406&amp;view=findpost&amp;p=3640666</link>
        <description><![CDATA[tumanovalex: Попробовал использовать BassAsio со своей Motu Traveler. Сделал простую программу для установки различной частоты дискретизации:<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">#include &#60;iostream&#62;</div><div class="code_line">#include &quot;bassasio.h&quot;</div><div class="code_line">&nbsp;</div><div class="code_line">#pragma comment(lib, &quot;bassasio.lib&quot;)</div><div class="code_line">&nbsp;</div><div class="code_line">void ErrorMes(char* sMes, int Res)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;std::cout &#60;&#60; &quot;\n&quot; &#60;&#60; std::cout &#60;&#60; sMes &#60;&#60; Res &#60;&#60; &quot;\n\n&quot;;</div><div class="code_line">&nbsp;&nbsp;system(&quot;pause&quot;);</div><div class="code_line">&nbsp;&nbsp;exit(EXIT_FAILURE); &nbsp; // EXIT_SUCCESS, EXIT_FAILURE</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">void TestAsio(void) </div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;std::cout &#60;&#60; &quot;\n-------------- Определение поддерживаемой частоты дискретизации ------------\n&quot;;</div><div class="code_line">&nbsp;&nbsp;int nSamplesPerSec[] = {44100, 48000, 64000, 88200, 96000, 176400, 192000};</div><div class="code_line">&nbsp;&nbsp;if(FALSE == BASS_ASIO_Init(0, BASS_ASIO_THREAD)) </div><div class="code_line">&nbsp;&nbsp; &nbsp;ErrorMes(&quot;Не удалось инициализировать устройство (или драйвер) командой BASS_ASIO_Init. Ошибка: &quot;, BASS_ASIO_ErrorGetCode());</div><div class="code_line">&nbsp;&nbsp;if(FALSE == BASS_ASIO_SetDevice(0))</div><div class="code_line">&nbsp;&nbsp; &nbsp;ErrorMes(&quot;Не удалось выбрать устройство командой BASS_ASIO_SetDevice. Ошибка: &quot;, BASS_ASIO_ErrorGetCode());</div><div class="code_line">&nbsp;&nbsp; &nbsp;if(FALSE == BASS_ASIO_ChannelReset(TRUE,-1,BASS_ASIO_RESET_ENABLE))</div><div class="code_line">&nbsp;&nbsp; &nbsp;ErrorMes(&quot;Не удалось сбросить все каналы командой BASS_ASIO_ChannelReset. Ошибка: &quot;, BASS_ASIO_ErrorGetCode());</div><div class="code_line">&nbsp;&nbsp;if(FALSE == BASS_ASIO_ChannelReset(TRUE,-1,BASS_ASIO_RESET_RATE))</div><div class="code_line">&nbsp;&nbsp; &nbsp;ErrorMes(&quot;Не удалось установить частоту дискретизации устройства командой BASS_ASIO_ChannelReset c BASS_ASIO_RESET_RATE. Ошибка: &quot;, BASS_ASIO_ErrorGetCode());</div><div class="code_line">&nbsp;&nbsp;for(int i = 0; i &#60; sizeof(nSamplesPerSec)/sizeof(nSamplesPerSec[0]); i++)</div><div class="code_line">&nbsp;&nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;if(FALSE == BASS_ASIO_SetRate((double) nSamplesPerSec[i]))</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;std::cout &#60;&#60; &quot;\n!!! Ошибка при установке частоты дискретизации &quot; &#60;&#60; nSamplesPerSec[i] &#60;&#60; std::endl &#60;&#60; std::endl;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;continue;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::cout &#60;&#60; &quot;\n+++++++++++++++ Установлена частота дискретизация: &quot; &#60;&#60; BASS_ASIO_GetRate() &#60;&#60; &quot; +++++++++++++++\n\n&quot;;</div><div class="code_line">&nbsp;&nbsp; &nbsp;system(&quot;pause&quot;);</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">&nbsp;&nbsp;BASS_ASIO_Free();</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">int main(int argc, char* argv[]) </div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;setlocale(LC_ALL, &quot;&quot;);</div><div class="code_line">&nbsp;&nbsp;TestAsio();</div><div class="code_line">&nbsp;&nbsp;system(&quot;pause&quot;);</div><div class="code_line">}</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script>BASS_ASIO_GetRate() рапортует, что частоты устанавливаются успешно. Однако на устройстве есть индикаторы, показывающие текущую частоту дискретизации. Исходя из их показаний частоты дискретизации не переключаются (если частота установлена на 192000, то индикатор частоты дискретизации так и стоит на 192000 и не переключается при работе программы, если начальная частота 44100, то устанавливается 48000 и далее индикатор замирает на этой частоте). Если выбирать частоту дискретизации стандартной программой Motu Audio Console, то при установке любой из допустимых частот (44100, 48000, 88200, 96000, 176400, 192000) и нажатия кнопки ОК индикатор сразу же переключается на установленную в этой программе частоту.<br>
Подскажите, пожалуйста, что я делаю неправильно. Проект прикрепил.<br>
<span class="b-attach" data-size="20575" data-hits="265" data-attach-id="48027" data-attach-post-id="3640666">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=3640666&amp;attach_id=48027' title='Скачать файл' target='_blank'>TestAsio.zip</a> (, : 265)
		</span>]]></description>
        <author>tumanovalex</author>
        <category>Программирование звука</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=406406&amp;view=findpost&amp;p=3632482</guid>
        <pubDate>Sun, 01 Nov 2015 08:58:19 +0000</pubDate>
        <title>Работа с BassAsio</title>
        <link>https://forum.sources.ru/index.php?showtopic=406406&amp;view=findpost&amp;p=3632482</link>
        <description><![CDATA[tuchin: Спасибо за дополнения]]></description>
        <author>tuchin</author>
        <category>Программирование звука</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=406406&amp;view=findpost&amp;p=3632479</guid>
        <pubDate>Sun, 01 Nov 2015 06:55:52 +0000</pubDate>
        <title>Работа с BassAsio</title>
        <link>https://forum.sources.ru/index.php?showtopic=406406&amp;view=findpost&amp;p=3632479</link>
        <description><![CDATA[Prince: На всякий пожарный, BASS_ASIO_GetRate возвращает текущую частоту дискретизации, заданную в настройках драйвера вручную, или через BASS_ASIO_SetRate.]]></description>
        <author>Prince</author>
        <category>Программирование звука</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=406406&amp;view=findpost&amp;p=3632405</guid>
        <pubDate>Sat, 31 Oct 2015 13:24:05 +0000</pubDate>
        <title>Работа с BassAsio</title>
        <link>https://forum.sources.ru/index.php?showtopic=406406&amp;view=findpost&amp;p=3632405</link>
        <description><![CDATA[tuchin: Спасибо большое, все понял. Попробую BASS_ASIO_CheckRate и BASS_ASIO_SetRate, надеюсь, они дадут правильные результаты.]]></description>
        <author>tuchin</author>
        <category>Программирование звука</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=406406&amp;view=findpost&amp;p=3632396</guid>
        <pubDate>Sat, 31 Oct 2015 11:06:42 +0000</pubDate>
        <title>Работа с BassAsio</title>
        <link>https://forum.sources.ru/index.php?showtopic=406406&amp;view=findpost&amp;p=3632396</link>
        <description><![CDATA[Prince: Для проверки поддерживаемых частот дискретизации <strong class='tag-b'>устройства</strong> есть функция BASS_ASIO_CheckRate. <br>
Для установки частоты дискретизации <strong class='tag-b'>устройства</strong> есть функция BASS_ASIO_SetRate.<br>
Ну и загляните в настройки драйвера, какая частота установлена(если установлена) там.<br>
Если устройство не поддерживает желаемую частоту, но вы очень хотите именно такую, тогда вы устанавливаете корректную нативную частоту в BASS_ASIO_SetRate и используете BASS_ASIO_ChannelSetRate для установки желаемой(для конкретного канала). При таком раскладе, bassasio будет выполнять передискретизацию данных из нативной частоты устройства в установленную для этого канала, &quot;на лету&quot;. Такая фишка может быть полезна, но сведёт на нет одно из преимуществ  ASIO, а именно возможность получать данные от устройства &quot;как есть&quot;, без промежуточных преобразований(как в системном микшере виндовс). И, возможность отдавать устройству данные в его родном формате, также без промежуточных преобразований. За что ASIO &quot;уважают&quot; аудиофилы. Передискретизация также дополнительно нагружает систему.<br>
<br>
Для проверки нативных форматов(формата) семпла - BASS_ASIO_ChannelGetInfo. Аналогично, если желаемый формат отличается от нативного, и вы его устанавливаете в BASS_ASIO_ChannelSetFormat, bassasio выполняет преобразование формата и отдаёт вам уже не совсем то, что прилетает от устройства. <br>
<br>
Всё есть в справке.<br>
<br>
Эта инфа ни к чему не обязывает, думайте сами, решайте сами. Правильный выбор частоты/формата  - субъективен. Если вам не важна &quot;точность передачи&quot;, а только &quot;многоканальность&quot; ASIO, можно устанавливать любые удобные частоту дискретизации и формат семпла(естественно, поддерживаемые bassasio).<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Но какое-то ограничение на усиление ведь должно же быть</div></div><br>
Ну, конечно. Допустим, формат 16 бит, а значение семпла 1000. Умножив его на 100, получите 100000, т.е., переполнение 16 битного числа, и как результат - искажение звука. Кроме того, при таком програмном &quot;усилении&quot;, вы усиливаете шум аудиотракта, вместе с полезным сигналом.]]></description>
        <author>Prince</author>
        <category>Программирование звука</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=406406&amp;view=findpost&amp;p=3632334</guid>
        <pubDate>Fri, 30 Oct 2015 18:13:04 +0000</pubDate>
        <title>Работа с BassAsio</title>
        <link>https://forum.sources.ru/index.php?showtopic=406406&amp;view=findpost&amp;p=3632334</link>
        <description><![CDATA[tuchin: Попробовал определить программно некоторые допустимые параметры Delta 66:<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">#include &#60;string&#62;</div><div class="code_line">#include &#60;iostream&#62;</div><div class="code_line">#include &quot;bassasio.h&quot;</div><div class="code_line">&nbsp;</div><div class="code_line">#pragma comment(lib, &quot;bassasio.lib&quot;)</div><div class="code_line">&nbsp;</div><div class="code_line">using namespace std;</div><div class="code_line">&nbsp;</div><div class="code_line">void GetAsioInfo(void);</div><div class="code_line">void ErrorMes(string sMes, int Res);</div><div class="code_line">&nbsp;</div><div class="code_line">int main(int argc, char* argv[]) </div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;setlocale(LC_ALL, &quot;&quot;);</div><div class="code_line">&nbsp;&nbsp;GetAsioInfo();</div><div class="code_line">&nbsp;&nbsp;system(&quot;pause&quot;);</div><div class="code_line">&nbsp;&nbsp;return(EXIT_SUCCESS);</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">void ErrorMes(string sMes, int Res)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;cout &#60;&#60; sMes &#60;&#60; Res &#60;&#60; endl;</div><div class="code_line">&nbsp;&nbsp;system(&quot;pause&quot;);</div><div class="code_line">&nbsp;&nbsp;exit(EXIT_SUCCESS); &nbsp; </div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">void GetAsioInfo(void) </div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;if (!BASS_ASIO_Init(0, BASS_ASIO_THREAD))</div><div class="code_line">&nbsp;&nbsp;ErrorMes(&quot;Не удалось инициализировать устройство. Ошибка: &quot;, BASS_ASIO_ErrorGetCode());</div><div class="code_line">&nbsp;&nbsp;int nSamplesPerSec[] = {44100, 48000, 64000, 88200, 96000, 192000, 1600000}; &nbsp;</div><div class="code_line">&nbsp;&nbsp;cout &#60;&#60; &quot;\n---------- Определение поддерживаемой дискретизации ------------\n&quot; &#60;&#60; endl;</div><div class="code_line">&nbsp;&nbsp;for(int i = 0; i &#60; sizeof(nSamplesPerSec)/sizeof(int); i++)</div><div class="code_line">&nbsp;&nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;if(BASS_ASIO_ChannelSetRate(TRUE, 0, (double) nSamplesPerSec[i]) == FALSE)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;cout &#60;&#60; &quot;\n!!! Ошибка при установке дискретизации &quot; &#60;&#60; nSamplesPerSec[i] &#60;&#60; endl &#60;&#60; endl;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;break;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;cout &#60;&#60; &quot;Установлена дискретизация &quot; &#60;&#60; BASS_ASIO_ChannelGetRate(TRUE, 0) &#60;&#60; endl;</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">&nbsp;&nbsp;cout &#60;&#60; &quot;\n---------- Определение поддерживаемой разрядности ------------\n&quot; &#60;&#60; endl;</div><div class="code_line">&nbsp;&nbsp;int nBitsPerSample[] = {BASS_ASIO_FORMAT_16BIT, BASS_ASIO_FORMAT_24BIT, BASS_ASIO_FORMAT_32BIT, </div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;BASS_ASIO_FORMAT_FLOAT, BASS_ASIO_FORMAT_DSD_LSB, BASS_ASIO_FORMAT_DSD_MSB};</div><div class="code_line">&nbsp;&nbsp;for(int i = 0; i &#60; sizeof(nBitsPerSample)/sizeof(int); i++)</div><div class="code_line">&nbsp;&nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;if(BASS_ASIO_ChannelSetFormat(TRUE, 0, nBitsPerSample[i]) == FALSE)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;cout &#60;&#60; &quot;\n !!! Ошибка при установке разрядности: элемент массива nBitsPerSample номер &quot; &#60;&#60; i &#60;&#60; endl &#60;&#60; endl;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;break;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;cout &#60;&#60; &quot;Установлена дискретизация &quot; &#60;&#60; BASS_ASIO_ChannelGetFormat(TRUE, 0) &#60;&#60; endl;</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">&nbsp;&nbsp;cout &#60;&#60; &quot;\n---------- Определение поддерживаемого усиления -------------\n&quot; &#60;&#60; endl;</div><div class="code_line">&nbsp;&nbsp;float volume = 1.0e32;</div><div class="code_line">&nbsp;&nbsp;if(BASS_ASIO_ChannelSetVolume(TRUE, 0, volume) == FALSE)</div><div class="code_line">&nbsp;&nbsp; &nbsp;cout &#60;&#60; &quot;\n !!! Ошибка при установке усиления: &quot; &#60;&#60; volume &#60;&#60; endl &#60;&#60; endl;</div><div class="code_line">&nbsp;&nbsp;cout &#60;&#60; &quot;Установлено усиления: &quot; &#60;&#60; BASS_ASIO_ChannelGetVolume(TRUE, 0) &#60;&#60; endl &#60;&#60; endl;</div><div class="code_line">&nbsp;&nbsp;cout &#60;&#60; &quot;\n---------- Определение размера буфера -------------\n&quot; &#60;&#60; endl;</div><div class="code_line">&nbsp;&nbsp;int nBuf = 8192;</div><div class="code_line">&nbsp;&nbsp;if(BASS_ASIO_Start(nBuf, 0) == FALSE)</div><div class="code_line">&nbsp;&nbsp; &nbsp;cout &#60;&#60; &quot;\n !!! Ошибка при установке размера буфера: &quot; &#60;&#60; nBuf &#60;&#60; endl &#60;&#60; endl;</div><div class="code_line">&nbsp;&nbsp;BASS_ASIO_INFO di;</div><div class="code_line">&nbsp;&nbsp;BASS_ASIO_GetInfo(&amp;di);</div><div class="code_line">&nbsp;&nbsp;cout &#60;&#60; &quot;Установлен размер буфера: &quot; &#60;&#60; di.bufpref &#60;&#60; endl &#60;&#60; endl;</div><div class="code_line">&nbsp;&nbsp;BASS_ASIO_Free();</div><div class="code_line">}</div></ol></div></div></div></div>В результате получил следующее:<br>
---------- Определение поддерживаемой дискретизации ------------<br>
<br>
Установлена дискретизация 44100<br>
Установлена дискретизация 48000<br>
Установлена дискретизация 64000<br>
Установлена дискретизация 88200<br>
Установлена дискретизация 96000<br>
Установлена дискретизация 192000<br>
Установлена дискретизация 1.6e+006<br>
<br>
---------- Определение поддерживаемой разрядности ------------<br>
<br>
Установлена дискретизация 16<br>
Установлена дискретизация 17<br>
Установлена дискретизация 18<br>
Установлена дискретизация 19<br>
<br>
 &#33;&#33;&#33; Ошибка при установке разрядности: элемент массива nBitsPerSample номер 4<br>
<br>
<br>
---------- Определение поддерживаемого усиления -------------<br>
<br>
Установлено усиления: 1e+032<br>
<br>
<br>
---------- Определение размера буфера -------------<br>
<br>
<br>
 &#33;&#33;&#33; Ошибка при установке размера буфера: 8192<br>
<br>
Установлен размер буфера: 4096<br>
<br>
Получается:<br>
- BASS_ASIO_ChannelSetRate ошибки не дает (в отличие от BASS_ASIO_ChannelSetFormat и установки размера буфера) и дискретизацию можно задавать любую;<br>
- BASS_ASIO_ChannelSetVolume ошибки не дает даже при очень большом значении усиления.<br>
<br>
В отношении усиления: я попробовал записать сигнал с первого входа при усилении 100. В файл записывается действительно усиленный сигнал. Вы объяснили, что это программное усиление, а не аппаратное. Но какое-то ограничение на усиление ведь должно же быть?<br>
<br>
В отношении частоты дискретизации вообще непонятно, почему нет срабатывания функции ее установки при безумном значении частоты.<br>
<br>
Почему такое происходит?]]></description>
        <author>tuchin</author>
        <category>Программирование звука</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=406406&amp;view=findpost&amp;p=3632082</guid>
        <pubDate>Thu, 29 Oct 2015 04:51:01 +0000</pubDate>
        <title>Работа с BassAsio</title>
        <link>https://forum.sources.ru/index.php?showtopic=406406&amp;view=findpost&amp;p=3632082</link>
        <description><![CDATA[tuchin: Спасибо за ответы&#33;]]></description>
        <author>tuchin</author>
        <category>Программирование звука</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=406406&amp;view=findpost&amp;p=3632016</guid>
        <pubDate>Wed, 28 Oct 2015 15:41:49 +0000</pubDate>
        <title>Работа с BassAsio</title>
        <link>https://forum.sources.ru/index.php?showtopic=406406&amp;view=findpost&amp;p=3632016</link>
        <description><![CDATA[Prince: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>ASIO в принципе не позволяет управлять входным аппаратным усилением</div></div><br>
По моим сведениям - нет.<br>
<a class='tag-url' href='http://www.google.com.ua/url?url=http://comp.ist.utl.pt/ec-ra/Laboratorio/ASIO%2520SDK%25202.pdf&rct=j&q=&esrc=s&sa=U&ved=0CBMQFjAAahUKEwiS4errv-XIAhWCh3IKHYEmC_U&usg=AFQjCNFrcWLU8TDQHxdXyyIJSsYcLf_0kg' target='_blank'>ASIO Interface Specification v 2.0</a>]]></description>
        <author>Prince</author>
        <category>Программирование звука</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=406406&amp;view=findpost&amp;p=3631913</guid>
        <pubDate>Wed, 28 Oct 2015 06:33:19 +0000</pubDate>
        <title>Работа с BassAsio</title>
        <link>https://forum.sources.ru/index.php?showtopic=406406&amp;view=findpost&amp;p=3631913</link>
        <description><![CDATA[tuchin: Проверил возможность изменения размера буфера в Start. Все работает. Вопрос 2 снимаю как глупый. Тем более, что Вы уже это объяснили.]]></description>
        <author>tuchin</author>
        <category>Программирование звука</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=406406&amp;view=findpost&amp;p=3631901</guid>
        <pubDate>Wed, 28 Oct 2015 05:11:45 +0000</pubDate>
        <title>Работа с BassAsio</title>
        <link>https://forum.sources.ru/index.php?showtopic=406406&amp;view=findpost&amp;p=3631901</link>
        <description><![CDATA[tuchin: Спасибо за подробные объяснения.<br>При определении параметров устройства я получил несколько значений буфера:<br>Размеры буферов (min, max, default) (количество отсчетов): 64 4096 256<br>В связи с этим я подумал, что можно задавать значение буфера.<br>Хотел бы уточнить следующее:<br>1. ASIO в принципе не позволяет управлять входным аппаратным усилением (в отличие от MME) или это не умеет делать bassasio (в обертке это не предусмотрено)?<br>2. Если я в результате экспериментов вижу, что заданное по умолчанию значение буфера не подходит (сейчас у меня 512), как же я могу снизить нагрузку на процессор, частоту вызова колбэк функции и др.]]></description>
        <author>tuchin</author>
        <category>Программирование звука</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=406406&amp;view=findpost&amp;p=3631833</guid>
        <pubDate>Tue, 27 Oct 2015 18:16:06 +0000</pubDate>
        <title>Работа с BassAsio</title>
        <link>https://forum.sources.ru/index.php?showtopic=406406&amp;view=findpost&amp;p=3631833</link>
        <description><![CDATA[Prince: bassasio.dll - это библиотека-обёртка над API ASIO, спрятанными в других dll, которые устанавливаются с драйвером устройства(являются его частью). Так же как библиотека bass.dll - это обёртка над API DirectSound(+ кучка дополнительных плюшек). <br>
Bass, bassasio упрощают работу с низкоуровневыми интерфейсами. Множество действий, выполняемых програмистом при работе с низкоуровневыми функциями, они берут на себя. <br>
В частности, вам не нужно выделять/освобождать память под буферы для записи. Все операции с буферами скрыты внутри bassasio. <br>
Размер буфера(в семплах) задаётся при старте устройства в BASS_ASIO_Start. От размера буфера, и количества задействованых каналов, будет зависеть частота вызова колбэк, соотвественно и нагрузка на проц(систему). <br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>как задать размер буфера (length) в колбэк функции</div></div><br>
И ещё раз. length не нужно задавать. <br>
Вы пишете колбэк функцию предопределенного формата и передаете адрес этой функции куда-то &quot;вовнутрь&quot; bassasio при вызове BASS_ASIO_ChannelEnable. Затем, после того, как устройство стартует, кто-то, откуда-то(это неважно), периодически вызывает написанный вами колбэк-код(функцию) и передаёт туда адрес и размер доступных для обработки данных(buffer, length). Ваш код эти данные обрабатывает(ну, вы что-то делаете с этими данными). Или ничего не делаете - дело ваше. Всё. Ничего задавать не нужно. Только обработать этот блок данных(записать в файл, например).<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>можно ли в азио изменять усиление по входу?</div></div><br>
Нет. С этим не к ASIO.<br>
Хотя библиотека bassasio позволяет изменять уровень сигнала в канале при помощи функции BASS_ASIO_ChannelSetVolume. Но, функция не имеет отношения к настройкам железа. Она изменяет значения семплов, т.е., производит манипуляцию над данными, поступающими от устройства(при записи) или к устройству(при воспроизведении).<br>
<br>
В MME есть функции для управления аппаратным микшером устройства. Функции группы MixerXXX.]]></description>
        <author>Prince</author>
        <category>Программирование звука</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=406406&amp;view=findpost&amp;p=3631718</guid>
        <pubDate>Tue, 27 Oct 2015 09:18:59 +0000</pubDate>
        <title>Работа с BassAsio</title>
        <link>https://forum.sources.ru/index.php?showtopic=406406&amp;view=findpost&amp;p=3631718</link>
        <description><![CDATA[tuchin: Спасибо большое за ответы&#33; Возникли ещё вопросы:<br>- как задать размер буфера (length) в колбэк функции?<br>- можно ли в азио изменять усиление по входу? Интересует максимальное усиление.]]></description>
        <author>tuchin</author>
        <category>Программирование звука</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=406406&amp;view=findpost&amp;p=3631633</guid>
        <pubDate>Mon, 26 Oct 2015 20:02:58 +0000</pubDate>
        <title>Работа с BassAsio</title>
        <link>https://forum.sources.ru/index.php?showtopic=406406&amp;view=findpost&amp;p=3631633</link>
        <description><![CDATA[Prince: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '> как работает в Asio колбек функция</div></div><br>
Как и любая колбек функция. Адрес функции в качестве параметра передаётся в ASIO_ChannelEnable, а потом эта функция вызывается откуда-то из недр bassasio или ещё откуда-то.<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>как правильно добавлять свободные буферы для записи</div></div><br>
Механизм выделения/освобождения памяти спрятан внутри bassasio, ничего добавлять не нужно, можно указать желательный размер буфера при инициализации(или использовать размер по умолчанию).<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>как колбек функция информирует о заполнении буфера</div></div><br>
Сам по себе вызов функции - это и есть механизм уведомления приложения о том, что в канале записи есть данные для обработки. Адрес и размер данных передаются в качестве параметров.<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Звук с микрофона, подключенного к первому входному каналу, не записывается</div></div><br>
Активировать 1-й канал через ASIO_ChannelEnable и записывать данные канала в файл, в колбек. Только в другой файл, не в тот, куда сливаются данные 0-го канала. Будут 2 моно файла. Если необходим стерео файл,  каналы объединяются посредством BASS_ASIO_ChannelJoin, тогда семплы каналов будут чередоваться в буфере.<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>как правильно прекратить запись;</div></div><br>
BASS_ASIO_Stop<br>
BASS_ASIO_ChannelEnable<br>
BASS_ASIO_ChannelReset<br>
BASS_ASIO_ChannelPause<br>
BASS_ASIO_Free<br>
Смотря что подразумевается под &quot;прекратить&quot;. <br>
<br>
Читайте справку.]]></description>
        <author>Prince</author>
        <category>Программирование звука</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=406406&amp;view=findpost&amp;p=3631624</guid>
        <pubDate>Mon, 26 Oct 2015 18:03:30 +0000</pubDate>
        <title>Работа с BassAsio</title>
        <link>https://forum.sources.ru/index.php?showtopic=406406&amp;view=findpost&amp;p=3631624</link>
        <description><![CDATA[tuchin: Забыл прикрепить файл<br>
<span class="b-attach" data-size="21551" data-hits="300" data-attach-id="47497" data-attach-post-id="3631624">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=3631624&amp;attach_id=47497' title='Скачать файл' target='_blank'>BassAsio.zip</a> (, : 300)
		</span>]]></description>
        <author>tuchin</author>
        <category>Программирование звука</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=406406&amp;view=findpost&amp;p=3631622</guid>
        <pubDate>Mon, 26 Oct 2015 17:56:29 +0000</pubDate>
        <title>Работа с BassAsio</title>
        <link>https://forum.sources.ru/index.php?showtopic=406406&amp;view=findpost&amp;p=3631622</link>
        <description><![CDATA[tuchin: Решил попробовать поработать с BassAsio на своей Дельте 66. За основу взял прикрепленный проект BassAsio. Информацию о входах Дельты 66 получил следующую: <br>
M-Audio ASIO	5078<br>
Количество входов: 8<br>
Размеры буферов (min, max, default) (количество отсчетов): 64	4096	256<br>
Устройство инициализировано<br>
<br>
--------------------- Входные устройства ASIO ----------------------<br>
<br>
0	Analog In 1 Delta-66<br>
1	Analog In 2 Delta-66<br>
2	Analog In 3 Delta-66<br>
3	Analog In 4 Delta-66<br>
4	SPDIF In L Delta-66<br>
5	SPDIF In R Delta-66<br>
6	Monitor L Delta-66<br>
7	Monitor R Delta-66<br>
<br>
Попробовал записать звук пока только для одного канала (канал 0), используя пример из bassasio13.zip:<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">#include &#60;windows.h&#62;</div><div class="code_line">#include &#60;conio.h&#62;</div><div class="code_line">#include &#60;string&#62;</div><div class="code_line">#include &#60;vector&#62;</div><div class="code_line">#include &#60;iostream&#62;</div><div class="code_line">#include &quot;bassasio.h&quot;</div><div class="code_line">&nbsp;</div><div class="code_line">#pragma comment(lib, &quot;bassasio.lib&quot;)</div><div class="code_line">&nbsp;</div><div class="code_line">#define BUFSTEP 200000 &nbsp;// memory allocation unit</div><div class="code_line">int input=0; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// current input source</div><div class="code_line">char *recbuf=NULL; &nbsp; &nbsp; &nbsp;// recording buffer</div><div class="code_line">DWORD reclen; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // recording length</div><div class="code_line">BOOL recording=FALSE;</div><div class="code_line">float level=0;</div><div class="code_line">int nKan;</div><div class="code_line">std::vector&#60;FILE*&#62; pf;</div><div class="code_line">&nbsp;</div><div class="code_line">void ErrorMes(std::string mes, int Res);</div><div class="code_line">void GetAsioInfoCyr(void);</div><div class="code_line">void RecordAsio();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">int main(int argc, char* argv[]) </div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;setlocale(LC_ALL, &quot;&quot;);</div><div class="code_line">&nbsp;&nbsp;GetAsioInfoCyr();</div><div class="code_line">&nbsp;&nbsp;std::vector&#60;std::string&#62; vFileName;</div><div class="code_line">&nbsp;&nbsp;vFileName.push_back(&quot;file1&quot;);</div><div class="code_line">&nbsp;&nbsp;nKan = 1;</div><div class="code_line">&nbsp;&nbsp;for(int j = 0; j &#60; nKan; j++)</div><div class="code_line">&nbsp;&nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;pf.push_back(fopen((char*) (vFileName[j] + &quot;.pcm&quot;).c_str(), &quot;wb&quot;));</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">&nbsp;&nbsp;RecordAsio();</div><div class="code_line">&nbsp;&nbsp;for(int j = 0; j &#60; nKan; j++)</div><div class="code_line">&nbsp;&nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;fclose(pf[j]);</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">&nbsp;&nbsp;system(&quot;pause&quot;);</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">void ErrorMes(std::string sMes, int Res)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;std::cout &#60;&#60; sMes &#60;&#60; Res &#60;&#60; std::endl;</div><div class="code_line">&nbsp;&nbsp;system(&quot;pause&quot;);</div><div class="code_line">&nbsp;&nbsp;exit(EXIT_SUCCESS); &nbsp; // EXIT_SUCCESS, EXIT_FAILURE</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">void GetAsioInfoCyr(void) </div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;int i;</div><div class="code_line">&nbsp;&nbsp;if (!BASS_ASIO_Init(0, BASS_ASIO_THREAD))</div><div class="code_line">&nbsp;&nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;ErrorMes(&quot;Не удалось инициализировать устройство. Ошибка: &quot;, BASS_ASIO_ErrorGetCode());</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">&nbsp;&nbsp;BASS_ASIO_INFO di;</div><div class="code_line">&nbsp;&nbsp;BASS_ASIO_GetInfo(&amp;di);</div><div class="code_line">&nbsp;&nbsp;std::cout &#60;&#60; di.name &#60;&#60; &quot;\t&quot; &#60;&#60; di.version &#60;&#60; std::endl;</div><div class="code_line">&nbsp;&nbsp;std::cout &#60;&#60; &quot;Количество входов: &quot; &#60;&#60; di.inputs &#60;&#60; std::endl;</div><div class="code_line">&nbsp;&nbsp;std::cout &#60;&#60; &quot;Размеры буферов (min, max, default) (количество отсчетов): &quot; &#60;&#60; di.bufmin &#60;&#60; &quot;\t&quot; &#60;&#60; &nbsp;di.bufmax </div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#60;&#60; &quot;\t&quot; &#60;&#60; di.bufpref &#60;&#60; std::endl;</div><div class="code_line">&nbsp;&nbsp;if(di.initflags == 1) </div><div class="code_line">&nbsp;&nbsp; &nbsp;std::cout &#60;&#60; &quot;Устройство инициализировано&quot; &#60;&#60; std::endl;</div><div class="code_line">&nbsp;&nbsp;else </div><div class="code_line">&nbsp;&nbsp; &nbsp;std::cout &#60;&#60; &quot;Устройство неинициализировано&quot; &#60;&#60; std::endl;</div><div class="code_line">&nbsp;&nbsp; &nbsp;BASS_ASIO_CHANNELINFO chi;</div><div class="code_line">&nbsp;&nbsp;std::cout &#60;&#60; &quot;\n--------------------- Входные устройства ASIO ----------------------\n&quot; &#60;&#60; std::endl;</div><div class="code_line">&nbsp;&nbsp; &nbsp;for (i = 0; BASS_ASIO_ChannelGetInfo(TRUE, i, &amp;chi); i++)</div><div class="code_line">&nbsp;&nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::cout &#60;&#60; i &#60;&#60; &quot;\t&quot; &#60;&#60; chi.name &#60;&#60; std::endl;</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">&nbsp;&nbsp;std::cout &#60;&#60; std::endl; &nbsp; &nbsp; &nbsp; </div><div class="code_line">&nbsp;&nbsp;BASS_ASIO_Free();</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">DWORD CALLBACK AsioProc(BOOL isinput, DWORD channel, void *buffer, DWORD length, void *user)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (!recbuf) return 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// increase buffer size if needed</div><div class="code_line">&nbsp;&nbsp; &nbsp;if ((reclen%BUFSTEP)+length&#62;=BUFSTEP) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;recbuf= (char*) realloc(recbuf,((reclen+length)/BUFSTEP+1)*BUFSTEP);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if (!recbuf) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ErrorMes(&quot;Не удалось выделить буфер&quot;, 1);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;// buffer the data</div><div class="code_line">&nbsp;&nbsp; &nbsp;memcpy(recbuf+reclen,buffer,length);</div><div class="code_line">&nbsp;&nbsp; &nbsp;reclen+=length;</div><div class="code_line">&nbsp;&nbsp;while(recording == TRUE)</div><div class="code_line">&nbsp;&nbsp; &nbsp;fwrite(buffer, length, 1, pf[0]);</div><div class="code_line">&nbsp;&nbsp; &nbsp;return 0;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">void RecordAsio()</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;if (!BASS_ASIO_Init(0, BASS_ASIO_THREAD))</div><div class="code_line">&nbsp;&nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;ErrorMes(&quot;Не удалось инициализировать устройство. Ошибка: &quot;, BASS_ASIO_ErrorGetCode());</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">&nbsp;&nbsp;WAVEFORMATEX wvFormat;</div><div class="code_line">&nbsp;&nbsp;wvFormat.wFormatTag &nbsp; &nbsp; &nbsp;= WAVE_FORMAT_PCM;</div><div class="code_line">&nbsp;&nbsp;wvFormat.nChannels &nbsp; &nbsp; &nbsp; = 1;</div><div class="code_line">&nbsp;&nbsp;wvFormat.nSamplesPerSec &nbsp;= 44100;</div><div class="code_line">&nbsp;&nbsp;wvFormat.wBitsPerSample &nbsp;= 16;</div><div class="code_line">&nbsp;&nbsp;wvFormat.nBlockAlign &nbsp; &nbsp; = (wvFormat.nChannels*wvFormat.wBitsPerSample + 7)/8;</div><div class="code_line">&nbsp;&nbsp;wvFormat.nAvgBytesPerSec = wvFormat.nSamplesPerSec*wvFormat.nBlockAlign;</div><div class="code_line">&nbsp;&nbsp;wvFormat.cbSize &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= sizeof(wvFormat);</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (recbuf) </div><div class="code_line">&nbsp;&nbsp;{ // free old recording</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;BASS_ASIO_Stop(); // stop ASIO device in case it was playing</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;BASS_ASIO_ChannelReset(FALSE,-1,BASS_ASIO_RESET_ENABLE); // disable outputs in preparation for recording</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;free(recbuf);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;recbuf=NULL;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;// allocate initial buffer and make space for WAVE header</div><div class="code_line">&nbsp;&nbsp; &nbsp;recbuf=(char*)malloc(BUFSTEP);</div><div class="code_line">&nbsp;&nbsp; &nbsp;reclen=44;</div><div class="code_line">&nbsp;&nbsp; &nbsp;BASS_ASIO_ChannelReset(TRUE,-1,BASS_ASIO_RESET_ENABLE); // disable all inputs, then...</div><div class="code_line">&nbsp;&nbsp; &nbsp;BASS_ASIO_ChannelEnable(TRUE, 0, AsioProc,0); // enable the selected</div><div class="code_line">&nbsp;&nbsp;BASS_ASIO_ChannelSetFormat(TRUE, 0, BASS_ASIO_FORMAT_16BIT); // want 16-bit data</div><div class="code_line">&nbsp;&nbsp;if (!BASS_ASIO_Start(0,0)) </div><div class="code_line">&nbsp;&nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;ErrorMes(&quot;Can&#39;t start recording&quot;, BASS_ASIO_ErrorGetCode());</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;free(recbuf);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;recbuf=0;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;return;</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;recording=TRUE;</div><div class="code_line">&nbsp;&nbsp;_getch();</div><div class="code_line">&nbsp;&nbsp; &nbsp;recording=FALSE;</div><div class="code_line">&nbsp;&nbsp;BASS_ASIO_Free();</div><div class="code_line">}</div></ol></div></div></div></div>Звук с микрофона, подключенного к первому входному каналу, не записывается. Исправить программу сам не сумею, поскольку не понимаю:<br>
- как работает в Asio колбек функция;<br>
- чем отличаются друг от друга buffer и recbuf, length от length и др.;<br>
- как правильно добавлять свободные буферы для записи;<br>
- как колбек функция информирует о заполнении буфера;<br>
- как правильно прекратить запись;<br>
- как правильно освобождать буферы после окончанию записи.<br>
Помогите, пожалуйста, разобраться. Проект прикрепил.<br>
]]></description>
        <author>tuchin</author>
        <category>Программирование звука</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=406406&amp;view=findpost&amp;p=3630090</guid>
        <pubDate>Sat, 17 Oct 2015 19:16:55 +0000</pubDate>
        <title>Работа с BassAsio</title>
        <link>https://forum.sources.ru/index.php?showtopic=406406&amp;view=findpost&amp;p=3630090</link>
        <description><![CDATA[tumanovalex: Начал изучение работы с ASIO. Взял простой пример с сайта разработчика BassAsio, немного изменил (проект прикрепил). Программа работает даже на простом ноутбуке после установки ASIO4ALL, показывает наличие микрофона и динамиков. Однако, хотя в проекте установлена Многопоточная (/MT) библиотека времени выполнения, программа работает только тогда, когда рядом (или в указанной в path директории) находится bassasio.dll, в противном случае возникают ошибки. Подскажите, пожалуйста, можно ли сделать так, чтобы dll не требовалась.<br>
<span class="b-attach" data-size="20281" data-hits="320" data-attach-id="47391" data-attach-post-id="3630090">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=3630090&amp;attach_id=47391' title='Скачать файл' target='_blank'>BassAsio.zip</a> (, : 320)
		</span>]]></description>
        <author>tumanovalex</author>
        <category>Программирование звука</category>
      </item>
	
      </channel>
      </rss>
	