Inferno #07
31 мая 2005
  Музыка  

Звук - Дикие идеи для AY трекеров.

  Дикие идеи для 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.



Другие статьи номера:

Классика - Альманашник. А. С. Пушкин.

For Coderz - Распознавание и вычисление арифметических выражений по их символьной записи.

Inferno - Авторы журнала.

For Coderz - О дисциплине при создании больших проектов.

Интервью - Вопросы Константину Свиридову (Conan) о сайте zxnext.narod.ru.

Ликбез - Принципы конвертирования графики PC-ZX.

For Coderz - Программирование смены диска/дисковода на Скорпионе.

Sofтинка - DNA_OS v0.431 - пакет утилит для работы с винчестерами, RAM-дисками и дискетами.

For Coderz - Программирование под DNA_OS ZET-9, пакет утилит для работы с устройствами хранения данных.

Sofтинка - Проблемы и недоработки пакета утилит для работы с устройствами хранения данных DNA_OS.

Ликбез - Подробно о дисковых форматах, имеющих FAT.

Inferno - Вступление от редактора.

Inferno - Ошибки в предыдущих номерах.

For Coderz - Маленькие программерские хитрости.

Gameland - О новых играх: Oneyroid, Dizzy forever, Dridlock.

For Coderz - Пишем архиватор. Практические принципы LZ упаковки.

Gameland - Прохождение новых отгрузок для игры "Чёрный Ворон".

For Coderz - Программирование для видеорежима 384x304.

Inferno - Письма в редакцию.

Звук - Идеи Megus'а по поводу трекера для AY/YM.

Inferno - Об оболочке.

For Coderz - Основы оптимизации под процессор Z80.

Ликбез - Расположение разделов на винчестере.

Gamedev - 3D проецирование пола/трассы в играх.

Звук - Дикие идеи для AY трекеров.

Реклама - Реклама от Романа Чунина.

Реклама - Реклама от В. Богдановича

For Coderz - Как делается крупная перемещаемая программа.

Ремонт - Неисправности Pentagon 128+ и их ремонт.

Inferno - Содержание номера.

Разное - Мысли о конкурсе на лучший софт.

Others - Перенос программного обеспечения на ZX Spectrum с PC.

Видео - Об упаковке видео для ZX Spectrum.


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Реклама - Реклама и объявления.
Игрушки - прохождение La abadia del crimen.
Некролог - Мы рады приветствовать вас во втором номере нашей параненормальненькой такой газетки Psychoz!

В этот день...   17 июля