tag:blogger.com,1999:blog-3108999833138916242024-03-13T00:47:42.621-07:00NightRadioЗаметки от NightRadio (Александр Золотов)NightRadiohttp://www.blogger.com/profile/10600828520726852935noreply@blogger.comBlogger115125tag:blogger.com,1999:blog-310899983313891624.post-19049291890390093372017-08-03T06:27:00.000-07:002017-08-03T06:31:44.341-07:00Факты о SunVox: Sampler (форматы файлов)<div dir="ltr" style="text-align: left;" trbidi="on">
Знаете ли вы, какие файлы может играть модуль Sampler?<br />
<br />
<ul style="text-align: left;">
<li>WAV/AIFF (без сжатия) и XI (формат инструментов из старого доброго FastTracker 2).</li>
<li>JPG - да, именно картинки в формате JPG :) Картинка превращается в поток пикселей (считываем их слева направо, сверху вниз, типа как буквы из книжки). А поток пикселей превращается в звуковую волну простым преобразованием яркости в громкость.</li>
<li>Если вы работаете в Linux, macOS или Windows, то Sampler может грузить вообще любые существующие в природе звуковые файлы. В том числе MP3. Все, что вам нужно - установить программу FFmpeg или avconv. В Linux одна из них, как правило, уже стоит по умолчанию. А для Windows есть, например, вот такая <a href="http://www.wikihow.com/Install-FFmpeg-on-Windows">инструкция по установке FFmpeg</a></li>
<li>Любые файлы (текстовые, например) могут быть загружены как "сырые" данные. Это произойдет, если Sampler не сможет опознать формат файла. </li>
</ul>
</div>
NightRadiohttp://www.blogger.com/profile/10600828520726852935noreply@blogger.com0tag:blogger.com,1999:blog-310899983313891624.post-86288384662020583482017-05-07T05:56:00.000-07:002017-05-07T05:59:53.387-07:00Факты о SunVox: колонка VV в паттерне<div dir="ltr" style="text-align: left;" trbidi="on">
Паттерн делится на треки. Трек делится на колонки. Рассмотрим колонку VV.<br />
В эту колонку записывается значение от 00 до 80, обозначающее динамику (velocity) ноты. На самом деле, с терминологией здесь вышла небольшая путаница (ради совместимости с общепринятыми терминами MIDI стандарта) и логичнее было бы назвать эту колонку "сила нажатия". То есть, с какой силой мы ноту нажали и какую силу прикладываем к уже нажатой ноте.<br />
<br />
Если мы сильнее ударили по клавише, то нота должна звучать громче/ярче. Поэтому чаще всего от динамики зависит громкость звука, хотя возможна привязка и к другим параметрам, например, при помощи модуля Velocity2Ctl или через опции внутри Analog Generator.<br />
<br />
Пустое значение (нет никаких цифр) в колонке VV означает последнюю указанную динамику для текущей ноты, либо 80.<br />
<br />
Значения в колонках <span style="background-color: white; color: #333333; font-family: "arial" , sans-serif; font-size: 14px;">VV, CCEE и XXYY</span> можно указывать не только напротив новой ноты, но и после нее и даже после выключения ноты (когда нота выключена, но от нее еще идет хвост).</div>
NightRadiohttp://www.blogger.com/profile/10600828520726852935noreply@blogger.com0tag:blogger.com,1999:blog-310899983313891624.post-24226098879565602292017-01-26T09:50:00.000-08:002017-01-26T09:50:10.056-08:00Факты о SunVox: колонка NN в паттерне<div dir="ltr" style="text-align: left;" trbidi="on">
Паттерн делится на треки. Трек делится на колонки. Рассмотрим колонку NN.<br />
В эту колонку можно записать код команды или ноту.<br />
<br />
Возможные команды: <b>SP, <<, ==</b>.<br />
<b>SP</b> (горячая клавиша K) - установить высоту тона XXYY; при этом 0000 - это самый высокий тон, а 7800 - самый низкий (нота С0); один полутон равен 100 (256dec).<br />
<b><<</b> (горячая клавиша SHIFT+K) - Previous Track; позволяет накладывать дополнительные эффекты на предыдущий трек паттерна; при этом в качестве доп. эффектов нельзя использовать 2x, 40..5F, 1D.<br />
<b>==</b> (горячие клавиши ~ и CapsLock) - выключение ноты.<br />
<br />
Если вы запустите (из главного меню SunVox) виртуальный Терменвокс, начнете что-то на нем играть со включенной записью, то в конечном итоге получите паттерн, заполненный командами SP. Это произойдет потому, что в Терменвоксе почти невозможно сыграть ровно определенную ноту, высота тона свободно плавает. А команда SP как раз для установки любой высоты тона, без привязки к нотам.<br />
<br />
Возможные ноты (буква обозначает ноту, а цифра - октаву):<br />
C0 - до (первая нота самой низкой октавы 0);<br />
c0 - до-диез;<br />
D0 - ре;<br />
d0 - ре-диез;<br />
E0 - ми;<br />
F0 - фа;<br />
f0 - фа-диез;<br />
G0 - соль;<br />
g0 - соль-диез;<br />
A0 - ля;<br />
a0 - ля-диез;<br />
B0 - си;<br />
C1 - до (октава 1);<br />
...<br />
B9 - си (самая высокая октава 9).<br />
<br />
<a href="http://www.warmplace.ru/wiki/sunvox:manual_ru#паттерн">Источник</a></div>
NightRadiohttp://www.blogger.com/profile/10600828520726852935noreply@blogger.com0tag:blogger.com,1999:blog-310899983313891624.post-26516538585433631622016-12-01T09:13:00.001-08:002016-12-01T09:13:05.021-08:00Факты о SunVox: структура паттерна<div dir="ltr" style="text-align: left;" trbidi="on">
Паттерн - кусок партитуры SunVox. Это может быть мелодия, ритм из барабанов, команды автоматизации, команды смены темпа и т.д. То есть, это очень универсальный контейнер. Если у вас есть повторяющаяся мелодия - создайте для нее отдельный паттерн и клонируйте его нужное количество раз в редакторе таймлинии. Потом изменения можно вносить только в оригинальный паттерн, а клоны моментально эти изменения подхватят.<br />
Внутри паттерн представляет собой таблицу, поделенную на треки (колонки) и строки. В каждой ячейке таблицы - музыкальное событие (команда+параметр): нота, автоматизация контроллера, эффект и т.п. Событие содержит несколько колонок (полей) с числами и буквами. Общий формат события такой: NN VV MM CCEE XXYY.<br />
<br />
<ul style="text-align: left;">
<li>NN - код команды или код ноты, где буква обозначает непосредственно ноту (маленькая буква - диез), а цифра - номер октавы. </li>
<li>VV - velocity (00..80); скорость нажатия (динамика); чаще всего этот параметр задает громкость ноты. </li>
<li>MM - номер модуля (00,01,02,03,04, … FF). </li>
<li>CC - номер контроллера в модуле (01,02,03,04, … FF). </li>
<li>EE - номер эффекта, применяемого к последней включенной ноте в текущем треке.
XXYY - параметр указанного эффекта или контроллера (0000 - минимум; 8000 - максимум). </li>
</ul>
<br />
<a href="http://www.warmplace.ru/wiki/doku.php?id=sunvox:manual_ru#паттерн">Источник</a></div>
NightRadiohttp://www.blogger.com/profile/10600828520726852935noreply@blogger.com0tag:blogger.com,1999:blog-310899983313891624.post-7222399951408321722016-11-11T05:35:00.003-08:002016-11-11T05:35:48.644-08:00Факты о SunVox: паттерн<div dir="ltr" style="text-align: left;" trbidi="on">
Паттерн - это кусок партитуры в виде набора треков, поделенных на строки. Внешне напоминает таблицу Excel :) На каждом треке по порядку идут музыкальные события (команда+параметр): ноты, автоматизация контроллеров, эффекты и пр. Редактор активного паттерна находится в верхней части экрана. Проигрываение паттерна идет сверху вниз. Треки играют одновременно. К примеру, можно сделать два трека: на одном выставить ноты басового синтезатора, а на другом - барабаны. А можно те же самые ноты чередовать на одном треке, если они друг другу не мешают.<br />
У каждого паттерна есть своя маленькая картинка (иконка) 16 на 16 пикселей, которая генерируется автоматически, либо редактируется пользователем. Кроме того, паттерн можно именовать.<br />
Порядок следования паттернов в проекте задается в окне таймлинии.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghvvMFWfH9bM6hqRYn9cqO4nsyAyA0Rf3H11Pb6-_qptTe2Fyvs_nx_c5Q5_0ehhkmErcRWznqE8Hr_i8Agtt_ADpGApBfOdz2qqqWbvu0X7iZ_XYCRI8j3p5_uWgGhiUQNyJn9tBmTz8/s1600/pattern.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="162" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghvvMFWfH9bM6hqRYn9cqO4nsyAyA0Rf3H11Pb6-_qptTe2Fyvs_nx_c5Q5_0ehhkmErcRWznqE8Hr_i8Agtt_ADpGApBfOdz2qqqWbvu0X7iZ_XYCRI8j3p5_uWgGhiUQNyJn9tBmTz8/s320/pattern.png" width="320" /></a></div>
<br />
<a href="http://www.warmplace.ru/wiki/doku.php?id=sunvox:manual_en&#pattern">Источник</a></div>
NightRadiohttp://www.blogger.com/profile/10600828520726852935noreply@blogger.com0tag:blogger.com,1999:blog-310899983313891624.post-33135696551963479752016-11-08T01:58:00.001-08:002016-11-08T01:58:29.789-08:00Факты о SunVox: свойства контроллера<div dir="ltr" style="text-align: left;" trbidi="on">
У модуля есть параметры (на "железных" синтезаторах - это ручки, кнопки и прочие элементы управления). В среде SunVox их называют контроллерами.
Двойной клик (или правый клик) на контроллере приведет к открытию окна с его свойствами. В окне свойств можно более точно управлять контроллером, сбрасывать его значение, делать случайным, привязывать к MIDI ручкам и MIDI кнопкам на внешних устройствах.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwT2WwfAWekXLFMT0Yug34Y_8ak_dkAabQcjZsxjQu1Noi93OORuU2RjgTQfBR4neikHAXIX5IbdZO8nGps7C3mK2oklqdKfcjix3bTxvcJswfmxD8DQZmX3KJzGIY_9mX5Wz07rSqOvE/s1600/ctl_props_ru.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="204" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwT2WwfAWekXLFMT0Yug34Y_8ak_dkAabQcjZsxjQu1Noi93OORuU2RjgTQfBR4neikHAXIX5IbdZO8nGps7C3mK2oklqdKfcjix3bTxvcJswfmxD8DQZmX3KJzGIY_9mX5Wz07rSqOvE/s320/ctl_props_ru.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<a href="http://www.warmplace.ru/wiki/doku.php?id=sunvox:manual_ru#контроллеры">Источник</a></div>
</div>
NightRadiohttp://www.blogger.com/profile/10600828520726852935noreply@blogger.com0tag:blogger.com,1999:blog-310899983313891624.post-17037696160610214002016-10-26T06:06:00.000-07:002016-10-26T06:07:59.447-07:00Факты о SunVox: оптимизация работы модулей<div dir="ltr" style="text-align: left;" trbidi="on">
Некоторые модули SunVox имеют контроллер "Режим", которым можно задавать качество и уменьшать нагрузку на процессор. Вот некоторые возможные значения этого параметра:<br />
<br />
<ul style="text-align: left;">
<li>HQ - высокое качество; cтерео; линейная интерполяция; </li>
<li>HQmono - высокое качество; моно; линейная интерполяция;</li>
<li>LQ - низкое качество; стерео; без интерполяции;</li>
<li>LQmono - низкое качество; моно; без интерполяции; </li>
<li>HQspline - высокое качество; стерео; сплайн-интерполяция. </li>
</ul>
<br />
Если у вас не самый быстрый компьютер, и на некоторых проектах вы замечаете неприятные тормоза и заикания, то старайтесь следовать этим советам при написании музыки:<br />
<br />
<ul style="text-align: left;">
<li>переключайте модули в монофонические режимы (Mono, HQmono или LQmono);</li>
<li>переключайте модули в режимы низкого качества (LQ или LQmono);</li>
<li>уменьшайте параметр "Полифония" в модулях, которым не нужно много каналов полифонии;</li>
<li>не используйте модуль Reverb, или используйте его в режиме LQ с выключенным фазовым фильтром;</li>
<li>используйте модуль Filter вместо Filter Pro;</li>
<li>отключайте интерполяцию в модуле Sampler;</li>
<li>если возможно, в модуле Generator установите атаку и затухание в ноль.</li>
</ul>
<br />
<a href="http://www.warmplace.ru/wiki/sunvox:manual_ru">Источник</a></div>
NightRadiohttp://www.blogger.com/profile/10600828520726852935noreply@blogger.com0tag:blogger.com,1999:blog-310899983313891624.post-15412571862472464542016-10-15T02:13:00.001-07:002016-10-15T02:17:29.616-07:00Доработка конвертера HDMI -> VGA<div dir="ltr" style="text-align: left;" trbidi="on">
Пришло вот такое китайское чудо:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguTQhO1vkwWg4kuFBrb9-w5hz_ChLD2lya8rkOWJUSiSRd3mA2cyDCb8kX1QeDoBOuNO3o4bRZprRCdPJ-LR2djUa8Q7vl-mIosv223pzJ7KER_qG7W5Gbm3cAByvWg3vmxy6MKvpO_rs/s1600/ad.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguTQhO1vkwWg4kuFBrb9-w5hz_ChLD2lya8rkOWJUSiSRd3mA2cyDCb8kX1QeDoBOuNO3o4bRZprRCdPJ-LR2djUa8Q7vl-mIosv223pzJ7KER_qG7W5Gbm3cAByvWg3vmxy6MKvpO_rs/s320/ad.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
Конвертер из HDMI в VGA на базе чипа AG6200. Со звуком! И без внешнего питания!<br />
Увы, заработал только с Маком. С Rasberry Pi и HDMI-выходом iPad ничего не вышло: черный экран, никакие настройки не помогают.<br />
Конвертеру, как оказалось, не хватает питания (5В), приходящего по HDMI (ножка 18). Внешние блоки питания, подключенные к компам, не помогли.<br />
Более того, есть нехорошие истории, как конвертер выжигает диод (подключенный все к той же 18й ноге HDMI) на плате Raspberry Pi. Поэтому тут видится логичным от внутреннего питания отказаться вообще и вывести его наружу.<br />
Ок. Открываем конвертер:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXtPn8xG3VN78xA9AaqccE61j2YnyHENyr5-D9bi62kAIEDhxYwH_WWxZ6Bn6FeZ5usd-fBLi6qXXFcGRg8kU5sEQx3d2xI3YcKRtuhTeL2WQcnSC4XIu0yJf1AK_bc-L7QOc_dBgVSOw/s1600/01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="222" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXtPn8xG3VN78xA9AaqccE61j2YnyHENyr5-D9bi62kAIEDhxYwH_WWxZ6Bn6FeZ5usd-fBLi6qXXFcGRg8kU5sEQx3d2xI3YcKRtuhTeL2WQcnSC4XIu0yJf1AK_bc-L7QOc_dBgVSOw/s320/01.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
На задней стороне ищем интересующий нас провод (в этом конвертере он сиреневый), идущий к контакту с пометкой "18". Часть надписи закрыта припоем:</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGnAV0iE-J5vVjT1Hb9TDE6m9FcV-qSNtHQp6bVYNP62upbGXsv5zgkAtRyfpNQGfYEHoDBeK8ZcM3tygvXhvDxoDsXNUtk-5psI5mo0Mw1wiX_m9HFMOmfK7_Nt63rTpMxgfI-3o350w/s1600/02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="177" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGnAV0iE-J5vVjT1Hb9TDE6m9FcV-qSNtHQp6bVYNP62upbGXsv5zgkAtRyfpNQGfYEHoDBeK8ZcM3tygvXhvDxoDsXNUtk-5psI5mo0Mw1wiX_m9HFMOmfK7_Nt63rTpMxgfI-3o350w/s320/02.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Отпаиваем этот провод от платы. Питание будем брать с USB шнура, который я откусил от старой мышки. Плюс подключаем к контакту "18" на плате конвертера. Минус - например, к креплению VGA-разъема (на фотке слева внизу). В корпусе сверлим отверстие для шнура питания. Изолируем висящие в воздухе провода. Закрываем все обратно и получаем что-то типа:</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0F_WF_po3GtAz9ymLQwshUViEf1SVFO7Z9IU0lWxgPgtDrsypA5VGDykolGE1v_ikMg9Mt7ZqLht6Iu8M0u6f71_-gMR3OZ4SIfFLmW8xsufPpEwBKnIj0PKqYChCXvKoU5oVVDCHAKo/s1600/03.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="272" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0F_WF_po3GtAz9ymLQwshUViEf1SVFO7Z9IU0lWxgPgtDrsypA5VGDykolGE1v_ikMg9Mt7ZqLht6Iu8M0u6f71_-gMR3OZ4SIfFLmW8xsufPpEwBKnIj0PKqYChCXvKoU5oVVDCHAKo/s320/03.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
После чего конвертер чудесным образом начинает работать! :)</div>
<div class="separator" style="clear: both; text-align: left;">
Немного смущает температура чипа внутри - коробочка весьма ощутимо греется. Возможно, стоит подумать о радиаторе и отверстиях вентиляции.</div>
</div>
NightRadiohttp://www.blogger.com/profile/10600828520726852935noreply@blogger.com7tag:blogger.com,1999:blog-310899983313891624.post-33305224503593968212016-10-14T11:57:00.002-07:002016-10-26T06:07:05.235-07:00Факты о SunVox: контроллеры<div dir="ltr" style="text-align: left;" trbidi="on">
У каждого модуля есть параметры (на "железных" синтезаторах - это ручки, кнопки и прочие элементы управления). В среде SunVox их называют <b>контроллерами</b>.<br />
<br />
Контроллерами можно управлять из паттерна - это так называемая автоматизация параметров модуля. Причем не важно, какой именно паттерн будет посылать команды контроллеру: в SunVox нет жесткой привязки паттернов к модулям и их параметрам.<br />
Если нажать SHIFT, а потом на контроллер, то его значение запишется в паттерн (в текущую позицию курсора). Если нужно записать более сложную автоматизацию, то есть три дополнительных способа:<br />
<ul style="text-align: left;">
<li>можно вручную управлять контроллерами так, как хочется, а все эти изменения будут автоматически записываться в специальный паттерн в реальном времени; для этого просто нажмите кнопку записи (REC);</li>
<li>можно в паттерне прописать начальное и конечное значение контроллера (скажем, в начале и в конце паттерна), потом выделить этот участок и воспользоваться Интерполятором (в меню) для заполнения промежуточных значений с плавным переходом;</li>
<li>выбирается один трек паттерна; в нем заполняются колонки MM (номер модуля) и CC (номер контроллера); затем в меню паттерна включается функция “Рисовать уровни XXYY”, после чего кривую автоматизации можно рисовать от руки прямо на треке.</li>
</ul>
<a href="http://www.warmplace.ru/wiki/doku.php?id=sunvox:manual_ru">Источник</a></div>
NightRadiohttp://www.blogger.com/profile/10600828520726852935noreply@blogger.com0tag:blogger.com,1999:blog-310899983313891624.post-45110456241570513242016-10-04T23:55:00.001-07:002016-10-26T06:08:40.578-07:00Факты о SunVox: модуль<div dir="ltr" style="text-align: left;" trbidi="on">
Модуль - блок, из которых строится звук в SunVox. Это может быть синтезатор, эффект или фильтр. Модули отображаются в виде прямоугольников, соединенных линиями (проводами). Направление движения сигнала по проводу показывается бегущими точками и цветом (яркая часть провода идет от источника; бледная - к приемнику). Окно, в котором расположены модули, называется "звуковой сетью" или "окном маршрутизации".<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPF6uOl_YlCjAaOKDkhogXB1oVXBXNZbL9kitLfwR-hQBkbUrdlxppXrUZ_sV8J2kyC1fE0BElr0wzg9tsAjR4LV07nWLjVT7jzvfJUQgqRCsMmSkQW6ME_PNDHcePbuwkcWjguf9HfK0/s1600/samplers.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="213" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPF6uOl_YlCjAaOKDkhogXB1oVXBXNZbL9kitLfwR-hQBkbUrdlxppXrUZ_sV8J2kyC1fE0BElr0wzg9tsAjR4LV07nWLjVT7jzvfJUQgqRCsMmSkQW6ME_PNDHcePbuwkcWjguf9HfK0/s320/samplers.png" width="320" /></a></div>
<br />
В SunVox встроен набор базовых модулей. Базовые модули можно объединять в сложные цепочки для получения более сложных звуков и эффектов. Несколько модулей можно объединять в один при помощи MetaModule. Любой модуль можно сохранить или загрузить с диска. В архиве SunVox есть несколько директорий с дополнительными модулями.<br />
На экране место для размещения нового модуля помечается указателем в форме крестика. Нажмите в нужное вам место, и указатель переместится туда.<br />
Создать или загрузить модуль можно одним из нижеприведенных способов.<br />
<br />
<ol style="text-align: left;">
<li>Два раза нажимаем на пустой области окна маршрутизации. Появляется диалоговое окно со списком базовых модулей, встроенных в SunVox. Если нужен базовый модуль - кликайте по нему два раза. Если нужно загрузить модуль с диска - жмем кнопку "Загрузить". </li>
<li>Заходим в меню окна маршрутизации. Если нужен базовый модуль - в меню жмем "Новый". Если нужно загрузить модуль с диска - в меню выбираем "Загрузить". </li>
</ol>
<br />
При загрузке модуля с диска формат файла не принципиален. SunVox попытается превратить любой файл в модуль. Например, JPG-картинку, которая пиксель за пикселем будет преобразована в сэмпл. Или - текстовый файл, каждая буква которого также будет преобразована в отсчет сэмпла, и в итоге будет создан модуль Sampler. А для файлов в форматах sunvox, mod, xm, midi будет создан модуль MetaModule, внутри которого будет находиться загруженная композиция.<br />
<br />
Есть три способа соединить/разъединить два модуля:<br />
<br />
<ul style="text-align: left;">
<li>нажимаем на модуль-источник; жмем кнопку LINK (два прямоугольника с линией между ними); нажимаем на модуль-приемник; </li>
<li>нажимаем (не отжимая) на модуль-источник с нажатым SHIFT и тащим соединительную линию к модулю-приемнику; отжимаем кнопку мыши и SHIFT; </li>
<li>для мультитач устройств: одним пальцем нажимаем на модуль-источник, вторым - на модуль-приемник. </li>
</ul>
<br />
Повторное соединение действует, как разъединение.<br />
<br />
<a href="http://www.warmplace.ru/wiki/sunvox:manual_ru">Источник</a></div>
NightRadiohttp://www.blogger.com/profile/10600828520726852935noreply@blogger.com0tag:blogger.com,1999:blog-310899983313891624.post-23761546268832038752016-10-02T03:50:00.003-07:002016-10-26T06:09:13.475-07:00Факты о SunVox: интерфейс<div dir="ltr" style="text-align: left;" trbidi="on">
Интерфейс программы поделен на прямоугольные области (фреймы или, проще говоря, окна):<br />
<br />
<ul style="text-align: left;">
<li>редактор паттерна (сверху);</li>
<li>музыкальная клавиатура; ее можно использовать для игры на выбранном модуле или для редактирования паттерна;</li>
<li>редактор звуковой сети (посередине) с модулями и их контроллерами;</li>
<li>редактор таймлинии (внизу; бывает скрытым); если выбрать здесь паттерн, то его содержимое отобразится в верхнем редакторе. </li>
</ul>
<br />
У каждого редактора может быть свое меню - кнопка с тремя горизонтальными полосками. Кликнув на одном из окон мы делаем его активным, помещаем в фокус. Далее все нажатия клавиш в виде команд в первую очередь будут посылаться этому активному окну. Если окно не знает, что делать с этими командами, то оно пошлет их редактору паттерна, т.к. это самое приоритетное окно.<br />
<br />
Размер областей можно менять. Для этого предусмотрены специальные узкие панели (вертикальные и горизонтальные), захватывая одну из которых можно менять размер сразу нескольких областей. На одной из панелей расположены часы, регулятор громкости и кнопки управления проигрыванием. Стоит отметить одну особенность кнопки Стоп. При первом нажатии она, как и ожидается, останавливает проигрывание. При повторном нажатии состояние всех синтезаторов будет сброшено, а звуковой движок перейдет в режим ожидания.
<br />
<br />
<a href="http://www.warmplace.ru/wiki/doku.php?id=sunvox:manual_ru">Источник</a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlxX9Isci9GMgFS3bzSQWKwUAc9xkpFWqZsQwLoFZMFj7U-lDz2EtT02b6PEL-nHfcQ1YwxCL28DmdVjKsH4grnMqcQsPDiMgmdvYQ697VrrY09ICJwIfOdjqB3pG8bclEedR_Wh-Gf4E/s1600/gui_ru.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="244" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlxX9Isci9GMgFS3bzSQWKwUAc9xkpFWqZsQwLoFZMFj7U-lDz2EtT02b6PEL-nHfcQ1YwxCL28DmdVjKsH4grnMqcQsPDiMgmdvYQ697VrrY09ICJwIfOdjqB3pG8bclEedR_Wh-Gf4E/s320/gui_ru.png" width="320" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsZIfKImruuoaIbLbx5vFZ-Poos_xTrFKr9TDRang0swHu5kGBi8XL2OEC4daM2kI-FpRwbOSWUd_I0RN5L9Hv4dNvSeoZddd_BpCvvWSs-cnc9hJiXnOonUi-1OiM2Gawf1dFkShPfCE/s1600/gui_play_ru.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="93" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsZIfKImruuoaIbLbx5vFZ-Poos_xTrFKr9TDRang0swHu5kGBi8XL2OEC4daM2kI-FpRwbOSWUd_I0RN5L9Hv4dNvSeoZddd_BpCvvWSs-cnc9hJiXnOonUi-1OiM2Gawf1dFkShPfCE/s320/gui_play_ru.png" width="320" /></a></div>
</div>
NightRadiohttp://www.blogger.com/profile/10600828520726852935noreply@blogger.com0tag:blogger.com,1999:blog-310899983313891624.post-63831830201034660522016-09-27T22:06:00.001-07:002016-10-26T06:10:20.735-07:00Факты о SunVox: проект<div dir="ltr" style="text-align: left;" trbidi="on">
Музыкальное произведение (проект) в SunVox строится из следующих частей:<br />
<br />
<ul style="text-align: left;">
<li>модули - задают звучание;</li>
<li>паттерны - управляют модулями (посылают им ноты и прочие полезные команды); </li>
<li>таймлиния - задает, в каком порядке играть паттерны. </li>
</ul>
<br />
Все части хранятся в едином *.sunvox файле проекта. Т.е. если вы грузили какие-то модули или сэмплы с диска, то после сохранения проекта эти модули и сэмплы можно удалять без последствий, т.к. они были сохранены внутри файла композиции.<br />
Проект должен открываться и играть одинаково (или очень близко к оригиналу) независимо от устройства и системы - это одна из основных фишек программы. В SunVox вы никогда не получите ошибку типа "модуль superfilter не найден". Разумеется, при условии, что вы не используете старую версию программы. <br />
<br />
<a href="http://www.warmplace.ru/wiki/doku.php?id=sunvox:manual_ru">Источник</a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoYSHbFEAO5F21sfYC2zADUFR9_DljuclNy0pRTkM6sThYde2zmmO0J3wVX0dHc18zUSf98ifCDDuzgpTPL2Rt7xqSERpSzDvpbZkEna9Bxby8C5rwpDxQ7nxxOSgf91AjsA18U4C3TPc/s1600/sunvox_1.9.2_project.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="195" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoYSHbFEAO5F21sfYC2zADUFR9_DljuclNy0pRTkM6sThYde2zmmO0J3wVX0dHc18zUSf98ifCDDuzgpTPL2Rt7xqSERpSzDvpbZkEna9Bxby8C5rwpDxQ7nxxOSgf91AjsA18U4C3TPc/s320/sunvox_1.9.2_project.png" width="320" /></a></div>
</div>
NightRadiohttp://www.blogger.com/profile/10600828520726852935noreply@blogger.com0tag:blogger.com,1999:blog-310899983313891624.post-43866933075452846792015-12-29T23:01:00.002-08:002015-12-29T23:01:55.619-08:00SunVox v1.9.1 BETA<div dir="ltr" style="text-align: left;" trbidi="on">
<a href="http://www.warmplace.ru/forum/viewtopic.php?f=16&t=3901">Бета-версия SunVox 1.9.1 готова к тестированию</a>!<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQ3VF7XG2IaFX2glynh3YE2FZCBGimF8x0xgavSbNpWTi1ieJzEWjf2E_dtIZoPoLqUgIZOE38Vbr8ffxYIzcN0RHhzXk0CXsxs_irGm_6ZtfPJKWH1y92IosT0H4nIiQkjlpGWcQ0WmM/s1600/interpolator2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="204" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQ3VF7XG2IaFX2glynh3YE2FZCBGimF8x0xgavSbNpWTi1ieJzEWjf2E_dtIZoPoLqUgIZOE38Vbr8ffxYIzcN0RHhzXk0CXsxs_irGm_6ZtfPJKWH1y92IosT0H4nIiQkjlpGWcQ0WmM/s320/interpolator2.png" width="320" /></a></div>
<br />
SunVox - это программа для создания музыки, совмещающая в себе мощный модульный синтезатор и трекер. Работает на платформах Windows, OS X, Linux, Maemo, Meego, Raspberry Pi, Windows Mobile (WindowsCE), PalmOS, iOS, Android. Идеально подходит для разного рода экспериментов в области электронной музыки, поиска нового звучания, новых стилей. </div>
NightRadiohttp://www.blogger.com/profile/10600828520726852935noreply@blogger.com0tag:blogger.com,1999:blog-310899983313891624.post-58537467863179512302015-02-23T02:43:00.002-08:002015-02-23T02:43:40.216-08:00Nature - Oscillator для Android<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="text-align: left;" trbidi="on">
Спектральный синтезатор <a href="http://warmplace.ru/soft/nosc/index_ru.php">Nature - Oscillator</a> теперь доступен и для Android! Программа позволяет преобразовывать изображение с камеры в звук.<br />
<br /></div>
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/svidgffXB7w" width="560"></iframe></div>
NightRadiohttp://www.blogger.com/profile/10600828520726852935noreply@blogger.com0tag:blogger.com,1999:blog-310899983313891624.post-48195092726151674802014-03-31T08:54:00.000-07:002014-03-31T08:54:02.906-07:00Как звучат круги на полях<div dir="ltr" style="text-align: left;" trbidi="on">
<iframe allowfullscreen="" frameborder="0" height="360" src="//www.youtube.com/embed/0gf8zLQrlAw" width="480"></iframe><br />
Загадочные послания на полях, преобразованные в звук при помощи спектрального синтезатора Virtual ANS. Предполагаемое воздействие - на уровне подсознания. Диапазон частот: 16Гц - 16кГц (10 октав).</div>
NightRadiohttp://www.blogger.com/profile/10600828520726852935noreply@blogger.com1tag:blogger.com,1999:blog-310899983313891624.post-48087305123644204042013-10-02T19:31:00.003-07:002013-10-02T19:33:44.320-07:00Virtual ANS 2.0<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="text-align: left;" trbidi="on">
Представляю вашему вниманию мою новую разработку - <a href="http://warmplace.ru/soft/ans/index_ru.php">Virtual ANS 2.0</a><br />
<br />
Это программный симулятор легендарного советского оптоэлектронного синтезатора АНС, созданного инженером Евгением Мурзиным в период с 1938 по 1958 г.<br />
Вы можете услышать звуки АНСа в фильмах Андрея Тарковского "Солярис", "Зеркало", "Сталкер", или, например, в сцене ночного кошмара из комедии Леонида Гайдая "Бриллиантовая рука".<br />
<br />
В основе программы - принцип построения музыкальной композиции путем рисования сонограммы при помощи различных графических инструментов.<br />
Возможности Virtual ANS не изучены до конца, поэтому эта программа (так же, как PixiVisor) больше подойдет для людей, которые ищут что-то новое в звуке, не боятся экспериментов.<br />
<br />
Поддерживаются следующие системы: iOS, Android, Windows, Linux, OSX.<br />
<br />
Всех интересующихся приглашаю в группу <a href="http://vk.com/ansynth">http://vk.com/ansynth</a><br />
<br /></div>
<iframe allowfullscreen="" frameborder="0" height="315" src="//www.youtube.com/embed/TR6lwvBuZnM" width="560"></iframe>
<iframe allowfullscreen="" frameborder="0" height="315" src="//www.youtube.com/embed/A6aYQUsQYMg" width="560"></iframe>
<iframe allowfullscreen="" frameborder="0" height="315" src="//www.youtube.com/embed/J1u_YCBYWbE" width="560"></iframe>
<iframe allowfullscreen="" frameborder="0" height="315" src="//www.youtube.com/embed/sYbY0h7QdHA" width="560"></iframe>
<iframe allowfullscreen="" frameborder="0" height="315" src="//www.youtube.com/embed/gKwVZgVYVDU" width="560"></iframe>
<iframe allowfullscreen="" frameborder="0" height="315" src="//www.youtube.com/embed/p3eeHR601CA" width="560"></iframe>
</div>NightRadiohttp://www.blogger.com/profile/10600828520726852935noreply@blogger.com1tag:blogger.com,1999:blog-310899983313891624.post-70858966190836914112013-03-22T13:08:00.001-07:002013-03-22T13:08:33.428-07:00Pixilang v3.4.5<div dir="ltr" style="text-align: left;" trbidi="on">
<a href="http://warmplace.ru/soft/pixilang/index_ru.php">Pixilang обновился до версии 3.4.5!</a><br />
Что нового:<br />
<ul style="text-align: left;">
<li>новые эффекты для функции effector(): EFF_SPREAD_LEFT, EFF_SPREAD_RIGHT, EFF_SPREAD_UP, EFF_SPREAD_DOWN;</li>
<li>дополнительные опции драйвера ASIO (в окне Preferences);</li>
<li>теперь запись с микрофона и Line-in доступна также для Linux (ALSA), Windows (MME,DirectSound,ASIO), Windows Mobile (только с full duplex драйверами) и OSX;</li>
<li>в стартовом диалоге добавлена кнопка Prefs - она открывает окно глобальных настроек Pixilang;</li>
<li>новая функция: create_directory() - создать директорию;</li>
<li>новая функция: get_flags() - получить флаги контейнера;</li>
<li>новая функция: prefs_dialog() - открыть окно с глобальными настройками;</li>
<li>новая функция: open_url() - открыть URL в браузере;</li>
<li>новая функция: vsync() - включение/выключение вертикальной синхронизации;</li>
<li>новые примеры (graphics): split_rgb2, effector2, effector3;</li>
<li>исправлены ошибки.</li>
</ul>
</div>
NightRadiohttp://www.blogger.com/profile/10600828520726852935noreply@blogger.com2tag:blogger.com,1999:blog-310899983313891624.post-73579306399587390582013-02-25T00:43:00.004-08:002013-02-25T00:43:37.352-08:00Запись звука в Linux<div dir="ltr" style="text-align: left;" trbidi="on">
Если у вас Linux, и периодически глючит/виснет запись звука со звуковой карты - попробуйте выключить браузер :) В моем случае Google Chrome полностью блокирует запись аудио через ALSA. Запускаю любой рекордер, жму REC, получаю первую секунду звука, после чего рекордер виснет.</div>
NightRadiohttp://www.blogger.com/profile/10600828520726852935noreply@blogger.com0tag:blogger.com,1999:blog-310899983313891624.post-78169986834413709792013-02-12T23:35:00.000-08:002013-02-12T23:48:25.183-08:00PixiVisor - передача видео через звук<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-family: inherit;">Расскажу об одной необычной программе, которую выпустил несколько дней назад. Будет здорово, если найдутся люди, которым это окажется так же интересно, как мне. </span><br />
<span style="font-family: inherit;">Это <a href="http://warmplace.ru/soft/pixivisor/index_ru.php">PixiVisor</a> </span><br />
<span style="font-family: inherit;">В основе - передача видеосигнала через звук.</span><br />
<span style="font-family: inherit;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilPcgxjABLKSIVyggc7NlqBeWdrDPmlXpYynK2GwuGn8QV4e7DCsY9dGpAjqzdYhS1rkaUXnqbM2GjVDQq_hqqSmFv-iR2WvI3v8W1B7Ux45GNQ21tRTQDZbRvwuEF2vnq0aT11oUPOE8/s1600/480x320_03.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="213" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilPcgxjABLKSIVyggc7NlqBeWdrDPmlXpYynK2GwuGn8QV4e7DCsY9dGpAjqzdYhS1rkaUXnqbM2GjVDQq_hqqSmFv-iR2WvI3v8W1B7Ux45GNQ21tRTQDZbRvwuEF2vnq0aT11oUPOE8/s320/480x320_03.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<h3 style="text-align: left;">
<span style="font-family: inherit;">Идея</span></h3>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">
Увлекаясь всякими странными штуками, я уже давненько вынашиваю план создания записывающего устройства для нарезки грампластинок, дабы получить твердую копию своей музыки, которую потом можно и увидеть и потрогать. И как-то задумавшись о применении такого аппарата, в голову пришла мысль: "а почему бы не записать на пластинку видео?" Для этого всего лишь потребуется последовательно преобразовывать каждый кадр в звук. И самый простой способ преобразования - построчно сканировать изображение, а яркость пикселя рассматривать как амплитуду отсчета (сэмпла). </span><br />
<div>
<span style="font-family: inherit;">Для этого подойдет любой компьютер с дешевой звуковой картой. В качестве базовой частоты дискретизации выберем самую распространенную - 44100 Гц. Оптимальное разрешение - 64 на 64 пикселя. Кадровая частота = 44100 / ( 64 * 64 ) = 10.76. Не так уж много для качественной картинки, но для экспериментов вполне сойдет. </span></div>
<div>
<span style="font-family: inherit;">Но представив реализацию этого алгоритма на базе двух компьютеров, обменивающихся изображением по аудио кабелю или через микрофон, стало ясно, что применение такой техники далеко не ограничивается записью видео на звуковой носитель. И о том, что получилось в итоге, в красочных примерах расскажу ниже.</span><br />
<span style="font-family: inherit;"><br /></span>
<h3 style="text-align: left;">
<span style="font-family: inherit;">Реализация</span></h3>
<span style="font-family: inherit;"><br /></span><span style="font-family: inherit;">В качестве языка программирования был выбран <a href="http://warmplace.ru/soft/pixilang/index_ru.php">Pixilang</a>, как легко портируемый и заточенный на работу с растровой графикой.</span><br />
<span style="font-family: inherit;">Получилась программа, разделенная на две части: передатчик (Transmitter) и приемник (Receiver). </span></div>
<div>
<span style="font-family: inherit;">Передатчик загружает картинку (JPG, PNG, GIF) или анимацию (GIF) и начинает вещать - на лету конвертировать каждый кадр в звук. Выглядит это примерно так: на экране играет анимация, а из динамиков доносится не очень приятное на слух жужжание. </span></div>
<div>
<span style="font-family: inherit;">Приемник выполняет обратное преобразование - звук, принятый через микрофон или линейный вход, превращается в изображение, которое мы видим на экране. Изображение черно-белое, но для него можно назначить одну из 64 цветовых палитр. Принятую анимацию можно записывать в GIF. </span></div>
<div>
<span style="font-family: inherit;">Запускаем приемник и передатчик на разных устройствах, чтобы посмотреть, как они общаются. Так как для тестирования использовались телефон (Android) и планшет (iOS), полный функционал есть только у версии PixiVisor для этих платформ. В версиях для Windows, Linux и OSX временно не работает приемник.
Для начала проверим передачу по воздуху, без проводов. </span><br />
<span style="font-family: inherit;"><br /></span></div>
<iframe allowfullscreen="" frameborder="0" height="315" src="http://www.youtube.com/embed/_AcXzG6NzF0" width="560"></iframe>
<iframe allowfullscreen="" frameborder="0" height="315" src="http://www.youtube.com/embed/CHVb7o8x7wU" width="560"></iframe>
<br />
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<span style="font-family: inherit;">Что мы видим? </span><br />
<span style="font-family: inherit;">Красивые искажения картинки, связанные в первую очередь с отражением звука в комнате и с фильтрацией на уровне железа передатчика и приемника. </span><br />
<span style="font-family: inherit;">Четкая синхронизация отсутствует, поэтому нужно либо на стороне приемника подгонять пальцем картинку, либо в настройках одной из сторон менять значение параметра Finetune.</span><br />
<span style="font-family: inherit;">Влияние положения руки на распространение звука особенно хорошо видно в следующем ролике:</span><br />
<span style="font-family: inherit;"><br /></span>
<iframe allowfullscreen="" frameborder="0" height="315" src="http://www.youtube.com/embed/mF5C93cDocA" width="560"></iframe>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span><span style="font-family: inherit;">Теперь попробуем передать видеосигнал по аудио кабелю. </span><br />
<span style="font-family: inherit;">На устройствах Android и iOS отсутствует линейный аудио вход, но есть возможность подключения гарнитуры через разъем TRRS (Jack) с четырьмя контактами. Этим можно воспользоваться и, спаяв нехитрый переходник, получить линейный моно вход. Схема приведена в конце следующего ролика. Можно взять и готовый конвертер. Например, iRig, или какой-нибудь внешний USB аудио интерфейс.</span><br />
<span style="font-family: inherit;"><br /></span>
<iframe allowfullscreen="" frameborder="0" height="315" src="http://www.youtube.com/embed/6D6mRd0Eswo" width="560"></iframe>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span><span style="font-family: inherit;">По проводу качество заметно улучшилось. Осталось лишь влияние фильтров на входе и выходе подопытных устройств. iPad заметно глушит низкие частоты при получении сигнала из вне. На картинке это проявляется так: более заметными становятся контуры изображения, а равномерно закрашенные области теряются. Android телефон LG Optimus Hub наоборот глушит высокие при приеме - картинка теряет четкие контуры. </span><br />
<span style="font-family: inherit;">Но если теперь видео идет у нас по обычному аудио проводу, то почему бы не попробовать исказить этот сигнал при помощи звукового оборудования (процессоры эффектов, микшеры)? Для примера возьмем карманный аналоговый синтезатор Korg Monotron, который послужит нам в роли низкочастотного фильтра.</span><br />
<span style="font-family: inherit;"><br /></span>
<iframe allowfullscreen="" frameborder="0" height="315" src="http://www.youtube.com/embed/g2W1W4fwEkg" width="560"></iframe>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span><span style="font-family: inherit;">Лично меня результат впечатлил. Monotron размывает картинку по горизонтали. При этом параметр Peak (Resonance) добавляет контрастные хвосты и искажает изображение до неузнаваемости. </span><br />
<span style="font-family: inherit;">Попробуем воспользоваться аналоговым микшером Behringer Xenyx 1202FX для микширования двух видеосигналов и наложения эффектов Reverb и Delay (микшер имеет встроенный процессор эффектов).</span><br />
<span style="font-family: inherit;"><br /></span>
<iframe allowfullscreen="" frameborder="0" height="315" src="http://www.youtube.com/embed/HkdLAWPsONQ" width="560"></iframe>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">И получаем самый интересный результат. Два видеосигнала легко смешиваются, а обработка эффектами Reverb и Delay приводит к неожиданно красивым переливам исходной картинки.</span><br />
<span style="font-family: inherit;"><br /></span></div>
<div>
<h3 style="text-align: left;">
<span style="font-family: inherit;">Выводы</span></h3>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">
Для передачи плавной анимации с разрешением хотя бы 320x240 эта технология конечно не годится. </span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">Кроме того и первоначальная задумка записывать изображение на аналоговый звуковой носитель столкнулась с небольшой преградой - скорость воспроизведения может плавать, от чего нарушится синхронизация и картинка будет дергаться. </span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">Синхронизацию можно попробовать реализовать по тому же принципу, что и во "взрослом" телевидении - включив синхроимпульсы между кадров. Но это несколько усложнит алгоритм и внесет дополнительные неудобства для легкого микширования и обработки видеосигналов. </span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">Чтобы микширование и обработка минимально зависели от синхронизации, на стороне приемника картинку нужно делать бесшовной (как текстура). В этом случае на второй план уходит передача осмысленных изображений с четкими границами кадра (например, фотографии). А на первом плане оказывается передача бесшовных паттернов, которые хорошо показаны в последнем видеоролике. Здесь можно провести аналогию с синтезом звука. Например, один звуковой генератор выдает синус, другой - белый шум. Их можно смешивать, перемножать, не подгоняя фазу одного генератора под фазу другого. Точно так же и с видео в формате PixiVisor: один передатчик выдает бесшовную картинку (паттерн) синуса, другой - белый шум. И эти два сигнала без проблем смешиваются, фильтруются, а на выходе получается красивая анимация, в которой границы кадра не имеют значения. </span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">Конечно же видеоарт - не единственное достойное применение для программы. Я уверен, что кто-нибудь в процессе экспериментов с PixiVisor найдет еще что-нибудь интересное.</span></div>
</div>
NightRadiohttp://www.blogger.com/profile/10600828520726852935noreply@blogger.com7tag:blogger.com,1999:blog-310899983313891624.post-39939749717842066572013-02-08T08:17:00.001-08:002013-02-12T23:42:38.493-08:00Релиз первой версии PixiVisor<div dir="ltr" style="text-align: left;" trbidi="on">
Подробности тут:<br />
<a href="http://nradio.blogspot.ru/2013/02/pixivisor.html">http://nradio.blogspot.ru/2013/02/pixivisor.html</a></div>
NightRadiohttp://www.blogger.com/profile/10600828520726852935noreply@blogger.com0tag:blogger.com,1999:blog-310899983313891624.post-86315622385047231612013-02-03T19:43:00.000-08:002013-02-03T19:43:02.635-08:00<div dir="ltr" style="text-align: left;" trbidi="on">
Blender 2.65a. Полет видеоредактора нормальный :) В предыдущих версиях были глюки с синхронизацией видео и звука.</div>
NightRadiohttp://www.blogger.com/profile/10600828520726852935noreply@blogger.com0tag:blogger.com,1999:blog-310899983313891624.post-45279300382126950282013-01-04T22:55:00.002-08:002013-01-04T22:55:37.730-08:00Elochka (SunVox + Pixilang)<div dir="ltr" style="text-align: left;" trbidi="on">
<iframe allowfullscreen="allowfullscreen" frameborder="0" height="315" src="http://www.youtube.com/embed/G9s1k9HD1w4" width="560"></iframe></div>
NightRadiohttp://www.blogger.com/profile/10600828520726852935noreply@blogger.com0tag:blogger.com,1999:blog-310899983313891624.post-75522612522849564972012-12-26T00:29:00.000-08:002012-12-26T06:12:52.602-08:00Псевдо-HDR эффект средствами Pixilang<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfKIlcbEDvtknx8p275GFduOSIrjwAw4w-NkVddda9Rn6Ofcq0j-iJuVhDphpsnqCh3i17UKFjJRdWGecxK9Gk2BFy0tPM05-QdP4VqKyrSgd4aXpRro3vhSE03sif8wl34FMGMKzub2Y/s1600/pseudo_hdr.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfKIlcbEDvtknx8p275GFduOSIrjwAw4w-NkVddda9Rn6Ofcq0j-iJuVhDphpsnqCh3i17UKFjJRdWGecxK9Gk2BFy0tPM05-QdP4VqKyrSgd4aXpRro3vhSE03sif8wl34FMGMKzub2Y/s320/pseudo_hdr.jpg" width="251" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
Псевдо-HDR эффект (или тональное отображение, хотя я не уверен в уместности этого термина в данном случае, когда за основу берется обычная 24битная картинка) - грубо говоря, выборочное вытягивание уровней одной фотографии таким образом, чтобы темные участки стали более яркими и контрастными. Приведу пример. Вы сделали снимок против Солнца. В итоге хорошо вышло небо с облаками, а деревья и какие-то детали в тени получились темными и неразборчивыми. Здесь этот эффект в какой-то мере спасет ситуацию. Главное не переборщить, так как более темные участки содержат большее количество шумов.<br />
<br />
Понятно, что существует масса программ с реализацией описанного эффекта. Но мне всегда было интересно создать такую функцию средствами пиксельно-ориентированного языка Pixilang, автором которого я являюсь :) Зачем? Во-первых, чтобы понять, как оно работает. Во-вторых, чтобы при желании можно было обрабатывать не только фотографии, но и любую графику, анимацию, видео. В-третьих, чтобы любой мог добавить эту функцию в свою программу.<br />
<br />
Сказано - сделано. Посмотрим сначала на исходник получившейся программы.<br />
<span style="font-size: xx-small;"><br /></span>
<span style="font-size: xx-small;">/*</span><br />
<span style="font-size: xx-small;"> hdr_simulation.pixi</span><br />
<span style="font-size: xx-small;"><br /></span>
<span style="font-size: xx-small;"> Copyright (c) 2012, Alexander Zolotov <nightradio gmail.com="gmail.com"></nightradio></span><br />
<span style="font-size: xx-small;"> http://www.warmplace.ru</span><br />
<span style="font-size: xx-small;"><br /></span>
<span style="font-size: xx-small;"> Permission is hereby granted, free of charge, to any person obtaining a copy</span><br />
<span style="font-size: xx-small;"> of this software and associated documentation files (the "Software"), to </span><br />
<span style="font-size: xx-small;"> deal in the Software without restriction, including without limitation the </span><br />
<span style="font-size: xx-small;"> rights to use, copy, modify, merge, publish, distribute, sublicense, and/or</span><br />
<span style="font-size: xx-small;"> sell copies of the Software, and to permit persons to whom the Software is </span><br />
<span style="font-size: xx-small;"> furnished to do so, subject to the following conditions:</span><br />
<span style="font-size: xx-small;"><br /></span>
<span style="font-size: xx-small;"> The above copyright notice and this permission notice shall be included in </span><br />
<span style="font-size: xx-small;"> all copies or substantial portions of the Software.</span><br />
<span style="font-size: xx-small;"><br /></span>
<span style="font-size: xx-small;"> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR </span><br />
<span style="font-size: xx-small;"> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, </span><br />
<span style="font-size: xx-small;"> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span><br />
<span style="font-size: xx-small;"> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER </span><br />
<span style="font-size: xx-small;"> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING </span><br />
<span style="font-size: xx-small;"> FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS</span><br />
<span style="font-size: xx-small;"> IN THE SOFTWARE.</span><br />
<span style="font-size: xx-small;">*/</span><br />
<span style="font-size: xx-small;"><br /></span>
<span style="font-size: xx-small;">scr = get_screen()</span><br />
<span style="font-size: xx-small;">xsize = get_xsize( scr )</span><br />
<span style="font-size: xx-small;">ysize = get_ysize( scr )</span><br />
<span style="font-size: xx-small;">clear()</span><br />
<span style="font-size: xx-small;"><br /></span>
<span style="font-size: xx-small;">//$src - source image (container of PIXEL type)</span><br />
<span style="font-size: xx-small;">//$filter_radius (in percent)</span><br />
<span style="font-size: xx-small;">fn apply_hdr_effect( $src, $filter_radius, $intensity )</span><br />
<span style="font-size: xx-small;">{</span><br />
<span style="font-size: xx-small;"> $src_xsize = get_xsize( $src )</span><br />
<span style="font-size: xx-small;"> $src_ysize = get_ysize( $src )</span><br />
<span style="font-size: xx-small;"><br /></span>
<span style="font-size: xx-small;"> //Make grayscale copy:</span><br />
<span style="font-size: xx-small;"> $img2 = clone( $src )</span><br />
<span style="font-size: xx-small;"> $c = new( $src_xsize, $src_ysize, FLOAT32 )</span><br />
<span style="font-size: xx-small;"> split_rgb( 0, $src, -1, $c ) //Get red channel</span><br />
<span style="font-size: xx-small;"> split_rgb( 1, $img2, $c, $c, $c )</span><br />
<span style="font-size: xx-small;"><br /></span>
<span style="font-size: xx-small;"> //Blur grayscale image:</span><br />
<span style="font-size: xx-small;"> $scr = get_screen()</span><br />
<span style="font-size: xx-small;"> set_screen( $img2 )</span><br />
<span style="font-size: xx-small;"> $size = ( $src_xsize * $filter_radius ) / 100</span><br />
<span style="font-size: xx-small;"> effector( EFF_HBLUR, $size )</span><br />
<span style="font-size: xx-small;"> effector( EFF_VBLUR, $size )</span><br />
<span style="font-size: xx-small;"> set_screen( $scr )</span><br />
<span style="font-size: xx-small;"><br /></span>
<span style="font-size: xx-small;"> //Invert it:</span><br />
<span style="font-size: xx-small;"> op_cn( OP_XOR, $img2, WHITE )</span><br />
<span style="font-size: xx-small;"><br /></span>
<span style="font-size: xx-small;"> //Do normalization:</span><br />
<span style="font-size: xx-small;"> split_rgb( 0, $img2, $c )</span><br />
<span style="font-size: xx-small;"> op_cc( OP_MUL, $c, $c ) //Add contrast</span><br />
<span style="font-size: xx-small;"> op_cc( OP_MUL, $c, $c ) //Add contrast</span><br />
<span style="font-size: xx-small;"> if $intensity != 1</span><br />
<span style="font-size: xx-small;"> {</span><br />
<span style="font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>op_cn( OP_MUL, $c, $intensity )</span><br />
<span style="font-size: xx-small;"> }</span><br />
<span style="font-size: xx-small;"> op_cn( OP_ADD, $c, 1 ) //Add base level</span><br />
<span style="font-size: xx-small;"> $r = clone( $c ) </span><br />
<span style="font-size: xx-small;"> $g = clone( $c ) </span><br />
<span style="font-size: xx-small;"> $b = clone( $c )</span><br />
<span style="font-size: xx-small;"> split_rgb( 0, $src, $r, $g, $b )</span><br />
<span style="font-size: xx-small;"> op_cc( OP_MUL, $r, $c )</span><br />
<span style="font-size: xx-small;"> op_cc( OP_MUL, $g, $c )</span><br />
<span style="font-size: xx-small;"> op_cc( OP_MUL, $b, $c )</span><br />
<span style="font-size: xx-small;"> split_rgb( 1, $src, $r, $g, $b )</span><br />
<span style="font-size: xx-small;"> remove( $r )</span><br />
<span style="font-size: xx-small;"> remove( $g )</span><br />
<span style="font-size: xx-small;"> remove( $b )</span><br />
<span style="font-size: xx-small;"> </span><br />
<span style="font-size: xx-small;"> remove( $c )</span><br />
<span style="font-size: xx-small;"> remove( $img2 )</span><br />
<span style="font-size: xx-small;">}</span><br />
<span style="font-size: xx-small;"><br /></span>
<span style="font-size: xx-small;">//Load image:</span><br />
<span style="font-size: xx-small;">img = load( "images/dark.jpg" )</span><br />
<span style="font-size: xx-small;">set_flags( img, CFLAG_INTERP )</span><br />
<span style="font-size: xx-small;">img_xsize = get_xsize( img )</span><br />
<span style="font-size: xx-small;">img_ysize = get_ysize( img )</span><br />
<span style="font-size: xx-small;">s = 1</span><br />
<span style="font-size: xx-small;">if img_xsize > xsize || img_ysize >= ysize</span><br />
<span style="font-size: xx-small;">{</span><br />
<span style="font-size: xx-small;"> s1 = xsize / img_xsize</span><br />
<span style="font-size: xx-small;"> s2 = ysize / img_ysize</span><br />
<span style="font-size: xx-small;"> if s1 < s2 { s = s1 } else { s = s2 }</span><br />
<span style="font-size: xx-small;">}</span><br />
<span style="font-size: xx-small;">pixi( img, 0, 0, WHITE, s, s )</span><br />
<span style="font-size: xx-small;">frame( 500 )</span><br />
<span style="font-size: xx-small;"><br /></span>
<span style="font-size: xx-small;">apply_hdr_effect( img, 3, 2 )</span><br />
<span style="font-size: xx-small;">set_flags( img, CFLAG_INTERP )</span><br />
<span style="font-size: xx-small;">save( img, "hdr.jpg", FORMAT_JPEG, 95 )</span><br />
<span style="font-size: xx-small;"><br /></span>
<span style="font-size: xx-small;">start_timer( 0 )</span><br />
<span style="font-size: xx-small;">while 1</span><br />
<span style="font-size: xx-small;">{</span><br />
<span style="font-size: xx-small;"> t = get_timer( 0 )</span><br />
<span style="font-size: xx-small;"> transp( t / 64 )</span><br />
<span style="font-size: xx-small;"> pixi( img, 0, 0, WHITE, s, s )</span><br />
<span style="font-size: xx-small;"> frame()</span><br />
<span style="font-size: xx-small;"> while get_event() { if EVT[ EVT_TYPE ] == EVT_QUIT { halt } }</span><br />
<span style="font-size: xx-small;">}</span><br />
<span style="font-size: xx-small;"><br /></span>
Функция apply_hdr_effect( $img, $radius, $intensity ) обрабатывает псевдо-HDR фильтром картинку $img. Параметры: $radius - радиус blur-фильтра; $intensity - интенсивность эффекта (нормальное значение - 1 или 2).<br />
<br />
Теперь посмотрим на результаты.<br />
<div style="text-align: center;">
<br /></div>
<div style="text-align: center;">
Исходное изображение:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjoepPjOXSQ3clK1HB8IOgT2msNFwDx2xWju6pWHRHsSbBx0Qx5-pj6g0C1Xa3XOOkY7E6J5f0wCgIxoZBXSQ3v8zLVDhyphenhyphenHLaOFq1GYtVYf5VPKeLkh_5n798FdTG89sDBPAs5PmWfUyY/s1600/dark.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjoepPjOXSQ3clK1HB8IOgT2msNFwDx2xWju6pWHRHsSbBx0Qx5-pj6g0C1Xa3XOOkY7E6J5f0wCgIxoZBXSQ3v8zLVDhyphenhyphenHLaOFq1GYtVYf5VPKeLkh_5n798FdTG89sDBPAs5PmWfUyY/s320/dark.jpg" width="240" /></a></div>
<div style="text-align: center;">
После обработки:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsfYnH-BhxY8ylC9wDpJwg6fgOfGR_azeSXQ1X4W5mUTqGOwMXEpURjHRF3HRGVYjrZ11jIGKrSdloXkGk5QRWtjOYwYsSEgdGNO0aobeJO0tRmSoFOu63WN3jPMrZXzaFvhn2Ok3_YtQ/s1600/dark_hdr1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsfYnH-BhxY8ylC9wDpJwg6fgOfGR_azeSXQ1X4W5mUTqGOwMXEpURjHRF3HRGVYjrZ11jIGKrSdloXkGk5QRWtjOYwYsSEgdGNO0aobeJO0tRmSoFOu63WN3jPMrZXzaFvhn2Ok3_YtQ/s320/dark_hdr1.jpg" width="240" /></a></div>
<br />
<div style="text-align: center;">
Исходное изображение:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMBiFJxJ4ErwWFq8OGYdNSZMkSOynR8hqaN9l7P3Nmc0wTME8UT2GOIHidrmVqbJH7NBhavocqTRu04hyEvDBiyDSckKJIVKk2NTfH7OjdQ7iwR0vED4isrOAuHMZmsbgJNbLnBqB76bA/s1600/dark2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMBiFJxJ4ErwWFq8OGYdNSZMkSOynR8hqaN9l7P3Nmc0wTME8UT2GOIHidrmVqbJH7NBhavocqTRu04hyEvDBiyDSckKJIVKk2NTfH7OjdQ7iwR0vED4isrOAuHMZmsbgJNbLnBqB76bA/s320/dark2.jpg" width="320" /></a></div>
<div style="text-align: center;">
После обработки:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_-JnKxn6fwQNStb2P9pWzlTgEsDcwG59dtYDUJmNuaIkeFOA3c2wuAYXm-JmgmQmbU-fhiJdD7XMEXVHQyERVbyFOzlYGesxkRQ1DLU9OFx9c4K38i2H5NcxnXVaAwkBsALTQot2Ferk/s1600/dark_hdr2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_-JnKxn6fwQNStb2P9pWzlTgEsDcwG59dtYDUJmNuaIkeFOA3c2wuAYXm-JmgmQmbU-fhiJdD7XMEXVHQyERVbyFOzlYGesxkRQ1DLU9OFx9c4K38i2H5NcxnXVaAwkBsALTQot2Ferk/s320/dark_hdr2.jpg" width="320" /></a></div>
<br />
<div style="text-align: center;">
Исходное изображение:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoknVlge8_2UWD3nLfEImrpghYru8tXMeO9DpWpOf2AHwOi-peDyTN9KPrSXA4mGZJM8oBtOt_uc59O2q-bdqh3TLg2WlNbpJGcaep3aMjOlF-lrFmcqXZ2Z_zAdI5VrKjgQ0V-ba0G3s/s1600/dark5.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="213" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoknVlge8_2UWD3nLfEImrpghYru8tXMeO9DpWpOf2AHwOi-peDyTN9KPrSXA4mGZJM8oBtOt_uc59O2q-bdqh3TLg2WlNbpJGcaep3aMjOlF-lrFmcqXZ2Z_zAdI5VrKjgQ0V-ba0G3s/s320/dark5.jpg" width="320" /></a></div>
<div style="text-align: center;">
После обработки:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsPVkx46cXbMKpq0iOowN5nB_XLBzkv_qSeEEli_ZsVhO__spaXrQ_T5eEKJAugS-Hf41tN7CVjdqn-oKCZokFXtGNKu11Ds8ve6g4-DJINDl1gd9AdqI-mGu4rjOoVffUshP8bERPTv4/s1600/dark_hdr5.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="213" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsPVkx46cXbMKpq0iOowN5nB_XLBzkv_qSeEEli_ZsVhO__spaXrQ_T5eEKJAugS-Hf41tN7CVjdqn-oKCZokFXtGNKu11Ds8ve6g4-DJINDl1gd9AdqI-mGu4rjOoVffUshP8bERPTv4/s320/dark_hdr5.jpg" width="320" /></a></div>
<br />
<div style="text-align: center;">
Исходное изображение:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEge3ziGHNc3ZVSpLDdwoLgfy4lgR8qawexlLu-obbdA-XM4BV_MfRs3CBVkidABFNnIVDbVhQ8j5j0FBAnbrVsd6DSQVoA9pViLj8_mlbo-xgdEimZuc-ma7bUl9O4FsW3ny-GUqtPs65c/s1600/dark6.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEge3ziGHNc3ZVSpLDdwoLgfy4lgR8qawexlLu-obbdA-XM4BV_MfRs3CBVkidABFNnIVDbVhQ8j5j0FBAnbrVsd6DSQVoA9pViLj8_mlbo-xgdEimZuc-ma7bUl9O4FsW3ny-GUqtPs65c/s320/dark6.jpg" width="213" /></a></div>
<div style="text-align: center;">
После обработки:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJDp6VJSHak1ygvbz_OORYLeFcyVz8GiL-NZtH-3oY9B76mjjdiZtaex20UziAqEgP-ybdjm3QmCBj3USgoalHnn-8LIzFerId_j3ny16XwObn3QlMZ9Hcoa7MTPbMyC31_SXQVD9iHKU/s1600/dark_hdr6.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJDp6VJSHak1ygvbz_OORYLeFcyVz8GiL-NZtH-3oY9B76mjjdiZtaex20UziAqEgP-ybdjm3QmCBj3USgoalHnn-8LIzFerId_j3ny16XwObn3QlMZ9Hcoa7MTPbMyC31_SXQVD9iHKU/s320/dark_hdr6.jpg" width="213" /></a></div>
<br />
Думаю, что со временем программа обрастет дополнительными возможностями. Последняя версия находится в <a href="http://warmplace.ru/soft/pixilang">дистрибутиве Pixilang</a>, в папке examples/graphics, файл hdr_simulation.pixi. Надеюсь, кому-то это окажется полезным :)</div>
</div>
NightRadiohttp://www.blogger.com/profile/10600828520726852935noreply@blogger.com2tag:blogger.com,1999:blog-310899983313891624.post-50682242296049289892012-12-25T10:12:00.001-08:002012-12-25T10:13:18.342-08:00Pixilang v3.4.3<div dir="ltr" style="text-align: left;" trbidi="on">
Для поддержания новогоднего настроения :)<br />
<a href="http://www.warmplace.ru/soft/pixilang/index_ru.php">Pixilang обновился до версии 3.4.3</a>. <br />
<br />
Что нового:<br />
<ul style="text-align: left;">
<li>лицензия изменена с New BSD на MIT; </li>
<li>текст лицензии стал более простым, а код по прежнему можно свободно изменять и использовать в своих разработках, в том числе в коммерческих; </li>
<li>Android: поддержка архитектур x86 and ARMv7-A; </li>
<li>Android: возможность подключения внешних нативных библиотек (.so); см. примеры в папке native_library;</li>
<li>новые операции обработки данных op_cn(): OP_COLOR_SUB2, OP_DIV2; в них операнды переставлены местами; </li>
<li>новые функции для работы с матрицами трансформации: t_push_matrix() and t_pop_matrix(); </li>
<li>новые граф. примеры: labyrinth, clock, save_gif_anim2, hdr_simulation, tiny_generator1-5; </li>
<li>исправлены ошибки.</li>
</ul>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-hSs6Q_A1wrI/UNiNshvp8lI/AAAAAAAACEs/qu0Q-GLIGyA/s1600/pixi_anim2.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-hSs6Q_A1wrI/UNiNshvp8lI/AAAAAAAACEs/qu0Q-GLIGyA/s1600/pixi_anim2.gif" /></a><a href="http://2.bp.blogspot.com/-_n3MYSTKh5k/UNiNshNJ6qI/AAAAAAAACE0/NTH80ane-9U/s1600/pixi_anim1.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-_n3MYSTKh5k/UNiNshNJ6qI/AAAAAAAACE0/NTH80ane-9U/s1600/pixi_anim1.gif" /></a><a href="http://1.bp.blogspot.com/-m_p6P5blGY4/UNiNsho00HI/AAAAAAAACEw/rAUwMCZmvdQ/s1600/pixi_anim3.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-m_p6P5blGY4/UNiNsho00HI/AAAAAAAACEw/rAUwMCZmvdQ/s1600/pixi_anim3.gif" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-PtbdclN8MvM/UNiNtYxaDoI/AAAAAAAACE4/_SGZAJlRY7g/s1600/pixi_anim4.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-PtbdclN8MvM/UNiNtYxaDoI/AAAAAAAACE4/_SGZAJlRY7g/s1600/pixi_anim4.gif" /></a><a href="http://3.bp.blogspot.com/-wPR368Du9zY/UNiNtgTQACI/AAAAAAAACFA/CXhyBXWA98I/s1600/pixi_anim5.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-wPR368Du9zY/UNiNtgTQACI/AAAAAAAACFA/CXhyBXWA98I/s1600/pixi_anim5.gif" /></a></div>
</div>
NightRadiohttp://www.blogger.com/profile/10600828520726852935noreply@blogger.com0tag:blogger.com,1999:blog-310899983313891624.post-22497506303750331682012-12-03T02:22:00.002-08:002012-12-03T02:24:28.780-08:00Demoscene Evolution<div dir="ltr" style="text-align: left;" trbidi="on">
<iframe allowfullscreen="allowfullscreen" frameborder="0" height="225" src="http://www.youtube.com/embed/E1tHW_1Bh8c" width="400"></iframe></div>
NightRadiohttp://www.blogger.com/profile/10600828520726852935noreply@blogger.com0