Довольно непоследовательно сказано о трекерной музыке, без упоминания Amiga и Paula. А до Sound Blaster был ведь еще популярный модуль Roland MT-32 с LA-синтезом.
«Эпоха специализированных чипов синтеза, пожалуй, давно уже канула в лету». Так вышло, думаю, потому, что современные музыканты не ставят перед собой амбициозных задач из области звукового дизайна. Но у некоторых специалистов аппаратные решения все еще пользуются спросом. Например: kyma.symbolicsound.com/kyma-sound-design-environment/
Но сам подход достаточно древний. Помните Гэрри Килдалла (Gary Kildall)? Большинству он известен, как создатель CP/M, но Килдалл был настоящим компьютерным ученым. В частности, он внес очень серьезный вклад в развитие теории компиляторов. Примером практического воплощения его идей являлся, в частности, транслятор XLT86 (8080 to 8086 Assembly Language Translator): www.s100computers.com/Software%20Folder/Assembler%20Collection/Digital%20Research%20XLT86%20Manual.pdfss
Один момент меня в процессе изучения особенно заинтриговал: «данная приставка имела полноценную операционную систему в ROM, под названием EXEC. Функционировала она по событийной и объектно-ориентированной модели. Игровые объекты — структуры данных из картриджа, получали системные оповещения о перемещении или столкновении с другими объектами». Интересно было бы узнать подробности!
Ага. Только дело не в железе, а в старых (уже) версиях Windows. Для управления 8253 там использовался драйвер режима ядра beeper.sys. Вот он-то все и блокировал :)
Действительно. К тому же, работа Beep блокировала выполнение программы (прямо как на Спектруме в Бейсике!). И я не уверен, помогает ли здесь многопоточность.
Музыка из Lotus III ужасная? Она замечательная! Я настолько привык к версии для PC Speaker, что потом совершенно не мог уже слушать вариант для Amiga :)
Я когда-то к этой задаче подошел значительно проще. Сделал VSTi-плагин, который позволяет управлять реальным PC Speaker. Прямо с помощью winapi-функции Beep (интересно, кстати, а делал ли кто-нибудь 1k-4k intro для Windows с музыкой через функцию Beep?). Помню, кто-то на KVR даже что-то записывал с его помощью :)
Версия по ссылке выше была сделана для конкурса 32k exe music. Музыкант создает композицию в DAW, затем нажимает кнопку «запись» в окне плагина и сохраняет результат в виде дампа регистров чипа. Наконец, с помощью утилиты, создается компактный exe-файл. Пример: sovietov.com/tmp/led1.zip
Было создано несколько версий плагина под разные нужды, но все они так и остались для внутреннего пользования. Сейчас поддерживается только AY/YM-движок, который есть на github (кстати, возможен импорт эффектов afx из замечательного редактора от Shiru) и который, благодаря стараниям Kowalski, был портирован на JS. Несколько лет назад на Hype состоялась дискуссия по поводу быстродействия Ayumi, с тех пор я чуть оптимизировал ресэмплер, но и думать не мог, что в Chrome он будет работать настолько хорошо.
Мне и самому очень нравится идея миниатюрных плагинов с GUI по-умолчанию от DAW. Увы, музыканты нас, разработчиков, в таких начинаниях не очень-то поддерживают. Полноценный редактор с клавиатурным вводом и проч. не так просто реализовать в VSTi. Вот и я довольно быстро устал создавать граф. интерфейс, повторяющий VT2, для Ayumi-плагина. Но неплохое решение, на мой взгляд, здесь существует. Я советую посмотреть в сторону библиотечки JUCE: www.juce.com/ Она хороша тем, что абстрагирует разработчика от конкретных деталей формата плагина и позволяет простыми средствами создавать GUI. Код на JUCE можно перекомпилировать без изменений для Windows (VST), Mac (AU), Linux. Тем не менее, даже с JUCE я бы не стал делать сложный редактор в окне плагина. Сейчас я думаю, что достаточно реализовать несколько контроллеров, кнопку импорта и попросить художника нарисовать соотв. спрайты, а также фон. Редактирование же сэмплов/инструментов оставить Vortex'у.
Маленькая поправка: «Правец» это не польский, а болгарский компьютер. В школе, где я учился, стояли 8-битные «Правцы», клоны Apple II.
Очень хорошо сказано про различные сообщества, связанными с компьютерами. Эти сообщества производили свою, часто уникальную культуру (игры, журналы, демо...) и различия между этими культурами обусловлены далеко не одними только техническими нюансами самих компьютеров.
Я не подозревал, что когда-то у нас и вокруг C64 было определенное движение, спасибо за эту историю!
Классический пример сопроцессора для обработки видео в картридже это SuperFX, специализированный 16-битный RISC-процессор (корни его можно отследить в современной архитектуре ARC). Чип этот разработал, кстати говоря, Ben Cheese, который в свое время трудился и у Синклера.
Готовый ARM это, конечно, не так интересно, как разработка собственной архитектуры. Я бы больше порадовался чему-нибудь специализированному на, например, Xilinx Spartan 6 (LX4 стоит не дороже многих ARM-микроконтроллеров).
lcc предложил использовать я, поэтому прокомментирую. lcc именно как простой перенацеливаемый компилятор очень хорош. Не случайно даже книжка существует с описанием его элегантного внутреннего устройства.
Имеется следующий проект: The Gameboy Development Kit (GBDK) github.com/gheja/gbdk_x
В описании к нему указано:
«The gbz80 is very similar to the Zilog Z80, and from 2.0.16 it has been
possible to target GBDK to a real Z80.»
Тем не менее, сам я этот порт lcc не использовал. Интересно получить отзывы от экспериментаторов!
Отличная статья, спасибо! В более поздних игровых автоматах Atari векторные дисплеи (Quadrascan) ни в чем не уступают растровым собратьям. Посмотрите, какая стильная даже по нынешним временам графика в игре Major Havoc (1983 год!).
К сожалению, многое было вырезано из передачи. Например, про «Шерлока», следующую игру просле «Хоббита». Или про то, как парни из Ultimate решили придержать Knight Lore (она была готова еще чуть ли не в 83 году), чтобы выпустить сначала игру Sabre Wulf. Потому что «рынок еще не был готов»!
Эмулятор «Хоббита» можно скачать тут: members.aon.at/~ehesch1/wl/wl.htm
А вот еще интересное, недавний текст с воспоминаниями об игре от самой Вероники Меглер: web.cecs.pdx.edu/~vmegler/BDCH_2014_Megler_The_Hobbit_v1.1.pdf
Почему же, эти технологии и сейчас востребованы. В начале 80-х аддитивные синтез с ресинтезом широко использовались в таких знаменитых синтезаторах-рабочих станциях как Synclavier и Fairlight CMI.
Развитием «аддитивного» подхода можно считать формантный синтез, который позволяет в считанных параметрах описывать крупные элементы «спектрального ландшафта».
«Эпоха специализированных чипов синтеза, пожалуй, давно уже канула в лету». Так вышло, думаю, потому, что современные музыканты не ставят перед собой амбициозных задач из области звукового дизайна. Но у некоторых специалистов аппаратные решения все еще пользуются спросом. Например: kyma.symbolicsound.com/kyma-sound-design-environment/
Но сам подход достаточно древний. Помните Гэрри Килдалла (Gary Kildall)? Большинству он известен, как создатель CP/M, но Килдалл был настоящим компьютерным ученым. В частности, он внес очень серьезный вклад в развитие теории компиляторов. Примером практического воплощения его идей являлся, в частности, транслятор XLT86 (8080 to 8086 Assembly Language Translator): www.s100computers.com/Software%20Folder/Assembler%20Collection/Digital%20Research%20XLT86%20Manual.pdfss
Я кода-то делал заметку об этом компьютере в игровом контексте: www.old-games.ru/forum/xfa-blog-entry/mattel-intellivision-i-don-daglou.2864/
Один момент меня в процессе изучения особенно заинтриговал: «данная приставка имела полноценную операционную систему в ROM, под названием EXEC. Функционировала она по событийной и объектно-ориентированной модели. Игровые объекты — структуры данных из картриджа, получали системные оповещения о перемещении или столкновении с другими объектами». Интересно было бы узнать подробности!
Я когда-то к этой задаче подошел значительно проще. Сделал VSTi-плагин, который позволяет управлять реальным PC Speaker. Прямо с помощью winapi-функции Beep (интересно, кстати, а делал ли кто-нибудь 1k-4k intro для Windows с музыкой через функцию Beep?). Помню, кто-то на KVR даже что-то записывал с его помощью :)
Нашел, вот, у себя: sovietov.com/app/beeper.dll
Было создано несколько версий плагина под разные нужды, но все они так и остались для внутреннего пользования. Сейчас поддерживается только AY/YM-движок, который есть на github (кстати, возможен импорт эффектов afx из замечательного редактора от Shiru) и который, благодаря стараниям Kowalski, был портирован на JS. Несколько лет назад на Hype состоялась дискуссия по поводу быстродействия Ayumi, с тех пор я чуть оптимизировал ресэмплер, но и думать не мог, что в Chrome он будет работать настолько хорошо.
Мне и самому очень нравится идея миниатюрных плагинов с GUI по-умолчанию от DAW. Увы, музыканты нас, разработчиков, в таких начинаниях не очень-то поддерживают. Полноценный редактор с клавиатурным вводом и проч. не так просто реализовать в VSTi. Вот и я довольно быстро устал создавать граф. интерфейс, повторяющий VT2, для Ayumi-плагина. Но неплохое решение, на мой взгляд, здесь существует. Я советую посмотреть в сторону библиотечки JUCE: www.juce.com/ Она хороша тем, что абстрагирует разработчика от конкретных деталей формата плагина и позволяет простыми средствами создавать GUI. Код на JUCE можно перекомпилировать без изменений для Windows (VST), Mac (AU), Linux. Тем не менее, даже с JUCE я бы не стал делать сложный редактор в окне плагина. Сейчас я думаю, что достаточно реализовать несколько контроллеров, кнопку импорта и попросить художника нарисовать соотв. спрайты, а также фон. Редактирование же сэмплов/инструментов оставить Vortex'у.
Очень хорошо сказано про различные сообщества, связанными с компьютерами. Эти сообщества производили свою, часто уникальную культуру (игры, журналы, демо...) и различия между этими культурами обусловлены далеко не одними только техническими нюансами самих компьютеров.
Я не подозревал, что когда-то у нас и вокруг C64 было определенное движение, спасибо за эту историю!
P.S. Кстати говоря, об отечественном MSX-сообществе я в двух словах писал здесь: www.old-games.ru/forum/xfa-blog-entry/friends-software.3303/
Готовый ARM это, конечно, не так интересно, как разработка собственной архитектуры. Я бы больше порадовался чему-нибудь специализированному на, например, Xilinx Spartan 6 (LX4 стоит не дороже многих ARM-микроконтроллеров).
Имеется следующий проект: The Gameboy Development Kit (GBDK) github.com/gheja/gbdk_x
В описании к нему указано:
«The gbz80 is very similar to the Zilog Z80, and from 2.0.16 it has been
possible to target GBDK to a real Z80.»
Тем не менее, сам я этот порт lcc не использовал. Интересно получить отзывы от экспериментаторов!
www.youtube.com/watch?v=9n6I1KPxOfE
Эмулятор «Хоббита» можно скачать тут: members.aon.at/~ehesch1/wl/wl.htm
А вот еще интересное, недавний текст с воспоминаниями об игре от самой Вероники Меглер: web.cecs.pdx.edu/~vmegler/BDCH_2014_Megler_The_Hobbit_v1.1.pdf
Кстати, если кого-то интересует история TRS-80, смотрите: www.gamasutra.com/view/feature/182224/games_from_the_trash_the_history_.php?print=1
Подробные сведения можно почерпнуть здесь: countercomplex.blogspot.ru/search/label/algorithmic%20music
Хотите попробовать свои силы? Никаких проблем: wurstcaptures.untergrund.net/music/
Придумываете формулу, наслаждаетесь результатом и переводите последний в код для своих демо.
Вот несколько моих старых находок.
1. t>>3|t<<2&t|t+5e3>>4|t-14>>5
2. t&t/170*2+t%31*0.1
3. t>>4|t%45|t>>9
4. t<<1>>1^t*3|t>>5|t>>3
5. t>>10<<t+t*1e-5<<3*t|t>>3
В 90-х увидел свет невероятно мощный аддитивный синтезатор Kawai K5000: www.soundonsound.com/sos/1997_articles/jul97/kawaik5000s.html
Здесь можно его послушать: www.youtube.com/watch?v=lT1yMLdQ6PE
Среди аудио плагинов стоит отметить Camel Audio Cameleon 5000: www.soundonsound.com/sos/apr04/articles/cameleon5000.htm
Из более современных — Harmor от Image Line: www.image-line.com/plugins/Synths/Harmor/
Вот как он звучит: www.youtube.com/watch?v=Af0_00HKA24
Развитием «аддитивного» подхода можно считать формантный синтез, который позволяет в считанных параметрах описывать крупные элементы «спектрального ландшафта».