Дикие идеи для AY трекеров
_________ __
__ ________ ____ __ ___
_ //_ \ |__ __ _______ \ ______
_____ | _____ / _____ _____ // _____ //
._ /_ | ._ /_ ._ /_ ._ /____ ._ |/ /_
| /---| /---| /--| / | / _/_.
|_____/ _______/ ______/ _____/ _______ |
==|____//=jf=\_____/=====|______|===|____//=======\______|=
____ __________
//__ _ _____ //___ pr oo tracc kerr _____ ___
_____\
__ ____ _______ \
//_______
Эпиграф:
Alone Coder>
В журнале/игре нужно редактировать начало
каждого музона для полной инициализации.
Pawel/Real Software>
Как...?
Alone Coder>
Поставить ноту (хотя бы паузу) и орнамент.
Pawel/Real Software>
Hикакой заботы о пользователе.
Alone Coder>
ПРО трекер, однако :)
Mast:
1. Hеобходимо сделать несколько режимов Write Data - в смысле,
чтобы можно было запомнить много последовательностей типа: 1F0F,
AC00, 1F3B и т.д., например, набил в окошке Write Data 1F0F,
потом нажал SS+1 - последовательность 1F0F запомнилась на кнопке
1, короче, чтобы не пудрить себе и вам мозги, объясню попроще:
нужно сделать,чтобы данные Write Data запоминались подобно запо─
минанию адресов в STS (там это повешено на кнопку А) - например,
SS+1,2,3,4,5 - запомнить, CS+1,2,3,4,5 - восстановить.
2. Дополнение к интерфейсу: если режим Write Data включен и
там присутствует огибающая, то по кнопке 'L' удаляется не только
значение ноты, но и огибающей; если во Write data включен сэмпл,
то по 'L' удаляется также и сэмпл; если включен орнамент, также
удаляется и орнамент; если включена громкость, удаляется гром─
кость. Если Write Data выключен,то как обычно - по "L" удаляется
только нота.
3. Ввести дополнительную опцию: Delete mode - если включена,то
по "L" удаляются все значения (ноты, огибающей,орнамента,сэмпла,
громкости), если выключена, то как обычно.
4. Сделать возможным запись во Write data команд (в смысле
глисс, порт и т.д.).
5. Ввести комманду Vibrate (быстрый глисс вверх-вниз).
6. Hе помешало бы, чтобы паттерны, позиции и номера строк для
копирования можно было не только мотать маленькими курсорчиками,
т.е. добавить ещё один режим: подводишь стрелку к цифре, нажима─
ешь fire,- вместо цифры появляется маленький курсор,вводишь своё
значение. Так будет намного быстрее работать с копированием бло─
ков.
7. Сделать накладку шума для каждого канала отдельно (как в
PT2).
8. Транспозиция огибающей.
Иван Рощин:
1. Чтобы можно было устанавливать новое значение периода оги─
бающей без перезаписи R13.
(Alone Coder: автопересчёт последовательности команд установ─
ки огибающей A/E/C/8 в команды 9xxx, Axxx?)
2. Так же, как есть команды для плавного изменения частоты
тона, должны быть аналогичные команды для частоты огибающей,
частоты шума и для громкости. Нужна команда "сделать звучание на
канале громче или тише на заданную величину".
3. В связи с увеличением числа команд, может возникнуть необ─
ходимость установить на одну ноту несколько команд, и это надо
предусмотреть.
4. В Pro Tracker'е можно регулировать глобальную громкость
мелодии, а хотелось бы также регулировать громкость отдельно по
каждому каналу.
5. Чтобы музыкальные анализаторы были, как в BestView ;)
6. Хорошо если бы можно было загрузить в память несколько
мелодий (насколько хватит памяти), и затем переключаться по на─
жатию клавиши от редактирования одной мелодии к другой (напри─
мер, SS+1 - редактируем 1-ю мелодию, нажали SS+2 - редактируем
2-ю и т.п.). Это удобно, когда приходится собирать мелодию из
нескольких отдельно написанных кусков.
7. В Pro Tracker'е есть комбинации клавиш SS+W, SS+E - запоми─
нание канала в буфере/восстановление из буфера. Так же можно
сделать и запоминание/восстановление целых PATTERN, а также
SAMPLE, ORNAMENT. Это будет удобно при редактировании нескольких
одновременно находящихся в памяти мелодий (например,взяли SAMPLE
из одной мелодии в буфер, перешли к другой мелодии, восстановили
из буфера).
Miguel:
1. Хотелось бы видеть работу с блоками (особенно в sample and
ornament editor'ах).
2. Неплохо было бы сделать поиск с заменой.
3. Также неплохо бы было иметь такую опцию, как save loop, то
есть когда надо сохранить не 1 паттерн, а последовательность,
также сохраняя и инструменты. Ну, то есть, как отдельный song.
Можно также сделать и Copy loop (то есть входишь в positions
list, выбираешь loop, нажимаешь SS+E, перемещаешь курсор куда
надо и делаешь SS+R. Отсюда вытекает, что помимо копирования
можно сделать и перенос loop'a. А отсюда вытекает, что это же
можно сделать и в sampleornament editor, а это, в свою очередь,
опять ведёт к необходимости делать работу с блоками, как глоба─
льную необходимость, без которой становится всё трудней и труд─
ней.
4. Надо сделать setup для мышки, чтобы можно было сменить
скорость передвижения курсора (шаг) и реверс кнопок.
(Alone Coder: о нет, только не реверс...)
Jeffie:
1. Если войти в decompiler, то выводятся все файлы, которые
есть на диске. Если потом зайти в disk menu, то лист диска оста─
ётся от decompiler'а. Надо, чтобы листинг диска каждый раз после
входа в disk options перефильтровывался (расширения 'm'), а в
decompiler'e перечитывался - чтобы видеть все файлы.
(Alone Coder: объединить disk menu и decompiler, добавив кно─
пку "все файлы"?)
2. Чтобы можно было печатать название трэка всеми символами, а
то иногда бывает надо '', а его хрен поставишь.
Moran:
1. Более 1 канала запоминания в буфер.
2. Горячую клаву для обнуления счетчиков копирования. (Как в
DIGITAL STUDIO функция HOME.)
3. Запоминание части канала и выгрузка в любой позиции.
4. Горячую клаву для обмена +/- транспозиции.
5. Огибающую в редакторе сэмплов.
6. Какие-нибудь анализаторы, в пустые места.
Alone Coder:
1. PT3 может быть 42-символьным:
63 0100 g c-4 1234.... c-4 1234.... c-4 1234....
12 3456 7 890 12345678 901 23456789 012 34567890
2p 2p 2p 2p 2p 2p 2p 2p
3chr3chr
40*6=240
+2p*8= 16
=256
2. AY с freq не 50Hz, а 100Hz.
3. AY с freq 1kHz - сэмплы практически цифровые, но как их
получить?
4. Использовать хитрость (для турбо не прокатит, точнее, не
совсем попадёт) и делать громкость у тихой огибающей выжиданием
на высокой частоте огибающей.
5. Хранить дорожки для инструментов, которые группируются в
каналы. Дорожки содержат номер сэмплов (для прописывания партий
ударников)! Увеличивается ёмкость каналов из расчёта на одинако─
вое удобство редактирования; плюс в мало похожих паттернах/кана─
лах бывают ой как похожие дорожки для многих инструментов! Плюс
можно видеть весь паттерн; плюс можно редактировать по принципу
драм-машины; плюс затирание каналов друг другом можно выбирать
любое (задавать приоритеты).
6. Обычный трекер, но с оверлейной дорожкой (накладывается на
любой канал по вкусу).
7. Огибающую и её тип класть в сэмпл, инициализацию туда же.
Выигрыш в размере нотного текста.
8. Команда "продолжить играть предпредыдущую ноту" (для эха).
9. Альтернатива: вибрато со старой нотой в "дырках".
10. Хранить мелодию в терминах ступеней аккорда, а аккорды в
терминах ступеней гаммы. (Делать это только в транспозиции?)
11. В сэмпле режим autoenv с любым коэффициентом, с подтяжкой
частоты сэмпла к частоте огибающей с разливом на +(-)0, +(-)1...
по вкусу.
12. Таблицу громкости заменить на простое сложение.
13. Много строк на экране, скроллинг организовавать как в мно─
гозадачных системах: если текущий цикл скроллинга не успел вов─
ремя, то доводим его до конца,а в следующий раз сдвинем уже на 2
строки. Вариант: показывать на экране 32 строки паттерна и запу─
скать цикл перепечатки после перехода на новый паттерн (или на
2-ю половину этого).
14. Параметры ноты (сэмпл,форма вибрато и его глубина,характер
изменения громкости и пр.) группировать в микропрограммы пользо─
вателя (с 1-2 параметрами), чтобы в тексте они не занимали много
места. Для каждой микропрограммы дать возможность указать понят─
ное название,чтобы можно было легко найти её в списке (перебором
цифробукв при нахождении курсора в поле редактирования). Возмож─
ности должны быть широкими - вспоминать предпредыдущий орнамент,
ноту, автоматически подстраиваться под используемую громкость,
плавно менять вибрато, регулировать приоритеты использования
шумов и наложения, подстраивать огибающую под тон и тон под оги─
бающую и т.п. Скорее всего, это проще реализовать через перемен─
ные микропрограмм (область этих переменных должна быть общая для
всех микропрограмм, играющих в канале - но дать и доступ к пере─
менным других каналов?). Операции умножения/деления в языке не
нужны (?), выражения особенно - выражения можно программировать
последовательностью микрокоманд.
15. Команду фазировку тональника, хотя бы без параметра (чтобы
огибающая с тоном была хотя бы наполовину предсказуемой)!!!
;Эта программа (она же AYFIX.H в приложении) демонстрирует,
;сколько разных звуков можно получить на одной и той же
;комбинации tone+env, варьируя фазу тональника
;крутите фазу кнопками O,P!
ORG #6000
;обнуляем все регистры AY
LD DE,#E00
DEC D
CALL OUTAY
JR NZ,$-4
LLL
HALT
LD DE,#7FF
CALL OUTAY ;запрещаем тональник
LD DE,#800
CALL OUTAY ;запрещаем огибающую
;тишина
CALL 8020 ;BREAK
RET NC
;регулируем фазу (см.ниже)
LD HL,WAIT
LD A,#DF
IN A,(-2)
RRA
JR C,$+3
INC (HL)
RRA
JR C,$+3
DEC (HL)
;показываем фазу на экране
LD B,(HL)
LD HL,#5800
LD (HL),255
INC L
DJNZ $-3
JR Z,$+7
LD (HL),0
INC L
JR NZ,$-3
;обнуляем частоту тональника
LD DE,#000
CALL OUTAY
LD DE,#100
CALL OUTAY
;теперь счетчик тональника в фиксированном положении
;флаг тональника в одном из 2 положений: "вкл" или "выкл"
LD HL,#3C*8 ;период тональника
LD D,#0
LD E,L
CALL OUTAY ;устанавливаем (мл.)
LD D,#1
LD E,H
CALL OUTAY ;устанавливаем (ст.)
;делаем задержку для сдвига фазы тональника
WAIT=$+1
LD B,1
WAIT0 LD A,8
DEC A
JR NZ,$-1
DJNZ WAIT0
;теперь тональник в выбранной нами фазе F
;но из-за непредсказуемости флага эта фаза может быть F+180°
LD DE,#7FE
CALL OUTAY ;разрешаем тональник
LD DE,#810
CALL OUTAY ;разрешаем огибающую
LD DE,#B1E
CALL OUTAY ;устанавливаем период огибающей
LD DE,#D0E
CALL OUTAY ;уст.тип огибающей (E)
;теперь огибающая в начальной фазе.
;слушаем...
LD B,3
HALT
DJNZ $-1
JR LLL
OUTAY
LD BC,#FFFD
OUT (C),D
LD B,#BF
OUT (C),E
RET
PT3 todo list:
(всем рекомендую иметь todo листы в своих проектах, при этом
программа развивается даже тогда, когда не развивается: вы
накапливаете идеи и глюки, вписывая их по одному, т.е. сразу,
когда придумаете или заметите, - а потом, засев за код,
реализуете сразу несколько предложений из записанных)
-под Unreal Speccy +Gluk5.5 (не 6.0!), PT, запущенный с диска A:
выбираем диск B (без предварит. инициализации в TR-DOS'е) -
disk error
-не полностью грузились некоторые .F? BASILMUS.F - аж с v3.31!!!
+verify при записи (чтобы не висло и в случае, если диск не
читается!)
*3xxx с переходом через 0 (на первом же шаге) при сохранении
автоматически урезать (Firestarter)
+отключабельный автоповтор при вводе чего угодно
+кнопку для EXCHANGE
+окно файлов побольше
+в ptutil убивать лишние треки/сэмплы/орнаменты
+в ptutil защититься от сбросов после swap chn со смещ. шума в B
+в ptutil прокрутка при проигр-и (и показ процентов)
+в ptutil индикаторы, юзаются ли разные фишки плейера, плюс
по всем смп/орн - макс.юзанная длина, для этого кнопку
сверхбыстрого проигр-я.
+в ptutil ПОКАЗЫВАТЬ,сколько % проиграно!!! И возм-сть прокрутки
+плейер ptutil по Бульбе
+в ptutil перевод сонгов в таблицу ST
+ориентируясь на таблицу ST и частоту 1.77 MHz, переобозвать
ноты на строй ДО
+при загрузке показывать все громкости, сэмплы и орнаменты на
нотах? (неудобно потом будет менять циферку орнамента на целом
паттерне!) (сделать горячки в канале - показать все цифры,
убрать лишние цифры?)
+авторазворачивалку сэмплов (убирание левых ноликов-накоплений)
+не моргать при прокручивании сэмплов по PgUp/PgDn
+показывать ноту в огибающей, если она попала в ноту
+при переключении ed melody on/off не прыгать на нач. паттерна
+при смене длины паттерна не прыгать в его начало
+в плейере frq работать с 3xxx опционально мудро
+при нажатии новой ноты (без отпускания старой) играть новую
-паттерн длиной <5 неверно скроллируется на следующий
РЕШЕНИЕ: при вводе чего-л. перепечатывать весь паттерн
+шум копировать с каналом B
+сэмпл W
/убить стрелку на главном экране
+при нажатии enter просчитывать параметры нот с самого верха
паттерна - правильное звучание
*в редакторе названия сначала устанавливать Caps=off
+сохранение без компиляции, в раскрытом виде
+спецнота - повтор предыдущей ноты (стоящей до той, которую
только что играли) - для эха и чересстрочных треков
+хорошо бы и спецорнамент такой?
+undo одной ноты (U в поле ноты)
+сравнение треков - одинаковые или нет
+кнопки сдвига/раздвига всех каналов одновременно (для смены
растемповки музона)
+копирование всех каналов
+транспонирование громкости
Сборка и экономия памяти:
*если убить сэмпл 0, то в pg4 #1200 (а не #1000) байт свободно
(под окошки? или перепечатывать весь экран после закрытия окна?)
/убить скроллбар в дисковом меню
*ВЕСЬ код (плейер выкинуть) загнать в ниж.память, таблицы в
верх.память
+ROM ver (уже можно 66 секторов)
+рассчитать DIGITS (и короткий синус?)
*в компиляторе считать пустышки после того, как пройдут?
и в конце паттерна?
*m2hrust #1200 байт (для 128k компиляции)
Complex Tracker AY+Covox:
##tF Teee+n n-1aov n-2aov n-3aov|c-1iefv c-2iefv c-3iefv c-4iefv
0123456789012345678901234567890123456789012345678901234567890123
6x6 (диезы узкие)?
##t
e-1Tn
n-1av
n-2av
n-3av
c-1ifv
c-2ifv
c-3ifv
c-4ifv
t - tempo
F - some filter? noiselevel/distortionform/echo?
T - ay env type
eee - ay env frq (нотой?)
+n - ay noise disp
a - ay sample
o - ay ornament(?)
v - volume
s - sample
e - effect type
f - effect parameter
effects:
slide/portamento, offset, ...
instruments:
инструменты делаются на основе сэмпла, на одном сэмпле может
быть несколько инструментов.
(begin),(len),(loop),#sample
begin - linestart point in sample (начинаем играть сэмпл раньше
строчки, на которой его нота! так можно реализовать более
реальную игру на инструментах, у которых перед пиком звука
что-то ещё должно звучать).
график изменения громкости и график изменения точного смещения
частоты (для вибрато).
samples:
флажок: "хранить сэмпл в памяти в интерполированном виде?(Y/N)".
+t-1+%%
^^^^смещение в полутонах (как нота)
defaults: begin, len, loop.
AY samples:
l (T)(f)(+)t-1+%% (N)(h)(+)n (E)(u)(+)ee (+)v
%% - очень точный disp в долях полутона.
l - прозрачность (предыдущая нота ВСЕГДА обсчитывается на фоне
текущей).
f - значение tone (не смещение) - для тихой огибающей и ударника
поверх тона (примерно как в pt3'шном орнаменте "-96").
h - значение noise (не смещение) - для тарелочек на любом
глобальном смещении шума.
u - значение env (не смещение) - для ударника на огибающей и
использования огибающей 0.