1tracker v0.25

1tracker, экспериментальный кроссплатформенный мультитрекер, уже несколько лет играющий роль подпольного конкурента давно не обновляющейся Beepola, докатился до версии 0.25.

Редактор понемногу разворачивается к пользователю лицом. Произведён переход на SDL2, что улучшает пользовательские характеристики и снимает некоторые проблемы совместимости. Спорная концепция одного большого паттерна без ордер-листа, разработка которой является одним из краеугольных камней проекта, дополнилась рядом возможностей, приближающих интерфейс к классическому с ордер-листом, но только без ордер-листа, но почти как с ним. Добавлено множество шрифтов и цветовых тем в стиле классических домашних компьютеров, чтобы покрыть разнообразие разрешений экрана и хоть немного скрасить примитивность интерфейса.

Постепенно расширяется поддержка старых и новых движков, не охваченных другими редакторами. Так, в новой версии добавлено высшее на текущий момент достижение однобитной мысли — движок Pytha, умудряющийся выжать из бипера два равноценных канала с треугольной, пилообразной или прямоугольной, с переменной скважностью и модуляцией, формой сигнала, а также белый шум и ударные (услышать тут).

Помимо этого, доступны такие обделённые вниманием музыкантов движки, как:

— BuzzKick, аналог SpecialFX с сэмплами на ударных
— из игры Earth Shaker
— трёхканальный Тима Фоллина из игры Vectron
— движок Lyndon Sharp из Mig-29 и других игр
— ntropic
— Octode XL
— Phaser 2 и 3
— POWW
— prdr
— Stocker
— tBeepr
— ZX-10

Это прекрасный шанс проявить себя в музыкальном компо на грядущем DiHalt 2017, сразив публику наповал новым экзотическим звучанием старого бипера!

Скачать и начать.

Краткое руководство по выживанию в условиях отсутствия ордер-листа. На замену ему предлагается концепция блоков. Можно отмечать границы блоков произвольной длины, нажимая Space на любой строке. Удобно использовать классические 16, 32 или 64 строк. Список блоков виден в правой части экрана, также можно присвоить текущему блоку имя по Ctrl+F. Операции выделения, такие как Ctrl+A и Ctrl+L, сначала применяются к текущему блоку, потом к треку целиком. Между блоками доступен быстрый переход по Ctrl+PageUp/Down. Чтобы скроллинг и соседние блоки не мешали сосредоточиться, доступен режим ограниченной видимости, включаемый и выключаемый по Ctrl+F1.

31 комментарий

avatar
Концепция нравится. Похоже чем-то на пиано-ролл по сути.
  • VBI
  • 0
avatar
Очень круто, когда софты не просто появляются, но и поддерживаются.
avatar
«Без поддержки MIDI это не софт» ©
avatar
Я делал поддержку MIDI во всех других моих редакторах. Хорошо, если ей пользовались 2-3 человека. До сих пор ума не приложу, кому и зачем она вообще понадобилась в трекерах, где нет полифонии в пределах канала записи, но есть жёсткий квантайз или ручное перемещение позиции записи, и необходимость постоянно вводить числовые значения (дёргаться от клавиатуры к клавиатуре).
avatar
Демка хорошая, напомнило SID
avatar
Отдельное спасибо за экспорт в AY-контейнер. По сути, это стандарт де-факто для проигрывания биперов внешними плейерами, поэтому он очень необходим.
avatar
Нажал F8 Export и с удивлением не нашел WAV или MP3.
avatar
Редактор биперной музыки и прочего чиптюна, сделанный, чтобы было в чём писать для последующего использования на реале. MIDI, WAV, MP3. Как же я люблю комментарии.
avatar
Голосование на пати проходит обычно онлайн. А для прослушивания онлайн надо где-то взять mp3/wav/ogg. Так почему бы не дать возможность автору экспортировать свой трек в виде годном для закачки в голосовалку?
Минимизируя возможные косяки, которые непременно возникают когда треки экспортят орги.
avatar
Это экспериментальный проект, за пять лет существования набравший активную пользовательскую базу примерно в полтора человека. Главная его цель, помимо обкатки концептуальных фич для других проектов — возможность быстрого обеспечения любых (от ZX до SNES) музыкальных движков 'хоть каким-нибудь' редактором, силами авторов движков (просто пишется скрипт). Вот он и есть 'хоть какой-нибудь'. Не ждите от него многого. Но это немного лучше, чем голый ассемблер или конвертор из XM.

Формат мультитрекера позволяет писать разные фронтенды с любыми наворотами. Мой предельно минималистичен, в нём нет даже поддержки мыши, не говоря о второстепенных фичах. Экспорт в WAV возможно будет, пока в далёких планах. Одна из причин в том, что в редакторе вообще нет кода экспорта, он делается чисто скриптами движков, форматы экспорта каждого движка могут быть произвольными. А экспорт в WAV надо уже делать на стороне фронтенда.
avatar
Magic Tokens кстати после экспорта в AY не играет ни в Bulba плеере, не в zxtune.
avatar
Спасибо за репорт, буду разбираться. Сам редактор играет точно тот же самый экспортируемый AY-файл встроенным сторонним AY-плеером, но у формата много косяков, плохая совместимость между плеерами.
avatar
Под MacOS есть сборка?
avatar
Нет, пока только Win и Linux. Теоретически должно собираться под MacOS, но никто не пробовал.
avatar
Обновил до v0.26. Главное улучшение — значительно ускорен скриптовый ассемблер Z80 (он написан на AngelScript и очень примитивен). Также исправлены некоторые проблемы, включая упомянутый выше экспорт некоторых движков в AY.
avatar
Вдогонку. Внезапно обнаружилось, что у Lyndon Sharp'а была ещё одна версия движка, почти как в Mig-29, но другой код и ударные сэмплами. Похоже, что она использовалась только в игре Bubble Dizzy. Добавил поддержку, без изменения номера версии редактора.
avatar
Спасибо за трекер! Если бы я был музыкантом, я бы мог, конечно, применить его по назначению, но даже просто как кодеру бипера, это реально очень круто — иметь трекер с такой гибкостью адаптации к новым движкам.
avatar
Пользуясь моментом, спрошу.
А чья двухголосая процедура в Dizzy1, Trantor, Hyper Active, Batman, и многих других игрухах? Где/как отыскать следы ее авторства и историю?
В свое время, году в 91-92м я ее изучал, она очень часто встречается.
avatar
Есть две разных процедуры с очень похожим по коду циклом генерации звука, и собственно звуком. Наиболее явно они отличаются звучанием ударных.

Одна скорее всего впервые появилась в первом Dizzy, 1987 год. Кто её написал — непонятно. Среди авторов, помимо братьев Оливеров, фигурирует Jon Paul Eldridge — может быть он. Далее она регулярно встречается в играх Code Masters, и автор музыки там практически всегда David Whittaker. Возможно, процедура всё же его (и музыка в первом Dizzy), так как известно, что он писал свои плееры. Он на контакт не идёт. Может быть, можно узнать что-то у братьев Оливеров, но они тоже не очень открыты для общения.

Вторую написал Jonathan 'Joffa' Smith. Впервые замечена в 1988 году. Она называется Fuzz Click, но в биперных кругах её часто называют Special FX Engine, так как оригинальное имя долгое время было неизвестно, и она регулярно применялась в играх Special FX, с музыкой Keith Tinman'а (известно, что он писал её вручную в виде текста, но сам программировать не умел). В 1990 её выдернули чехи и сделали редактор Orfeus Music Assembler, там минимальные отличия в наборе ударных. В 2010 версия процедуры из Fire Fly стала первым движком в Beepola. К сожалению, Jonathan умер тогда же, в 2010, и мы не узнали у него, почему такое сходство. Но он говорил на форуме WoS (сообщения утеряны при обновлении форума), что написал движок сам, и не возражал против его использования.

Обе процедуры довольно похожи по устройству на движки Tim Follin'а. Возможно, уши растут оттуда. А может, Jonathan подсмотрел код в Dizzy и сделал аналог по мотивам. А может, в порядке безумной теории, был какой-нибудь древний компьютерный журнал, где рассматривался подобный способ генерации звука, например для Apple II — ведь там тоже был только бипер, и были многоканальные движки, а платформа заметно более старая.

Ещё надо добавить, что у Jonathan'а до Fuzz Click был одноканальный движок Plip Plop, похожий на одноканальный движок Follin'а. Его использовали в куче игр Ocean, а потом, судя по всему, взяли и доработали испанцы из Topo Soft. Испанцы же часто использовали доработанный движок Wham The Music Box. Так что версия с подглядыванием-заимствованием наиболее вероятна, это было в порядке вещей.
avatar
Shiru, ну как же, ты не можешь не знать что первый (одноголосный) движок Смита — из Пинг Понга (май 1986) — вызвал в своё время фурор, т.к. был первым движком с нетривиальным звуком ударных. Думаю, многие не понимали, что ударные прерывающие, так что речь шла о как бы двух каналах — ударных и соло. Идея контролировать биперный движок через прерывания — явно из Plip Plop (её нет ни в Wham, ни у Фоллина), т.е. Joffa наверняка писал свой код до двухканального движка (они называли это driver) Whittacker'а, который использован в Dizzy (1987 год).

Движки Follin'а мне, кстати, похожими не кажутся, т.к. Фоллин контролирует ширину иголок, а движки Смита/Уиттекера — честно меняют скважность. Если бы я должен был провести линии заимствования, я бы предположил что-то типа:

Plip Plop -> Dizzy / Special FX / Dark Fusion -> 4chan etc
Wham -> Savage -> Tritone
Follin -> ZX7 -> Octode

Когда я писал свой первый движок, я в основном опирался на движок из Wham, и внедрил в него нечто похожее на движок из Dizzy (движок Смита мне всегда казался переусложнённым, я не люблю его код и по сей день). Т.е. ветки, конечно, могут и пересекаться.
avatar
Однако, нигде не читал про фурор по Plip Plop. Зато он когда-то вызвал фурор среди меня, впечатлил звук и пщщщщ в конце. Нам надо бы систематизировать всю эту информацию по возможной генеалогии движок и где-то записать.

Про линии заимствования касательно моих движков — а вот мимо. Я всегда очень не любил ковырять чужой код, не из принципа, а просто не хватало ума. Только в последнее время осилил до конца разбирать небольшие чужие процедуры типа движков Lyndon Sharp'а. Когда писал свои, вообще не подсматривал в код, но иногда смотрел на форму сигналов в аудиоредакторе и думал, как можно было бы получить что-то похожее. QChan был оригинальной идеей (изначально она в Stocker), т.к. я на тот момент в упор не понимал объяснений AlCo про движок Фоллина и Beep Tracker, но понимал идею ШИМ, до которой додумался сам в конце 90-х (в поделках тех лет у меня была 'громкость' в биперных эффектах). В Tritone чередование из Phaser, а в Phaser, пожалуй да, из Wham, но контроль скважности пришёл в голову самостоятельно, уже не помню, как. В Octode идея тоже возникла спонтанно, в процессе экспериментов, так как я тогда не понимал идею с буфером в ZX-7 и попробовал сделать более тупо. Ну и до биперных движков я написал несколько эмуляторов разных звуковых чипов, пару MOD-плееров, софтовый MIDI-синт с сэмплами и всякое подобное. То есть подходил к теме с несколько другой стороны.
avatar
Ха, так даже ещё интереснее, потому что получается, тебе пришлось переоткрыть самостоятельно почти все магистральные направления в биперных движках 1980-х. Я прочёл больше кода из-за того, что в какой-то момент делал сборник своей любимой биперной музыки и мне пришлось разобраться в структуре движков, в основном для выдирания.

Скважность у тебя в Tritone я и так знал что оригинальная (хотя Savage содержит очень похожие идеи) — слишком ни на что не похож движок. Про ZX7 я наврал; я имел в виду конечно ZX10, просто нумерация у Дика безумная. Когда я выравнивал Octode, мне очень нужно было ускорить обработку каналов и я написал с десяток вариантов обновления 8-битных счётчиков. Представь себе моё удивление, когда я уже потом прочёл код ZX10 и понял, что он делает там совершенно то же самое, что оказалось в итоге сделано в Octode XL.
avatar
Я чуть попозже спрошу у Оливеров, кто что делал в каждой части. Если об этом в книге ничего не будет.
avatar
Спасибо тебе за информацию, это было очень полезно. Кстати… у меня какое-то дежавю… я ведь что-то спрашивал, и твой ответ был примерно таким же, масса подробной информации...
Если ты помнишь код этой процедуры, там есть «командочки» и лист составлен из «паттернов».
И вообще, код процедуры очень линейно простой, в нем нельзя не разобраться.
Тогда я не видел еще ни одного трекера, и думал что это просто такая система сжатия.
Вопросом я этим задаюсь потому что постоянно обдумываю, как оно всё было, не хватает информации по типу книги о R-Type. Меня интересуют, в основном, два вопроса. Во-первых, откуда тогда добывали информацию по программированию графики, хотя бы тех же спрайтов, а во-вторых, меня не покидает ощущение, что для упомянутой мной музыки был (хотя бы внутристудийный) какой-то редактор… Ну и конечно же, в историческом разрезе интересует на чем все тогда рисовали графику, писали код и чем отлаживались.
avatar
Райдер извини за оффтоп, но
Откуда даВинчи добывал инфу о строительстве мостов, и какой был редактор у Баха?
avatar
А это ты узнаешь, когда услышишь хлопок одной ладони…
avatar
Bridgebuilding for Da Vincies, издание второе переработанное
Bach Sound Master 2.1 by Golden Scroll
avatar
До ZX Spectrum были другие домашние компьютеры, причём даже с аппаратными спрайтами. А до них были другие штуковины, показывающие графику, от понгов до аркадных машин, и всякие радиолюбительские и компьютерные журналы, где всё это обсуждалось. Так что у первых программистов на ZX перед глазами был вполне устоявшийся пример, как это должно быть в принципе. Оставалось только повторить хоть как-нибудь, а потом постепенно улучшать. Даже в рамках платформы, прямо в ПЗУ уже был пример вывода знакоместных спрайтов — было от чего отталкиваться.

Касательно редактора. Я не знаю насчёт этого движка в варианте 'от Code Masters' (про Special FX явно говорилось, что редактора не было). Whittaker пришёл с C64, и рано сел на Amiga, а трекеры первым делом появились там, так что в принципе мог сделать свой редактор. С другой стороны, пишут, что он любил копипастить свою музыку, и причина — что писал вручную в коде. Возможно, его подход менялся со временем.

Но вообще, по разным платформам, большинство игровых музыкантов до расцвета трекеров, да и после него, писали вручную. Ближе к началу 90-х некоторые конвертили MIDI или трекерную музыку с Amiga, и очень немногие делали свои редакторы. Навскидку помню только один пример — Alberto Gonzalez сделал себе личный трекер на ZX, и писал на нём под разные платформы, в том числе NES и GB/GBA, но с ручной доработкой. Вообще, сама концепция музыкального редактора, где что-то можно набирать-рисовать визуально, а не записывать живую игру, в 80-е была нетривиальна, люди просто не думали, что это нужно. Большинство MIDI-секвенсоров того времени только записывали ноты, не показывая ничего на экране. А японцы, похоже, не осиливали концепцию редакторов до середины 90-х, писали всё на MML или в коде, и только на PS1 начали использовать MIDI. Трекеры же у них почти не взлетели, до сих пор не в ходу. Но у них было разделение труда, музыку часто сочиняли люди с музыкальным образованием, но не программисты, а писали плееры и набирали код программисты, но не музыканты. В Европе же типично были универсалы 'программист-музыкант'.

Информация о том, кто как чего делал, есть в старых журналах, новых интервью и мемуарах. Например, если не для ZX — www.nesworld.com/content.php?data=interviews, dutycyclegenerator.com/. В целом, до середины 80-х типичной была разработка на бумаге, в том числе рисование спрайтов и экранов на листах в клеточку. Так делались даже Super Mario Bros и Legend of Zelda. А уже в середине 80-х общим трендом среди профи, в том числе на ZX, стало использование для разработки других, более удобных и мощных компьютеров. Хотя бы даже Amstrad CPC, или часто упоминаемый Tatung Einstein (хорошая клавиатура, CP/M-совместимая система и дисководы). Для графики часто использовали Atari ST и Amiga, с местными редакторами. И как только PC поднялся с 8086-ых колен, основной платформой для разработки стал он.
avatar
У тебя получилась прямо вводная мини-статья. Благодарю, но к сожалению, большая часть написанного тобой мне уже известна. Меня интересуют, все же, детали…
До ZX Spectrum были другие домашние компьютеры, причём даже с аппаратными спрайтами. А до них были другие штуковины, показывающие графику, от понгов до аркадных машин, и всякие радиолюбительские и компьютерные журналы, где всё это обсуждалось.
А вот какие конкретно журналы — на WOS их немало.
Так что у первых программистов на ZX перед глазами был вполне устоявшийся пример
Мне интересна информация, например, истории конкретных техник быстрого вывода спрайта. Вопрос возникает в связи с тем что не так-то просто додуматься «с наскока», не зная основных принципов, скажем, использования стека. (Тут вряд ли кто-то догадывается, сколько времени я убил изучая как сделаны наиболее качественные игрушки). Я пролистал журналы «Sinclair User» или «Your Sinclair», но особо ничего такого там не нашел. Есть, конечно, шанс, что люди просто дизассемблировали игрушки (как это делал я) постепенно улучшая свое мастерство, либо куски кода передавались «вербально», как в той же Activision, но так или иначе, конкретика пока что все еще неизвестна. Я списывался в начале 2000х с некоторыми из программистов, но честно говоря, общение шло очень туго, ничего особо я не выяснил. Все это интересно еще и потому что нам-то куча игр доставалась совершенно бесплатно, но в Англии или Ирландии они, вообще говоря, стоили денег.
Касательно редактора. Я не знаю насчёт этого движка в варианте 'от Code Masters' (про Special FX явно говорилось, что редактора не было). Whittaker пришёл с C64, и рано сел на Amiga, а трекеры первым делом появились там, так что в принципе мог сделать свой редактор.
Да понятно, вопросом я задаюсь исключительно потому, что эта Whittaker-процедура довольно-таки «стандартна». Есть небольшие вариации процедурок ударных, но генератор, коды команд, и интерпретатор паттернов везде без изменений. Я не считал, но мне кажется, игр с ней штук ~20-30, если не больше. К тому же, в некоторых играх встречаются неиспользованные музычки (короткие музыкальные проигрыши — услышать их можно ставя передавая в инициализацию код отличный от нуля, первой командой типично идет ноль — #3E #00). Отсюда, логично предположить что был какой-то «кит» для написания музыки. Я видел и игрался с твоим «трекером» на SDL, но скорее всего ты представляешь себе редактор слишком серьезно. Но на самом деле он может представлять собой краткую инструкцию на экране «1 — PLAY. 2. CH1 3. CH2 4. DEL NOTE» и реагировать на нажатие кнопок, мэппя их как piano roll, и инкрементируя нотную позицию. В момент набора на такой простейшей «пианоле» ты слышишь ноты, и в целом неплохо наигрываешь мелодию. Для того чтобы услышать как будет играться набранное, нажимаешь «PLAY». Сия очень примитивная на первый взгляд «пианолька» во-первых быстро пишется, во-вторых очень и очень неплохо справляется со своей задачей, и запросто может оказаться, что нечто подобное там и было. По крайней мере, мы таких примитивных редакторов в свое время наклепали несколько — для North-Star подобных «пищалок» и для своих самодельных процедур. (Я тогда столь серьезно этим увлекался что спаял частотомер чтобы настраивать свои нотные таблицы.)
Anyway, thanx.
avatar
Такой глубокой конкретики у меня нет. Едва ли кто-то додумывался с наскока до крутых процедур. Факт, что ковыряние кода было обычной практикой. Даже на приставках, там в коде встречаются сообщения для ковырятелей.

Я думаю, в журналах типа archive.org/details/micromagazine было что-то такое. Сам его ещё не копал.

Шаговые секвенсоры на ZX были в довольно большом количестве в 1985-86 годах, но никакой информации о применении их для игр нет, а сами они MIA. Музыканты тех лет обычно говорят — наигрывал на дешёвом синте, потом набирал в коде.
avatar
Едва ли кто-то додумывался с наскока до крутых процедур. Факт, что ковыряние кода было обычной практикой. Даже на приставках, там в коде встречаются сообщения для ковырятелей.
Да, я тоже по-умолчанию склоняюсь к тому, что дизассемблировали код, и таким образом учились. Наверняка же были какие-то игры, произведшие впечатление. Сбрасывали magic button и потом изучали, видимо, путь был таков.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.