<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[QUIK -> DDE &mdash; Проигрывание звуковых файлов из Lua (mp3, wav, midi и т.д.)]]></title>
		<link>https://quik2dde.ru/viewtopic.php?id=79</link>
		<atom:link href="https://quik2dde.ru/extern.php?action=feed&amp;tid=79&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Проигрывание звуковых файлов из Lua (mp3, wav, midi и т.д.)».]]></description>
		<lastBuildDate>Mon, 12 Jul 2021 09:26:54 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Проигрывание звуковых файлов из Lua (mp3, wav, midi и т.д.)]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=3324#p3324</link>
			<description><![CDATA[<div class="quotebox"><cite>iforts пишет:</cite><blockquote><div class="quotebox"><cite>toxa пишет:</cite><blockquote><p>w32.mciSendString(&quot;PLAY QUIK_MP3 WAIT&quot;) ?</p></blockquote></div><p>[url]https://frolov-lib.ru/books/bsp/v15/ch2_2.htm[/url], есть такое, но описания нет</p></blockquote></div><p>Есть, но читать надо много <img src="https://quik2dde.ru/img/smilies/smile.png" width="15" height="15" alt="smile" /></p><div class="quotebox"><blockquote><p><strong>play</strong><br />Команда play предназначена для запуска процесса воспроизведения. Она имеет следующий формат:</p><p>play device_id [from position [to position]] [notify] [wait] <br />...<br />Указав параметр <strong>wait</strong>, можно установить псевдосинхронный режим воспроизведения. В этом случае функция mciSendString вернет управление только после завершения операции, однако работа других приложений Windows будет продолжаться во время воспроизведения. Если же этот параметр не указан, функция mciSendString запустит процесс в асинхронном режиме и немедленно вернет управление.</p></blockquote></div>]]></description>
			<author><![CDATA[null@example.com (swerg)]]></author>
			<pubDate>Mon, 12 Jul 2021 09:26:54 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=3324#p3324</guid>
		</item>
		<item>
			<title><![CDATA[Re: Проигрывание звуковых файлов из Lua (mp3, wav, midi и т.д.)]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=3323#p3323</link>
			<description><![CDATA[<div class="quotebox"><cite>toxa пишет:</cite><blockquote><p>w32.mciSendString(&quot;PLAY QUIK_MP3 WAIT&quot;) ?</p></blockquote></div><p>Надо пробовать, но в командах этого вроде нет</p><p>[url]https://frolov-lib.ru/books/bsp/v15/ch2_2.htm[/url], есть такое, но описания нет</p>]]></description>
			<author><![CDATA[null@example.com (iforts)]]></author>
			<pubDate>Sun, 11 Jul 2021 15:22:44 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=3323#p3323</guid>
		</item>
		<item>
			<title><![CDATA[Re: Проигрывание звуковых файлов из Lua (mp3, wav, midi и т.д.)]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=3322#p3322</link>
			<description><![CDATA[<p>w32.mciSendString(&quot;PLAY QUIK_MP3 WAIT&quot;) ?</p>]]></description>
			<author><![CDATA[null@example.com (toxa)]]></author>
			<pubDate>Sat, 10 Jul 2021 20:35:25 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=3322#p3322</guid>
		</item>
		<item>
			<title><![CDATA[Re: Проигрывание звуковых файлов из Lua (mp3, wav, midi и т.д.)]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=3319#p3319</link>
			<description><![CDATA[<p>А есть какой нибудь способ ставить это в очередь? <br />Например чтобы звуки не пересекались, как только один проиграл начинает играть другой. Или тут без команды Microsoft не обойтись?</p>]]></description>
			<author><![CDATA[null@example.com (iforts)]]></author>
			<pubDate>Tue, 06 Jul 2021 13:52:38 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=3319#p3319</guid>
		</item>
		<item>
			<title><![CDATA[Re: Проигрывание звуковых файлов из Lua (mp3, wav, midi и т.д.)]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=2761#p2761</link>
			<description><![CDATA[<div class="codebox"><pre><code>fin, у вас просто Lua скрипт неправильно составлен.</code></pre></div><p>Да. Заработался. Вынес функцию из main() и все работает.</p>]]></description>
			<author><![CDATA[null@example.com (fin)]]></author>
			<pubDate>Mon, 01 Jun 2020 15:22:43 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=2761#p2761</guid>
		</item>
		<item>
			<title><![CDATA[Re: Проигрывание звуковых файлов из Lua (mp3, wav, midi и т.д.)]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=2760#p2760</link>
			<description><![CDATA[<p><strong>fin</strong>, у вас просто Lua скрипт неправильно составлен.<br />Когда вы вызывается функцию PlaySoundFile() из &lt;BODY&gt; скрипта, как я называю эту часть, у вас данная функция еще не определена.</p><p>Для теста полный текст скрипта должен выглядеть либо так:</p><div class="codebox"><pre><code>local w32 = require(&quot;w32&quot;)

function PlaySoundFile(file_name)
  w32.mciSendString(&quot;CLOSE QUIK_MP3&quot;) 
  w32.mciSendString(&quot;OPEN \&quot;&quot; .. file_name .. &quot;\&quot; TYPE MpegVideo ALIAS QUIK_MP3&quot;)
  w32.mciSendString(&quot;PLAY QUIK_MP3&quot;)
end

PlaySoundFile(&quot;C:\\WINDOWS\\Media\\Windows Logon Sound.wav&quot;)</code></pre></div><p>либо так:</p><div class="codebox"><pre><code>local w32 = require(&quot;w32&quot;)

function OnInit()
  PlaySoundFile(&quot;C:\\WINDOWS\\Media\\Windows Logon Sound.wav&quot;)
end

function PlaySoundFile(file_name)
  w32.mciSendString(&quot;CLOSE QUIK_MP3&quot;) 
  w32.mciSendString(&quot;OPEN \&quot;&quot; .. file_name .. &quot;\&quot; TYPE MpegVideo ALIAS QUIK_MP3&quot;)
  w32.mciSendString(&quot;PLAY QUIK_MP3&quot;)
end</code></pre></div><p>PS<br />Надо же, я сделал описку в имени функции в первом же посте изначально (PaySound вместо PlaySound), и так это название и копировал везде, не замечая описки <img src="https://quik2dde.ru/img/smilies/smile.png" width="15" height="15" alt="smile" /></p>]]></description>
			<author><![CDATA[null@example.com (swerg)]]></author>
			<pubDate>Mon, 01 Jun 2020 08:10:18 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=2760#p2760</guid>
		</item>
		<item>
			<title><![CDATA[Re: Проигрывание звуковых файлов из Lua (mp3, wav, midi и т.д.)]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=2757#p2757</link>
			<description><![CDATA[<p>Попробовал w32.mciSendString<br />Скопировал с поста выше.</p><p>require(&quot;w32&quot;);<br />PlaySoundFile(getScriptPath()..&quot;\\dirSound\\WindowsYES.wav&quot;);</p><p>function PlaySoundFile(file_name)<br />&nbsp; w32.mciSendString(&quot;CLOSE QUIK_MP3&quot;); <br />&nbsp; local n = w32.mciSendString(&quot;OPEN \&quot;&quot; .. file_name .. &quot;\&quot; TYPE MpegVideo ALIAS QUIK_MP3&quot;);<br />&nbsp; message(tostring(n), 2);<br />&nbsp; w32.mciSendString(&quot;PLAY QUIK_MP3&quot;);&nbsp; &nbsp;<br />end;<br />До message не дошло.<br />Выдает ошибку на строке PlaySoundFile(getScriptPath()..&quot;\\dirSound\\WindowsYES.wav&quot;);<br />attempt to call global &#039;PlaySoundFile&#039; (a nil value)<br />Пробовал менять и пути и файл. На 8.4 и на 8.5. Не помогло.<br />Что может быть. Win7</p><p>Спасибо</p>]]></description>
			<author><![CDATA[null@example.com (fin)]]></author>
			<pubDate>Sun, 31 May 2020 13:36:38 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=2757#p2757</guid>
		</item>
		<item>
			<title><![CDATA[Re: Проигрывание звуковых файлов из Lua (mp3, wav, midi и т.д.)]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=2243#p2243</link>
			<description><![CDATA[<div class="quotebox"><cite>Kolossi пишет:</cite><blockquote><p>Quik у меня под wine на Mac&#039;е.<br />Поставить закрытие в OnStop() не помогает тк алиас туда не передается.</p></blockquote></div><p>В смысле? какой альяс не передаётся?<br />&quot;QUIK_MP3&quot; - это создаётся &quot;глобальный системный&quot; альяс с таким именем для функций mci, никуда его передавать не нужно.<br />Другое дело, что видимо в wine уже штуку сделали так вот странно, это, очевидно, основное уточнение.</p>]]></description>
			<author><![CDATA[null@example.com (swerg)]]></author>
			<pubDate>Mon, 03 Dec 2018 06:49:34 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=2243#p2243</guid>
		</item>
		<item>
			<title><![CDATA[Re: Проигрывание звуковых файлов из Lua (mp3, wav, midi и т.д.)]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=2242#p2242</link>
			<description><![CDATA[<p>Да. Похоже проблемы растут не из скрипта.<br />Quik у меня под wine на Mac&#039;е.</p><p>В общем танцы с бубном показали, что в данной конфигурации выход из скрипта без закрытия проигрывания блокирует все последующие запуски проигрывания до перезагрузки квика. Поставить закрытие в OnStop() не помогает тк алиас туда не передается.<br /> Ладно. Хоть так, с остановкой на sleep() и последующим закрытием поет <img src="https://quik2dde.ru/img/smilies/smile.png" width="15" height="15" alt="smile" /></p><p>Спасибо за помощь.</p>]]></description>
			<author><![CDATA[null@example.com (Kolossi)]]></author>
			<pubDate>Sun, 02 Dec 2018 17:39:51 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=2242#p2242</guid>
		</item>
		<item>
			<title><![CDATA[Re: Проигрывание звуковых файлов из Lua (mp3, wav, midi и т.д.)]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=2241#p2241</link>
			<description><![CDATA[<p><strong>Kolossi</strong>, попробовал ровно ваш скрипт на Win7<br />Всё работает отлично, скрипт можно перезапускать много раз, звук успешно проигрывается каждый раз при запуске.<br />А у вас какая версия Windows?</p>]]></description>
			<author><![CDATA[null@example.com (swerg)]]></author>
			<pubDate>Sat, 01 Dec 2018 18:47:49 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=2241#p2241</guid>
		</item>
		<item>
			<title><![CDATA[Re: Проигрывание звуковых файлов из Lua (mp3, wav, midi и т.д.)]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=2240#p2240</link>
			<description><![CDATA[<div class="quotebox"><cite>Kolossi пишет:</cite><blockquote><p>Имхо не важно откуда вызывается.</p></blockquote></div><p>Возможно, это как раз важно.<br />Потому и хотелось бы, чтобы вы проверили: связана ли проблема с вызовом из main()?</p><div class="quotebox"><cite>Kolossi пишет:</cite><blockquote><p>По сути вопрос сводится к тому, как можно закрыть поток&nbsp; до выхода из скрипта?</p></blockquote></div><p>Добавьте в OnStop() строчку<br />w32.mciSendString(&quot;CLOSE QUIK_MP3&quot;) <br />да и всё.<br />Хотя у меня ни разу не наблюдалось проблем с незакрытым дексприптором проигрывания.</p>]]></description>
			<author><![CDATA[null@example.com (swerg)]]></author>
			<pubDate>Sat, 01 Dec 2018 09:54:23 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=2240#p2240</guid>
		</item>
		<item>
			<title><![CDATA[Re: Проигрывание звуковых файлов из Lua (mp3, wav, midi и т.д.)]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=2239#p2239</link>
			<description><![CDATA[<div class="quotebox"><cite>swerg пишет:</cite><blockquote><p>У меня подозрение, что проблема в том, что вы вызываете из main()<br />Это вам точно требуется по задаче?</p><p>Доподлинно проверить не могу, от чего-то на Win10 у меня скрипт с проигрыванием звуков этот вовсе убивает терминал. Поразбираюсь, отпишусь.</p></blockquote></div><p>Спасибо!</p><p>Имхо не важно откуда вызывается. По сути вопрос сводится к тому, как можно закрыть поток&nbsp; до выхода из скрипта?</p>]]></description>
			<author><![CDATA[null@example.com (Kolossi)]]></author>
			<pubDate>Fri, 30 Nov 2018 12:34:31 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=2239#p2239</guid>
		</item>
		<item>
			<title><![CDATA[Re: Проигрывание звуковых файлов из Lua (mp3, wav, midi и т.д.)]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=2238#p2238</link>
			<description><![CDATA[<p>У меня подозрение, что проблема в том, что вы вызываете из main()<br />Это вам точно требуется по задаче?</p><p>Доподлинно проверить не могу, от чего-то на Win10 у меня скрипт с проигрыванием звуков этот вовсе убивает терминал. Поразбираюсь, отпишусь.</p>]]></description>
			<author><![CDATA[null@example.com (swerg)]]></author>
			<pubDate>Fri, 30 Nov 2018 10:15:29 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=2238#p2238</guid>
		</item>
		<item>
			<title><![CDATA[Re: Проигрывание звуковых файлов из Lua (mp3, wav, midi и т.д.)]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=2237#p2237</link>
			<description><![CDATA[<p>Вот этот скрипт, проигрывает файл один раз.&nbsp; Если его запустить еще раз проигрывания не будет. Для того что бы он опять сыграл нужно перезапускать Квик и запускать скрипт.<br />--<br />w32 = require(&quot;w32&quot;)</p><p>function main()<br />&nbsp; &nbsp; is_run=true<br />&nbsp; &nbsp; while is_run do<br />&nbsp; &nbsp; &nbsp; &nbsp; PlaySoundFile(&quot;c:\\miss.wav&quot;)<br />&nbsp; &nbsp; &nbsp; &nbsp; is_run=false<br />&nbsp; &nbsp; &nbsp; &nbsp; sleep(500)<br />&nbsp; &nbsp; end<br />end<br />function OnStop()<br />&nbsp; is_run = false<br />end</p><p>-- функция проигрывания файла<br />-- вызов: PlaySoundFile(&quot;имя файла&quot;)<br />function PlaySoundFile(file_name) <br />&nbsp; w32.mciSendString(&quot;CLOSE QUIK_MP3&quot;) <br />&nbsp; w32.mciSendString(&quot;OPEN \&quot;&quot; .. file_name .. &quot;\&quot; TYPE MpegVideo ALIAS QUIK_MP3&quot;)<br />&nbsp; w32.mciSendString(&quot;PLAY QUIK_MP3 &quot;) <br />end</p>]]></description>
			<author><![CDATA[null@example.com (Kolossi)]]></author>
			<pubDate>Thu, 29 Nov 2018 15:56:21 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=2237#p2237</guid>
		</item>
		<item>
			<title><![CDATA[Re: Проигрывание звуковых файлов из Lua (mp3, wav, midi и т.д.)]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=2236#p2236</link>
			<description><![CDATA[<div class="quotebox"><cite>swerg пишет:</cite><blockquote><div class="quotebox"><cite>Kolossi пишет:</cite><blockquote><p>Да простит автор мою бездарность, не заметил сразу шутки в коде:)<br />Конечно<br />w32.mciSendString(&quot;CLOSE QUIK_MP3&quot;)<br />вряд ли отработает, если алиас&nbsp; QUIK_MP3 назначен в следующей строке.</p></blockquote></div><p>Это вовсе не шутка. Это &quot;остановить предыдущее проигрывание&quot;, если оно было запущено.<br />Не было запущено - ну и ладно, проблемы в этом нет.<br />Так что шуток в коде нет и вроде даже нет ошибок.</p><p>Но хотелось бы посмотреть на тот скрипт (полный!), который вы используете, чтобы можно было понять проблему. Как вы получаете приведённый вами код ошибки? Возможно, проблема вообще в чем-то другом, а не в данной функции.</p><p>Зачем вы вставляете Sleep() - совсем не понятно, это ж приостанавливает скрипт на время Sleep, это вам точно требуется?</p></blockquote></div><p>В том и проблема. Если не отработать&nbsp; w32.mciSendString(&quot;CLOSE QUIK_MP3&quot;) и остановить скрипт, то в следующий запуск скрипта&nbsp; w32.mciSendString(&quot;PLAY QUIK_MP3&quot;) выдает ошибку тк поток не закрыт. CLOSE не может отработать&nbsp; посколько алиас не назначен. Если поставить CLOSE после PLАY то обрывается проигрывание. С задержкой sleep на время проигрывания и потом CLOSE все работает. Те нужно закрыть поток после проигрывания и желательно без остановки скрипта. Как, не могу придумать. Пробовал поставить закрытие в OnStop(), тоже не работает.</p>]]></description>
			<author><![CDATA[null@example.com (Kolossi)]]></author>
			<pubDate>Thu, 29 Nov 2018 15:48:38 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=2236#p2236</guid>
		</item>
	</channel>
</rss>
