Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
134 diamond 1
MIDAMP for Menuet v1.0       July 29, 2005
2
 Written in pure assembler by Ivushkin Andrey aka Willow
3
 
4
Monophonic MIDI player
5
 
6
Vivat assembler et MENUETOS!
7
MenuetOS still has a poor sound capabilities. Drivers are written for a few
8
soundcard models. Till recently I considered MEOS to be as voiceless as an
9
oyster. But then an alternative appeared; dear VaStaNi wrote kernel support of
10
PC speaker. Old good times of Pascal and MS-DOS came to me again. About 5 years
11
ago I wrote a Pascal application that parsed and played a note string in QBasic
12
syntax.
13
 
14
Now MeOS gets the simplest, speaker-driven sound scheme in Mario79's distro,
15
but the first melody in Menuet I heard was from the my program MIDAMP in
16
December, 2004. On technical reasons its release takes place only now.
17
 
18
So, MIDAMP is the simplest single-voiced MIDI player. It cannot do much though
19
it resembles the famous WinAmp. All it can do is to beep MIDI files.
20
There are no equalizer, balance and fader, and they won't appear. Moreover,
21
I may guarantee the correct sound only for files having a single track, one
22
instrument channel and within technological range of notes :-(
23
 
24
#########
25
System requirements:
26
1. Kernel having following function implemented:
27
       55/55 - PC speaker interface (critical!)
28
       67    - window shading;
29
       66/3  - for extended mouse selection in playlist.
30
2. SYSXTREE version not below 52 - opening files and directories (critical!)
31
3. RAM amount for application - about 150 Kbytes.
32
#########
33
 
34
MIDAMP still uses a single playlist - /HD/1/PLAYLIST.TXT by default. Persons
35
interested can change the PLAYLIST_PATH constant value in MIDAMP.ASM. Playlist
36
is a simple text file having filenames to be played in each line. It is NOT
37
RECOMMENDED to edit the playlist by hand - bugs may appear while loading MIDAMP.
38
 
39
When started, MIDAMP creates a new thread whose job is actually playing. Early
40
versions had main thread that processed everything, therefore unpleasant sound
41
delays appeared when managing the playlist. Threads communicate intensively
42
through IPC, although I think it's an excess in such a case. But it works not
43
bad.
44
 
45
MIDAMP is able to shade to window header by pressing the proper button. I tried
46
to perform complete minimization through mcall 18,10 (new feature of Kolibri4),
47
but ran into the problem while restoring of window when PANEL button pressed.
48
That function possibly does not support windows type II ?
49
 
50
Hotkeys - almost like in WinAmp:
51
 
52
Del - delete the selected tracks;
53
z   - previous track;
54
x, Enter, double click - play selected file;
55
c, Space - pause;
56
v   - stop;
57
b   - next track;
58
 
59
Esc - close the program;
60
m   - sound on/off;
61
PgUp, PgDn - swap 2 tracks (not completed!);
62
BackSpace  - rewind track;
63
Home/End - increase/decrease melody notes offset and play track from beginning
64
    (it is shown near 'tone>' text).
65
 
66
In the case of polyphonic MIDI, if an intelligent melody isn't heard, you may
67
try to choose another track 'trk' or instrument channel 'chnl', pressing '[' or
68
']' accordingly and then a number key from '0' to '9'. The file will be played
69
from the beginning. To reset track and channel to the default value, press '\' .
70
 
71
Explaining some interface buttons:
72
Shuffle toggles random playback on/off. Repeat - current track will loop again
73
and again. An icon in the top left corner outputs a brief info about the
74
program to the Debug Board. Clicking the time toggles its view - from beginning
75
or from the end of file.
76
 
77
Mouse click on playlist when holding Shift or Ctrl button works like in WinAmp.
78
 
79
Remarks to bottom buttons:
80
'Add URL' not implemented, on clear reasons;
81
'Add Dir' - specify any file in the directory desired. *.MID and *.KAR files of
82
     that directory will be added to the list;
83
'Misc' submenu is not implemented;
84
'New List' does nothing. MIDAMP still uses a fixed playlist.
85
 
86
One of the following flags may precede a filename in the commandline:
87
 
88
W - to load a file and wait (default);
89
P - to play a file;
90
H - to start shaded and close after playback.
91
 
92
To-Do list:
93
 
94
1.  Increase playlist size (40 items for now).
95
2.  Add dialog to select tracks of polyphonic melodies including analysis on
96
    notes.
97
3.  Reading text in Karaoke files.
98
4.  Playlist select.
99
5.  Note editor, as in Ringtone Editor.
100
6.  Add comments to source.
101
7.  Correct bugs to be found.
102
 
103
Special thanks to:
104
 
105
   VaStaNi - there would be no need of MIDAMP w/o his code
106
   Standard MIDI Files 0.06        March 1, 1988
107
   MIDI 1.0 Specification
108
   General MIDI Level Spec
109
   MIDI SAMPLE DUMP STANDARD
110
   Standard MIDI File Format by Dustin Caldwell
111
   Files format of MIDI
112
   The USENET MIDI Primer by Bob McQueer
113
   Pavlushin Evgeny for his splendid SYSXTREE (DLGS.INC is the opendialog macro
114
       of ASCL library edited to meet MIDAMP specific needs)
115
 
116
Send the wishes and bug reports to wil_low@hotbox.ru or to the meos.sysbin.com
117
forum.
118
 
119
See you later!
120
 
121
 
122
****************************************
123
****************************************
124
 
125
MIDAMP для Menuet v1.0       29 июля 2005 г.
126
 Написана на чистом ассемблере Ивушкиным Андреем (Willow)
127
 
128
Монофонический MIDI-плеер
129
 
130
Vivat assembler et MENUETOS!
131
Со звуком в MenuetOS туго до сих пор. Драйвера написаны для ограниченного круга
132
звуковых карт. До недавнего времени MeOS была для меня нема, как рыба. Но потом
133
появилась альтернатива - уважаемый VaStaNi написал поддержку PC спикера. Мне
134
сразу вспомнились старые добрые времена Паскаля и MS-DOS. Лет 5 назад написал
135
на Паскале программку, которая парсила, а потом воспроизводила строку нот в
136
синтаксисе QBasic.
137
 
138
Сейчас MeOS в дистрибутиве Mario79 обретает простейшую звуковую схему с помощью
139
спикера, но первую мелодию в Menuet я услышал все-таки от своей программы -
140
MIDAMP в декабре 2004 года. По техническим причинам ее релиз происходит только
141
сейчас.
142
 
143
Итак, MIDAMP - простейший одноголосый MIDI-проигрыватель. Он не претендует на
144
многое, хоть и похож на WinAmp. Все, что он умеет, это пиликать MIDI-файлы.
145
Эквалайзера, баланса и регулятора громкости нет и не предвидится. Более того,
146
корректное звучание могу гарантировать лишь для файлов с 1 треком, 1 каналом
147
инструмента и в пределах технологического диапазона нот :-(
148
 
149
#########
150
Системные требования:
151
1. Ядро с реализацией следующих системных функций:
152
       55/55 - интерфейс PC спикера (необходимо!);
153
       67    - сворачивание окна в заголовок;
154
       66/3  - для режимов выделения треков мышью.
155
2. SYSXTREE версии не ниже 52 - открытие файлов и каталогов (необходимо!)
156
3. Объем памяти для программы - около 150 Кб.
157
#########
158
 
159
Пока что MIDAMP использует единственный плейлист - по умолчанию
160
/HD/1/PLAYLIST.TXT. Желающие могут изменить значение константы PLAYLIST_PATH в
161
файле MIDAMP.ASM. Плейлист - обычный текстовый файл, в каждой строке которого
162
находится имя файла для воспроизведения. Его НЕ РЕКОМЕНДУЕТСЯ править вручную -
163
возможны баги при последующей загрузке его приложением.
164
 
165
При запуске MIDAMP создает новый поток, задачей которого является собственно
166
озвучка. В ранних версиях все делал главный поток, поэтому возникали неприятные
167
задержки в звучании во время управления плейлистом. Потоки интенсивно общаются
168
между собой через IPC, хотя я склоняюсь к тому, что в данном случае это
169
излишество. Но работает неплохо.
170
 
171
MIDAMP умеет сворачиваться в строку заголовка нажатием соответствующей кнопки.
172
Я пытался сделать полное сворачивание через mcall 18,10 (новая фича Kolibri4),
173
но столкнулся с проблемой восстановления окна нажатием кнопки PANEL. Возможно,
174
функция не поддерживает окна типа II ?
175
 
176
Горячие клавиши - почти как в WinAmp:
177
 
178
Del - удалить выделенные треки;
179
z   - предыдущий трек;
180
x, Enter, двойной щелчок на файле - воспроизведение;
181
c, Space - пауза;
182
v   - стоп;
183
b   - следующий трек;
184
 
185
Esc - закрыть программу;
186
m   - включить/выключить звук;
187
PgUp, PgDn - поменять местами 2 соседних трека (не закончено!);
188
BackSpace - перемотка трека в начало;
189
Home/End - увеличить/уменьшить тональность мелодии и проиграть ее с начала
190
    (отображается рядом с надписью 'tone>').
191
 
192
В случае полифонических MIDI, если осмысленной мелодии не получается, можно
193
попробовать выбрать другой трек 'trk' или канал инструмента 'chnl', нажав
194
соответственно '[' или ']' и затем клавишу с номером от 0 до 9. Файл будет
195
воспроизведен с самого начала. Сброс дорожки и канала в значение по умолчанию -
196
нажатием '\' .
197
 
198
Назначение некоторых кнопок интерфейса:
199
Shuffle - случайный порядок проигрывания треков. Repeat  - текущий трек будет
200
проигрываться снова и снова. Значок в левом верхнем углу выводит краткую
201
информацию о программе на доску отладки. Щелчок на временной метке меняет
202
способ ее отображения - с начала или с конца файла.
203
 
204
Щелчок мышью на плейлисте с нажатым Shift или Ctrl работает аналогично WinAmp.
205
 
206
Замечания относительно кнопок внизу:
207
'Add URL' не реализовано по понятным причинам;
208
'Add Dir' - укажите любой файл в желаемом каталоге. Файлы *.MID и *.KAR этого
209
     каталога будут добавлены в список;
210
'Misc' подменю не реализовано;
211
'New List' ничего не делает. Пока используется фиксированный плейлист.
212
 
213
В командной строке перед именем файла для воспроизведения может стоять один из
214
флагов:
215
 
216
W - просто загрузить файл (по умолчанию);
217
P - воспроизвести файл;
218
H - стартовать свернутым в заголовок, закрыться после воспроизведения.
219
 
220
Что еще нужно сделать:
221
 
222
1.  Увеличить размеры плейлиста (сейчас 40 позиций).
223
2.  Добавить диалог выбора треков полифонических мелодий с их анализом по
224
    наличию нот.
225
3.  Чтение текста в караоке-файлах.
226
4.  Выбор плейлиста.
227
5.  Нотный редактор, как в Ringtone Editor.
228
6.  Откомментировать код (как всегда, лень).
229
7.  Исправить баги, которые, несомненно, найдутся ;-)
230
 
231
Особые благодарности:
232
 
233
   VaStaNi - без его кода написание MIDAMP не имело бы смысла
234
   Standard MIDI Files 0.06        March 1, 1988
235
   MIDI 1.0 Specification
236
   General MIDI Level Spec
237
   MIDI SAMPLE DUMP STANDARD
238
   Standard MIDI File Format by Dustin Caldwell
239
   Формат файлов MIDI
240
   The USENET MIDI Primer by Bob McQueer
241
   Павлюшину Евгению за непревзойденный SYSXTREE (DLGS.INC - переработанный с
242
      учетом специфики MIDAMP'a макрос opendialog библиотеки ASCL)
243
 
244
Пожелания и сообщения об ошибках направляйте на wil_low@hotbox.ru или на форум
245
meos.sysbin.com.
246
 
247
До новых встреч!