Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2009, 14:26   #1
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию Воспроизведение MID


Попробовал вот так:
Код:
 MidFileS := Directory.Sounds + 'Start.mid';
 mciSendString(PChar('play '+MidFileS),nil,1,0);
- нуль-эффект.
MMSystem подключил. Трассом прошелся, путь к файлу правильный.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 29.11.2009, 14:31   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

не могёт такого быть, проверь пути еще раз в MidFileS... и кстати, в ресурсы загони - таскать не придется, а из них как обычно:
Код:
implementation
 {$R mid\rmid.res}
...
var ZMID : HRSRC;
     MIDHandle : HGLOBAL;
     bufer : array[0..50000] of pchar;
     TempFile : File;
begin
  ZMID:=FindResource(HInstance,'rmid',RT_RCDATA);
  IF MIDHandle<>0 then begin
   MIDHandle:=LoadResource(HInstance,ZMID);
   CopyMemory(@bufer,Pointer(MIDHandle),SizeofResource(HInstance,ZMID));

   AssignFile(TempFile,'~temp.mid');
   REWRITE(TempFile,1);
   BlockWrite(TempFile,Bufer[0],SizeofResource(HInstance,ZMID));
   CloseFile(TempFile);
  end;
  //
  MCISendString(PChar('play ' + '~temp.mid'),nil,0,0)
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 29.11.2009 в 14:34.
raxp вне форума Ответить с цитированием
Старый 29.11.2009, 14:44   #3
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

А чем TMediaPlayer не устраивает?
mihali4 вне форума Ответить с цитированием
Старый 29.11.2009, 14:53   #4
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
не могёт такого быть
Код:
 MidFileS := Directory.Sounds + 'Start.mid';
 If FileExists(MidFileS) Then Windows.Beep(700,700);
 MCISendString(PChar('play '+MidFileS),nil,0,0);
Бип есть а миди нет.
Может звук как-то не так соорудил?
Цитата:
А чем TMediaPlayer не устраивает?
Ммм... Скажем так: к нему нет возможности обратиться.
Вложения
Тип файла: txt Start.mid.txt (490 байт, 125 просмотров)
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 29.11.2009, 14:57   #5
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

а вот тут MidFileS := Directory.Sounds + '\Start.mid'; - слэшек есть или он уже в Directory.Sounds присутствует?
зы: Start.mid - в мене воспроизвелся нормально в проекте alius, так что щось в путях... относительный кстати или абсолютный в Directory.Sounds?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 29.11.2009 в 15:00.
raxp вне форума Ответить с цитированием
Старый 29.11.2009, 14:59   #6
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
а вот тут MidFileS := Directory.Sounds + '\Start.mid'; - слэшек есть или он уже в Directory.Sounds присутствует?
Код:
Procedure FillDirectory;
 Begin
  GetDir(0, Directory.ExeDir);
  Directory.MainData := Directory.ExeDir + '\MainData\';
  Directory.Resource := Directory.ExeDir + '\Resource\';
  Directory.InterDir := Directory.Resource +'Interface\';
  Directory.Sounds   := Directory.Resource +'Sounds\';
  Directory.DataBase := Directory.MainData +'DataBase\';
  Directory.WordData := Directory.MainData +'WordData\';
 End;
+ Файл экзист сработал...

P.S. Только что создал пустой проект и поставил запуск мидишки на батон - чуда не произошло, не воспроизвелось.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ

Последний раз редактировалось Alex Cones; 29.11.2009 в 15:04.
Alex Cones вне форума Ответить с цитированием
Старый 29.11.2009, 15:14   #7
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Код:
 GetDir(0, ExeDir);
 Resource := ExeDir + '\Resource\';
 Sounds   := Resource +'Sounds\';
 MidFileS := Sounds + 'Start.mid';
 MCISendString(PChar('play '+MidFileS),nil,0,0);
- воспроизвелось однако... Directory - тип запись? а внутренние переменные pchar или string?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 29.11.2009, 15:15   #8
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
pchar или string?
Совсем не первое и не совсем второе:
Код:
  TDirectory = Record
              ExeDir   : ShortString;
              MainData : ShortString;
              Resource : ShortString;
              InterDir : ShortString;
              Sounds   : ShortString;
              DataBase : ShortString;
              WordData : ShortString;
   End;
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 29.11.2009, 15:21   #9
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

при втором и третьем все ок... а без этих путей, по-простому MCISendString(PChar('play Start.mid'),nil,0,0) воспроизводит хоть ?

upd
-------

Цитата:
Alex Cones
Нет (разумеется скопировал в дир с ехе)
По-моему MCI меня боится...
мде... однако... ну еще вариант воспроизводить через bass.dll или directshow
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 29.11.2009 в 15:45.
raxp вне форума Ответить с цитированием
Старый 29.11.2009, 15:24   #10
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Код:
 MCISendString(PChar('play Start.mid'),nil,0,0);
Нет (разумеется скопировал в дир с ехе)
По-моему MCI меня боится...

---
Цитата:
bass.dll
- ~700 кб... Мдя... Проще конвертнуть mid в wav

---

Поискал winmm.dll:
Изображения
Тип файла: gif 1.gif (3.7 Кб, 158 просмотров)
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ

Последний раз редактировалось Alex Cones; 29.11.2009 в 15:51.
Alex Cones вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отображение графической информации в MID-летах(ME) androidvsu Общие вопросы по Java, Java SE, Kotlin 1 10.12.2009 16:04
компонент проигрывания mid beegl Компоненты Delphi 2 28.06.2009 20:44
Использование функции MID для диапазона данных NikolayGVB Microsoft Office Excel 2 14.01.2009 13:01
SSH в Java MID 2.0 Soldier Общие вопросы по Java, Java SE, Kotlin 1 05.11.2008 11:19
Как засунуть *.Mid FaTaL Общие вопросы Delphi 1 09.11.2007 16:25