<?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=411246&amp;view=findpost&amp;p=3739800</guid>
        <pubDate>Tue, 12 Sep 2017 18:45:35 +0000</pubDate>
        <title>32k EXE Music</title>
        <link>https://forum.sources.ru/index.php?showtopic=411246&amp;view=findpost&amp;p=3739800</link>
        <description><![CDATA[Jin X: :scratch:]]></description>
        <author>Jin X</author>
        <category>Программирование звука</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=411246&amp;view=findpost&amp;p=3739731</guid>
        <pubDate>Tue, 12 Sep 2017 10:51:02 +0000</pubDate>
        <title>32k EXE Music</title>
        <link>https://forum.sources.ru/index.php?showtopic=411246&amp;view=findpost&amp;p=3739731</link>
        <description><![CDATA[Mikle: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=411246&view=findpost&p=3739623'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Jin X &#064; <time class="tag-quote__quoted-time" datetime="2017-09-11T15:29:03+00:00">11.09.17, 15:29</time></span><div class='quote '>главное - теорию иметь.</div></div><br>
Основной смысл:<br>
Заводим массивы:<br>
<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">Dim FdM() &nbsp;As Single &nbsp;&#39;сила натяжения, делённая на массу</div><div class="code_line">Dim P() &nbsp; &nbsp;As Single &nbsp;&#39;позиция</div><div class="code_line">Dim S() &nbsp; &nbsp;As Single &nbsp;&#39;скорость</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
В ремарках указан физический смысл величин. Размер массивов stLen - это фактически длина струны.<br>
Процедура StStart выводит струну из равновесия, это можно сделать как угодно, что будет аналогично тому, что из реальной струны можно извлечь звук в разных местах, щипком, медиатором, ударом и т. д.<br>
Главное - эмуляция дальнейших колебаний струны:<br>
<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">&nbsp;&nbsp;&#39;расчёт скоростей</div><div class="code_line">&nbsp;&nbsp;For i = 1 To stLen - 1</div><div class="code_line">&nbsp;&nbsp; &nbsp;d = (P(i - 1) + P(i + 1)) * 0.5 - P(i)</div><div class="code_line">&nbsp;&nbsp; &nbsp;S(i) = S(i) + d * FdM(i)</div><div class="code_line">&nbsp;&nbsp;Next i</div></ol></div></div></div></div><br>
Мы вычисляем силу, действующую на звено цепи, считая её пропорциональной смещению звена относительно соседей. Получив силу, вычисляем приращение скорости.<br>
Далее:<br>
<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">&nbsp;&nbsp;&#39;вязкость</div><div class="code_line">&nbsp;&nbsp;For i = 1 To stLen - 1</div><div class="code_line">&nbsp;&nbsp; &nbsp;S(i) = S(i) * k1 + (S(i - 1) + S(i + 1)) * k2</div><div class="code_line">&nbsp;&nbsp;Next i</div></ol></div></div></div></div><br>
Несколько уменьшаем скорость, как бы из-за трения, считая трение пропорциональным скорости звена относительно соседей.<br>
Наконец:<br>
<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">&nbsp;&nbsp;&#39;расчёт позиций</div><div class="code_line">&nbsp;&nbsp;For i = 1 To stLen - 1</div><div class="code_line">&nbsp;&nbsp; &nbsp;P(i) = P(i) + S(i)</div><div class="code_line">&nbsp;&nbsp;Next i</div></ol></div></div></div></div><br>
Получаем новые значения позиций звеньев.<br>
Это всё по законам Ньютона, в формулах отсутствует время потому, что 1/44100 сек. мы принимаем за единицу, в результате формулы сильно упрощаются.<br>
Для 2D случая всё так же, только соседей не 2, а 4.<br>
Можно ещё упростить, считая все звенья абсолютно идентичными, избавясь от FdM, но звук получается слишком ровным, электронным, интереснее, когда струна имеет небольшие дефекты.]]></description>
        <author>Mikle</author>
        <category>Программирование звука</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=411246&amp;view=findpost&amp;p=3739623</guid>
        <pubDate>Mon, 11 Sep 2017 15:29:03 +0000</pubDate>
        <title>32k EXE Music</title>
        <link>https://forum.sources.ru/index.php?showtopic=411246&amp;view=findpost&amp;p=3739623</link>
        <description><![CDATA[Jin X: Функцию вижу, но там просто формулы без описаний. Код-то не проблема написать, главное - теорию иметь.]]></description>
        <author>Jin X</author>
        <category>Программирование звука</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=411246&amp;view=findpost&amp;p=3739549</guid>
        <pubDate>Mon, 11 Sep 2017 07:03:44 +0000</pubDate>
        <title>32k EXE Music</title>
        <link>https://forum.sources.ru/index.php?showtopic=411246&amp;view=findpost&amp;p=3739549</link>
        <description><![CDATA[Mikle: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=411246&view=findpost&p=3739504'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Jin X &#064; <time class="tag-quote__quoted-time" datetime="2017-09-10T18:55:15+00:00">10.09.17, 18:55</time></span><div class='quote '>было бы интересно глянуть на то, каким образом происходит синтез (теорию и конкретные формулы, цифры, обертоны, etc...).</div></div><br>
Тут есть исходник струны: <a class='tag-url' href='http://www.gamedev.ru/projects/forum/?id=180947&page=67#m991' target='_blank'>http://www.gamedev.ru/projects/forum/?id=180947&page=67#m991</a><br>
Это по сути имитация колебаний цепочки грузиков, связанных пружинками. Если вместо цепочки представить 2D сетку - получим модель, с помощью которой получается звук колокола или, к примеру, барабанных тарелок.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=411246&view=findpost&p=3739504'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Jin X &#064; <time class="tag-quote__quoted-time" datetime="2017-09-10T18:55:15+00:00">10.09.17, 18:55</time></span><div class='quote '>По сути, это альтернатива Midi или AdLib получается, только программная</div></div><br>
Альтернатива AdLib, но не Midi. Midi - это формат записи партитуры, но не способ извлечения звуков.]]></description>
        <author>Mikle</author>
        <category>Программирование звука</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=411246&amp;view=findpost&amp;p=3739504</guid>
        <pubDate>Sun, 10 Sep 2017 18:55:15 +0000</pubDate>
        <title>32k EXE Music</title>
        <link>https://forum.sources.ru/index.php?showtopic=411246&amp;view=findpost&amp;p=3739504</link>
        <description><![CDATA[Jin X: <strong class='tag-b'>Mikle</strong>, было бы интересно глянуть на то, каким образом происходит синтез (теорию и конкретные формулы, цифры, обертоны, etc...).<br>
По сути, это альтернатива Midi или AdLib получается, только программная :)]]></description>
        <author>Jin X</author>
        <category>Программирование звука</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=411246&amp;view=findpost&amp;p=3738744</guid>
        <pubDate>Mon, 04 Sep 2017 06:21:26 +0000</pubDate>
        <title>32k EXE Music</title>
        <link>https://forum.sources.ru/index.php?showtopic=411246&amp;view=findpost&amp;p=3738744</link>
        <description><![CDATA[Mikle: Достаточно интересно. Только я делаю основной упор на синтез натуральных звуков, физ. моделирование. Хотя можно попробовать синтезировать звуки и подсовывать их в XM.]]></description>
        <author>Mikle</author>
        <category>Программирование звука</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=411246&amp;view=findpost&amp;p=3738728</guid>
        <pubDate>Sun, 03 Sep 2017 16:19:39 +0000</pubDate>
        <title>32k EXE Music</title>
        <link>https://forum.sources.ru/index.php?showtopic=411246&amp;view=findpost&amp;p=3738728</link>
        <description><![CDATA[Jin X: Если интересно, то есть очень крутая библиотека – <a class='tag-url' href='http://ufmod.sourceforge.net/' target='_blank'>uFMOD</a>, которая воспроизводит XM-модули. Модули могут быть как в отдельном файле, так и в ресурсах или просто в виде данных. Причём, библиотеку можно перекомпилировать так, что в ней будут находиться только те функции (код поддержки эффектов и пр), которые используются в нужном XM-файле. Воспроизведение идёт через WinMM, DirectSound или OpenAL. Модули написаны для множества языков (C, С#, BCB, Delphi, разные Asm, разные Basic, BlitzMax). Есть документация на русском. В общем, там есть examples весом меньше 10 кб вместе с XM-модулем. Короче, вещь мощная&#33; :)]]></description>
        <author>Jin X</author>
        <category>Программирование звука</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=411246&amp;view=findpost&amp;p=3738084</guid>
        <pubDate>Sat, 26 Aug 2017 18:08:18 +0000</pubDate>
        <title>32k EXE Music</title>
        <link>https://forum.sources.ru/index.php?showtopic=411246&amp;view=findpost&amp;p=3738084</link>
        <description><![CDATA[Mikle: В данное время в Питере проходит компьютерный фестиваль CHAOS CONSTRUCTIONS 2017.<br>
Среди прочих, на нём есть номинация &quot;32k EXE Music&quot;, то есть нужно предоставить исполняемый файл не более 32 Кб, который бы сыграл какую-то музыку. Миди, мягко говоря, не приветствуется.<br>
Я решил поучаствовать в этой номинации. Показ работы уже прошёл, теперь я могу сам её выложить.<br>
Вот моя демка на ЦЦ: <a class='tag-url' href='https://yadi.sk/d/3iuA9uIh3MLzsa' target='_blank'>https://yadi.sk/d/3iuA9uIh3MLzsa</a> <br>
И MP3 вариант: <a class='tag-url' href='https://yadi.sk/d/SxwDQaaB3MLzsV' target='_blank'>https://yadi.sk/d/SxwDQaaB3MLzsV</a>]]></description>
        <author>Mikle</author>
        <category>Программирование звука</category>
      </item>
	
      </channel>
      </rss>
	