<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[QUIK -> DDE &mdash; Проигрывание звуковых файлов из Lua (mp3, wav, midi и т.д.)]]></title>
	<link rel="self" href="https://quik2dde.ru/extern.php?action=feed&amp;tid=79&amp;type=atom" />
	<updated>2021-07-12T09:26:54Z</updated>
	<generator>PunBB</generator>
	<id>https://quik2dde.ru/viewtopic.php?id=79</id>
		<entry>
			<title type="html"><![CDATA[Re: Проигрывание звуковых файлов из Lua (mp3, wav, midi и т.д.)]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3324#p3324" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[swerg]]></name>
				<uri>https://quik2dde.ru/profile.php?id=78</uri>
			</author>
			<updated>2021-07-12T09:26:54Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3324#p3324</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Проигрывание звуковых файлов из Lua (mp3, wav, midi и т.д.)]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3323#p3323" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[iforts]]></name>
				<uri>https://quik2dde.ru/profile.php?id=3251</uri>
			</author>
			<updated>2021-07-11T15:22:44Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3323#p3323</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Проигрывание звуковых файлов из Lua (mp3, wav, midi и т.д.)]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3322#p3322" />
			<content type="html"><![CDATA[<p>w32.mciSendString(&quot;PLAY QUIK_MP3 WAIT&quot;) ?</p>]]></content>
			<author>
				<name><![CDATA[toxa]]></name>
				<uri>https://quik2dde.ru/profile.php?id=3172</uri>
			</author>
			<updated>2021-07-10T20:35:25Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3322#p3322</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Проигрывание звуковых файлов из Lua (mp3, wav, midi и т.д.)]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3319#p3319" />
			<content type="html"><![CDATA[<p>А есть какой нибудь способ ставить это в очередь? <br />Например чтобы звуки не пересекались, как только один проиграл начинает играть другой. Или тут без команды Microsoft не обойтись?</p>]]></content>
			<author>
				<name><![CDATA[iforts]]></name>
				<uri>https://quik2dde.ru/profile.php?id=3251</uri>
			</author>
			<updated>2021-07-06T13:52:38Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3319#p3319</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Проигрывание звуковых файлов из Lua (mp3, wav, midi и т.д.)]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=2761#p2761" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>fin, у вас просто Lua скрипт неправильно составлен.</code></pre></div><p>Да. Заработался. Вынес функцию из main() и все работает.</p>]]></content>
			<author>
				<name><![CDATA[fin]]></name>
				<uri>https://quik2dde.ru/profile.php?id=3213</uri>
			</author>
			<updated>2020-06-01T15:22:43Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=2761#p2761</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Проигрывание звуковых файлов из Lua (mp3, wav, midi и т.д.)]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=2760#p2760" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[swerg]]></name>
				<uri>https://quik2dde.ru/profile.php?id=78</uri>
			</author>
			<updated>2020-06-01T08:10:18Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=2760#p2760</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Проигрывание звуковых файлов из Lua (mp3, wav, midi и т.д.)]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=2757#p2757" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[fin]]></name>
				<uri>https://quik2dde.ru/profile.php?id=3213</uri>
			</author>
			<updated>2020-05-31T13:36:38Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=2757#p2757</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Проигрывание звуковых файлов из Lua (mp3, wav, midi и т.д.)]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=2243#p2243" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[swerg]]></name>
				<uri>https://quik2dde.ru/profile.php?id=78</uri>
			</author>
			<updated>2018-12-03T06:49:34Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=2243#p2243</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Проигрывание звуковых файлов из Lua (mp3, wav, midi и т.д.)]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=2242#p2242" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Kolossi]]></name>
				<uri>https://quik2dde.ru/profile.php?id=3109</uri>
			</author>
			<updated>2018-12-02T17:39:51Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=2242#p2242</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Проигрывание звуковых файлов из Lua (mp3, wav, midi и т.д.)]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=2241#p2241" />
			<content type="html"><![CDATA[<p><strong>Kolossi</strong>, попробовал ровно ваш скрипт на Win7<br />Всё работает отлично, скрипт можно перезапускать много раз, звук успешно проигрывается каждый раз при запуске.<br />А у вас какая версия Windows?</p>]]></content>
			<author>
				<name><![CDATA[swerg]]></name>
				<uri>https://quik2dde.ru/profile.php?id=78</uri>
			</author>
			<updated>2018-12-01T18:47:49Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=2241#p2241</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Проигрывание звуковых файлов из Lua (mp3, wav, midi и т.д.)]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=2240#p2240" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[swerg]]></name>
				<uri>https://quik2dde.ru/profile.php?id=78</uri>
			</author>
			<updated>2018-12-01T09:54:23Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=2240#p2240</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Проигрывание звуковых файлов из Lua (mp3, wav, midi и т.д.)]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=2239#p2239" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>swerg пишет:</cite><blockquote><p>У меня подозрение, что проблема в том, что вы вызываете из main()<br />Это вам точно требуется по задаче?</p><p>Доподлинно проверить не могу, от чего-то на Win10 у меня скрипт с проигрыванием звуков этот вовсе убивает терминал. Поразбираюсь, отпишусь.</p></blockquote></div><p>Спасибо!</p><p>Имхо не важно откуда вызывается. По сути вопрос сводится к тому, как можно закрыть поток&nbsp; до выхода из скрипта?</p>]]></content>
			<author>
				<name><![CDATA[Kolossi]]></name>
				<uri>https://quik2dde.ru/profile.php?id=3109</uri>
			</author>
			<updated>2018-11-30T12:34:31Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=2239#p2239</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Проигрывание звуковых файлов из Lua (mp3, wav, midi и т.д.)]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=2238#p2238" />
			<content type="html"><![CDATA[<p>У меня подозрение, что проблема в том, что вы вызываете из main()<br />Это вам точно требуется по задаче?</p><p>Доподлинно проверить не могу, от чего-то на Win10 у меня скрипт с проигрыванием звуков этот вовсе убивает терминал. Поразбираюсь, отпишусь.</p>]]></content>
			<author>
				<name><![CDATA[swerg]]></name>
				<uri>https://quik2dde.ru/profile.php?id=78</uri>
			</author>
			<updated>2018-11-30T10:15:29Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=2238#p2238</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Проигрывание звуковых файлов из Lua (mp3, wav, midi и т.д.)]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=2237#p2237" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Kolossi]]></name>
				<uri>https://quik2dde.ru/profile.php?id=3109</uri>
			</author>
			<updated>2018-11-29T15:56:21Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=2237#p2237</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Проигрывание звуковых файлов из Lua (mp3, wav, midi и т.д.)]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=2236#p2236" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Kolossi]]></name>
				<uri>https://quik2dde.ru/profile.php?id=3109</uri>
			</author>
			<updated>2018-11-29T15:48:38Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=2236#p2236</id>
		</entry>
</feed>
