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 | До новых встреч! |