monrus
							
								Опытный 
								
								 
								  Offline
								
								
								
								
							 
						 | 
						
							
								  | 
								
									
									 «  : 11-08-2008 10:35 »   | 
								
								 | 
							  
							 
							Делаю программу для проигрывания муз.файлов. для этого использую BassPlayer 1.92 из torry.ru. MP3 файлы проигрывает а миди нет. почему? Дайте рабочий пример плз.    
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	| 
		
		
	 | 
	
		
		
			
				
					
						
							Алексей++
							
								глобальный и пушистый 
								Глобальный модератор
								
								 
								  Offline
								
								Сообщений: 13
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #2 : 11-08-2008 14:33 »   | 
								
								 | 
							  
							 
							запустил демо - не найдена куча библиотек )
  BASSWMA.DLL BASSCD.DLL BASSMIDI.DLL 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							monrus
							
								Опытный 
								
								 
								  Offline
								
								
								
								
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #3 : 12-08-2008 03:06 »   | 
								
								 | 
							  
							 
							да я скачал эти библиотеки. все равно не работает. Пишет Invalid stream file вот здесь:  procedure TForm1.Button1Click(Sender: TObject); begin if BP.BASSMIDIReady = True then BP.Open('D:\1\RM\1\Blessed_Elton_John.mid'); end; вроде как библиотека миди готова к работе, но... пожалуйста помогите 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							monrus
							
								Опытный 
								
								 
								  Offline
								
								
								
								
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #4 : 13-08-2008 11:16 »   | 
								
								 | 
							  
							 
							помогите кто-нибудь 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							RXL
							
						 | 
						
							
								  | 
								
									
									«  Ответ #5 : 13-08-2008 12:04 »    | 
								
								 | 
							  
							 
							monrus, поищи в этом разделе форума тему про компонент TMediaPlayer. 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. 
						 | 
					 
				 
			 |  
		 
	 | 
	| 
		
		
	 | 
	
		
		
			
				
					
						| 
							zubr
							 
								Гость 
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #7 : 14-08-2008 03:59 »   | 
								
								 | 
							  
							 
							monrus, а что стандартный TMediaPlayer с миди не работает? 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							monrus
							
								Опытный 
								
								 
								  Offline
								
								
								
								
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #8 : 14-08-2008 11:59 »   | 
								
								 | 
							  
							 
							Работает. Но я хочу разобраться с TBassPlayerom. Люблю кривые пути. А если серьезно. просто уже начал с этой библиотекой работать и хочу добить все до конца. Вот и прошу вашей помощи. 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							zubr
							 
								Гость 
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #9 : 14-08-2008 14:36 »   | 
								
								 | 
							  
							 
							Я всегда предпочитаю использовать стандартные борландские компоненты, или писать свои, использовать сторонние часто себе дороже. Бывает вроде все работает и слепил программу быстро, а когда начинаешь развивать проект или расширять функционал, вот тогда часто компоненты и приносят сюрприз., хорошо если есть на них исходники, тогда разобравшись с чужим кодом можно что то подправить, а если нет? 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							monrus
							
								Опытный 
								
								 
								  Offline
								
								
								
								
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #10 : 15-08-2008 07:39 »   | 
								
								 | 
							  
							 
							Согласен, библиотека вроде хорошая, а тут бац. а че-то не работает. 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							Алексей++
							
								глобальный и пушистый 
								Глобальный модератор
								
								 
								  Offline
								
								Сообщений: 13
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #11 : 15-08-2008 18:07 »   | 
								
								 | 
							  
							 
							Я всегда предпочитаю использовать стандартные борландские компоненты, или писать свои, использовать сторонние часто себе дороже. Бывает вроде все работает и слепил программу быстро, а когда начинаешь развивать проект или расширять функционал, вот тогда часто компоненты и приносят сюрприз., хорошо если есть на них исходники, тогда разобравшись с чужим кодом можно что то подправить, а если нет?
  я тоже похожего мнения    Хоть и не на дельфи. Своё - оно всегда лучше работает, а кроме того - вникаешь в суть происходящих там явлений    
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							RXL
							
						 | 
						
							
								  | 
								
									
									 « Ответ #12 : 15-08-2008 18:41 »   | 
								
								 | 
							  
							 
							Алексей1153++, zubr сказал в точности наоборот: лучше стандартное использовать. 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. 
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							Алексей++
							
								глобальный и пушистый 
								Глобальный модератор
								
								 
								  Offline
								
								Сообщений: 13
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #13 : 15-08-2008 18:43 »   | 
								
								 | 
							  
							 
							RXL, так я и подтверждаю: использовать всё то, что установилось вместе со средой и написано разработчиками среды , а всё левое как можно реже использовать, писать самому. Просто отличие дельфи в том, что там и так туча всего написана уже   )  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 | 
	| 
		
		
	 | 
	
		
		
			
				
					
						
							monrus
							
								Опытный 
								
								 
								  Offline
								
								
								
								
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #15 : 20-08-2008 04:54 »   | 
								
								 | 
							  
							 
							Все таки перешел на стандартный медиа плеер. Но возникла другая проблема. Не могу изменять громкость у миди-файлов. пробовал через midiOutSetVolume(MP.DeviceID, 123); Не работает. качал с торри всякие бибдиотеки по изменению громкости, тоже. В этих делах я совсем никакой. Поэтому прошу реальной помощи с реальными примерами, но не флуда   . Если дадите исходничок работающий (изменяющий громкость миди), вообще будет прекрасно.  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							zubr
							 
								Гость 
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #16 : 20-08-2008 09:25 »   | 
								
								 | 
							  
							 
							uses MMSystem;
  var   volume:DWord;
  waveOutGetVolume(WAVE_MAPPER, @volume); waveOutSetVolume(0, volume);
   
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							monrus
							
								Опытный 
								
								 
								  Offline
								
								
								
								
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #17 : 20-08-2008 10:12 »   | 
								
								 | 
							  
							 
							вот, что я выяснил с помощью примера, zubr:  waveOutSetVolume контролирует в контрольной панели звука параметр "звук" midiOutSetVolume - "синтезатор" или миди а как контролировать параметр "Общая"? zubr, спасибо. 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							zubr
							 
								Гость 
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #18 : 20-08-2008 16:30 »   | 
								
								 | 
							  
							 
							monrus, а чем тебя контроль звука не устраивает? 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							monrus
							
								Опытный 
								
								 
								  Offline
								
								
								
								
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #19 : 21-08-2008 03:55 »   | 
								
								 | 
							  
							 
							контроль звука - в смысле waveOutSetVolume? - он не изменяет громкость проигрывания миди.   за изменение громкости миди отвечает midiOutSetVolume - "синтезатор" а хотелось бы общий менять.    А-то придется разные пистьа обработчики на миди и на мп3  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							zubr
							 
								Гость 
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #20 : 21-08-2008 10:06 »   | 
								
								 | 
							  
							 
							Хм... Тогда может лучше использовать ActiveX-компонент стандартного Windows-медиа-плеера. 1. Импортируешь библиотеку типов (Project->Import Type Library) Windows Media Player (файл System32\wmp.dll) Делаешь инсталл. Получишь компонент TWindowsMediaPlayer. 2. Запускаешь медиа-файл: WindowsMediaPlayer1.URL:='MyMediaFile.mid';
  3. Пуск, стоп, пауза: WindowsMediaPlayer1.controls.play; WindowsMediaPlayer1.controls.stop; WindowsMediaPlayer1.controls.pause;
  4. Громкость: WindowsMediaPlayer1.settings.volume:=10;
  Сам класс TWindowsMediaPlayer и применяемые интерфейсы найдешь в соответствующем созданном при импорте юните. Плюс описание на интефейсы есть в MSDN. Преимущество - получаешь все возможности WMP, ну и в отличие от методов ...OutSetVolume изменяешь громкость не всей системы, а только медиаплеера в твоем приложении. З.Ы. Или можно через OLE: CreateOleObject('Windows Media Player'); ...  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Последнее редактирование: 21-08-2008 10:12 от zubr »
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							monrus
							
								Опытный 
								
								 
								  Offline
								
								
								
								
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #21 : 21-08-2008 10:09 »   | 
								
								 | 
							  
							 
							о, ща гляну 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							monrus
							
								Опытный 
								
								 
								  Offline
								
								
								
								
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #22 : 21-08-2008 11:39 »   | 
								
								 | 
							  
							 
							вот, нашел как изменять общую громкость системы:  http://www.prog-gate.pp.ru/fido7.ru.delphi.chainik/5671.html - может кому пригодится. TWindowsMediaPlayer классная вещь. Хотелось бы узнать, медиаплеер из дельфы, можно ли изменять только его громкость? а не системы, ни звука и не синтезатора    
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							zubr
							 
								Гость 
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #23 : 21-08-2008 14:04 »   | 
								
								 | 
							  
							 
							Ну нет у дельфийского медиаплеера метода изменения громкости. Можно через mci (не люблю mci) регулировать громкость дельфийского медиаплеера: const    MCI_SETAUDIO = $0873;    MCI_DGV_SETAUDIO_VOLUME = $4002;    MCI_DGV_SETAUDIO_ITEM = $00800000;    MCI_DGV_SETAUDIO_VALUE = $01000000;
  type   MCI_DGV_SETAUDIO_PARMS = record      dwCallback: DWORD;      dwItem: DWORD;      dwValue: DWORD;      dwOver: DWORD;      lpstrAlgorithm: PChar;      lpstrQuality: PChar;    end;
  procedure TForm1.TrackBar1Change(Sender: TObject); var    param: MCI_DGV_SETAUDIO_PARMS; begin  param.dwCallback := 0;  param.dwItem := MCI_DGV_SETAUDIO_VOLUME;  param.dwValue := TrackBar1.Position; //громкость  param.dwOver := 0;  param.lpstrAlgorithm := nil;  param.lpstrQuality := nil;  mciSendCommand(MediaPlayer1.DeviceID, MCI_SETAUDIO,      MCI_DGV_SETAUDIO_VALUE or MCI_DGV_SETAUDIO_ITEM, Cardinal(@param)); end;
  Правда с миди это не работает.  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							monrus
							
								Опытный 
								
								 
								  Offline
								
								
								
								
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #24 : 26-08-2008 03:12 »   | 
								
								 | 
							  
							 
							Ладно, спасибо, zubr. Придется изменением громкости системы пользоваться. Вот другой вопрос: трекбар отображает текущую позицию песни. Если я например хочу еще и сам, передвигая движок трекбара (onchange), менять позицию в песне, то сама песня начинает как бы эхом отдавать. Как вообще сделать чтобы можно было менять позицию в песне как напр. в Винампе.
  procedure TForm1.PosChange(Sender: TObject); begin
    if (BP.Position = MP.Length) or (Pos.Position = Pos.Max) then MP.Stop   else begin     MP.Position := Pos.Position;     {MP.Play;} end;  end;
  procedure TForm1.Timer1Timer(Sender: TObject); begin    Pos.Position := MP.Position; end; 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							zubr
							 
								Гость 
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #25 : 26-08-2008 05:09 »   | 
								
								 | 
							  
							 
							Смотри что у тебя получается. В таймере ты меняешь позицию тракбара, соответственно вызывается событие тракбара OnChange - в результате выполняется код  MP.Position := Pos.Position; MP.Play;
  Поэтому такой эффект и происходит. Выход - для изменения позиции медиаплеера пользователем использовать не событие OnChange тракбара, а сообщение WM_LBUTTONUP (отпускания мыши). Так как у тракбара нет своего обработчика данного сообщения, можно использовать 2 варианта: 1. Для перехвата использовать компонент TApplicationEvents: procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;   var Handled: Boolean); begin  If Msg.hwnd <> TrackBar1.Handle then //проверяем от кого сообщение  exit;  If (Msg.message <> WM_LBUTTONUP) and (Msg.message <> WM_LBUTTONDOWN) then //проверяем какое сообщение  exit;  If Msg.message = WM_LBUTTONDOWN then  begin   Timer1.Enabled := False; //если кнопка мыши нажата, то останавливаем таймер   exit;  end;  MediaPlayer1.Position := TrackBar1.Position;  MediaPlayer1.Play;  Timer1.Enabled := True; end;
  2. Создаем свой компонент на базе TTrackBar, в котором перехватываем сообщение WM_LBUTTONUP TMyTrackBar = class(TTrackBar)   private     procedure WMMouseUp(var msg:TMessage); message WM_LBUTTONUP;   end;
     
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							alliance
							
								Постоялец 
								
								 
								  Offline
								
								
								
								
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #26 : 13-02-2009 09:04 »   | 
								
								 | 
							  
							 
							а можно использовать компонент ScrollBar у него есть свойство OnScroll при изменении пользователем позиции скролла, т е в таймере ставим  OnChange, а в событии OnScroll изменяем позицию медиаплеера по позиции ScrollPos    
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							zubr
							 
								Гость 
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #27 : 13-02-2009 09:30 »   | 
								
								 | 
							  
							 
							Компонент ScrollBar устанавливает скроллинг, его длину в зависимости от размера вложеннного в него контрола, у тебя же длина скроллинга должна зависеть от размера трека, проигрываемого медиаплеером. То есть в принципе такое сделать можно, подстраивая размер контрола под размер трека, но мне не понятно зачем, чем не устраивает TrackBar? 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							alliance
							
								Постоялец 
								
								 
								  Offline
								
								
								
								
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #28 : 13-02-2009 09:37 »   | 
								
								 | 
							  
							 
							устраивает, просто при проектировании плэера сразу же наткнулся на проблему с TrackBar описанную выше и взял ScrollBar
  Вопрос, я работаю в иср builder c++ 6 (дельфи не изучал ) как изменять во время выполнения звук системы ? 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Последнее редактирование: 13-02-2009 10:17 от Алексей1153++ »
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							zubr
							 
								Гость 
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #29 : 13-02-2009 09:43 »   | 
								
								 | 
							  
							 
							Это проблема не TrackBar, а выбранного решения. Аналогичные проблемы возникнут и в ScrollBar. Правильное решение смотри выше. 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	 |