Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как проиграть MIDI ?


Страницы:   1 2

MIDI ©   (2005-12-29 01:56:00) 

Нужен простой способ, без коммерческих библиотек типа BASS или MOD.

Проигрывать нужно ИЗ ПОТОКА, а не из файла на диске. Что лучше использовать ?


  (2006-01-24 03:29:00) [1]

Удалено модератором


Кто то против?   (2006-01-18 02:31:00) [2]

PlaySound и sndPlaySound не проигрывают midi.


  (2006-01-17 07:32:00) [3]

Удалено модератором


  (2006-01-16 04:16:00) [4]

Удалено модератором


  (2006-01-14 01:56:00) [5]

Удалено модератором


  (2006-01-13 03:24:00) [6]

Удалено модератором


palva   (2006-01-10 00:31:00) [7]

Поместить на форму WebBrowser и выполнить оператор
WebBrowser1.Navigate('about:<bgsound loop="0" src="c:\1000001.mid">');
Невидимым браузер сделать не удалось. Можно уменьшить его размеры и заслонить какой-нибудь кнопкой.
Не знаю, что будет затратнее по ресурсам плейер или браузер.


Cash   (2006-01-04 13:07:00) [8]

Вон, на закладке System есть компонент TMediaPlayer.
По сути это медиа плеер винды. Проигрывай через него.
Не кроссплатформенную штуковину же ты делаешь!
А TMediaPlayer умеет все то, что умеет сам Windows Media Player.
(OLE всетаки)


GuAV   (2005-12-31 12:10:00) [9]


> А теперь главное, как досрочно остановить
> проигрываемый звук ?

Во первых, PlaySound заместо sndPlaySound.
Во вторых, SND_ASYNC заместо SND_SYNC, чтобы получить управление до конца воспроизведения.
Тогда остановка - флаг SND_PURGE.


Don Nikola   (2005-12-31 06:47:00) [10]

2Midi:

Могу скинуть мои потуги с DMusic.
Если без DX, то смотри три варианта выше. Стандартно по-моему нельзя или не во всех виндах. Если вдруг захочешь писать свой плеер, то смотри в сторону функций начинающихся с midiOut.

2all: с Новым Годом


Midi   (2005-12-31 01:33:00) [11]

> Don Nikola   (30.12.05 10:09) [15]
>
> 2MIDI:
>
> Что-то я совсем склерозом заболел ;)) Проще всего использовать DirectMusic


Он у меня не проигрывает Midi. Почему - не знаю. В общем надо без него.

Приведённый выше код запустить так и не удалось. Если кто знает как - дайте пример.


Don Nikola   (2005-12-30 10:09:00) [12]

2MIDI:

Что-то я совсем склерозом заболел ;)) Проще всего использовать DirectMusic - точно играет миди из памяти, сам писал такую библиотечку. Играет wav и midi. Есть начиная с DX8 кажеться.


Midi   (2005-12-30 06:29:00) [13]

Нашёл пример ( надеюсь правильный, так как ещё не пробовал ) :

procedure TForm1.PlaySndFromMemoryClick(Sender: TObject);
var
 f: file;
 p: pointer;
 fs: integer;
begin
 AssignFile(f, 'hello.mid');
 Reset(f, 1);
 fs := FileSize(f);
 GetMem(p, fs);
 BlockRead(f, p^, fs);
 CloseFile(f);
 sndPlaySound(p, SND_MEMORY or SND_SYNC);
 FreeMem(p, fs);
end;


А теперь главное, как досрочно остановить проигрываемый звук ?


Midi   (2005-12-30 06:29:00) [14]

Нашёл пример ( надеюсь правильный, так как ещё не пробовал ) :

procedure TForm1.PlaySndFromMemoryClick(Sender: TObject);
var
 f: file;
 p: pointer;
 fs: integer;
begin
 AssignFile(f, 'hello.mid');
 Reset(f, 1);
 fs := FileSize(f);
 GetMem(p, fs);
 BlockRead(f, p^, fs);
 CloseFile(f);
 sndPlaySound(p, SND_MEMORY or SND_SYNC);
 FreeMem(p, fs);
end;


А теперь главное, как досрочно остановить проигрываемый звук ?


MIDI   (2005-12-30 06:14:00) [15]

miek ©   (29.12.05 10:14) [8]

Если поток - MemoryStream, т.е. можно взять указатель на начало звука, то пользуй PlaySound...


Да MemoryStream. А как ? Можно пример с PlaySound ?

> Don Nikola   (29.12.05 18:00) [11]
> или проигрывать через fmod/bass/etc,


Они платные.

> JUS ©   (29.12.05 13:32) [10]
> Гдето у меня была компонента ActiveX


ActiveX не надо !


Don Nikola   (2005-12-29 18:00:00) [16]

2MIDI:

Проиграть миди из памяти весьма проблемно, по крайней мере в win9x, или проигрывать с диска, или проигрывать через fmod/bass/etc, или писать самому плеер миди-событий.

2Cash:

Я конечно дико извиняюсь, но я почему-то последние лет 10 думал что s3m это от Scream Tracker 3 или сейчас появился новый формат?


JUS   (2005-12-29 13:32:00) [17]

Гдето у меня была компонента ActiveX, помоему "MP3playlist" или еще как то, если найду щас то выложу, много форматов проигрывает.


JUS   (2005-12-29 13:29:00) [18]

проиграть можно миди в карты с хорошим игроком:)


miek   (2005-12-29 10:14:00) [19]

Если поток - MemoryStream, т.е. можно взять указатель на начало звука, то пользуй PlaySound...


Cash   (2005-12-29 09:44:00) [20]

s3m, то есть Storm mix file поддерживает только сама эта прога (Storm)
Перегоняй ее в xm или ogg, тогда толк будет.
И вааще, этот вопрос не сюда, а в медиа конференцию!


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо