[delphi] 2 mp3-files -> 1 links & 1 rechts

Pagina: 1
Acties:

  • Aloys
  • Registratie: Juni 2005
  • Niet online
Zoals in mijn topictitel al staat wil ik 2 mp3 bestanden afspelen. Daarbij wil ik deze pannen zodat er 1 over del inkerspeaker komt en 1 over de rechterspeaker. Ik heb in delphi het al wel voor elkaar om 2 mp3 bestanden tegelijk af te spelen. (op de volgende manier).


Delphi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function mciSendString(lpstrCommand, lpReturnString: PChar;
uReturnLength, hwndCallback: LongInt): LongInt;
stdcall;
external 'winmm.dll' name 'mciSendStringA';

procedure TForm1.FormClick(Sender: TObject);
var FileName: String;
begin

FileName := ExtractShortPathName(PChar('c:\my music\test.mp3'));
mciSendString(PChar('play '+ FileName), nil, 0, self.Handle);

FileName := ExtractShortPathName(PChar('c:\my music\test2.mp3'));
mciSendString(PChar('play '+ FileName), nil, 0, self.Handle);

end;

Hierbij gebruik ik dus mciSendString. Ik heb in de MSDN gezocht naar een methode maar ik kon niets vinden. Ook via google werd ik niets wijzer, vandaar dat ik mijn vraag hier stel.

Als het niet mogelijk is met MciSendString mag je ook een vervangende oplossing aandragen ;) .

Alvast bedankt :)

  • The Fox NL
  • Registratie: Oktober 2004
  • Laatst online: 23:37
Het is misschien overkill, maar volgens mij kun je met FMOD zoiets wel voor elkaar krijgen. FMOD heeft ook een interface voor delphi.

  • Aloys
  • Registratie: Juni 2005
  • Niet online
Ja, ik had indd FMOD al gezien, maar imo is dat inderdaad overkill. Daarom wacht ik totdat ik weet of het ook met mciSendString kan, en anders toch maar FMOD of iets soortgelijks.

  • Aloys
  • Registratie: Juni 2005
  • Niet online
niemand? ;(

  • NLChris
  • Registratie: Juli 2004
  • Laatst online: 21:30
http://msdn.microsoft.com...d/htm/_win32_setaudio.asp

Hier staan alle commandos voor audio, misschien heb je er wat aan. Maar je zal waarschijnlijk synchronisatie problemen krijgen. Als het belangrijk is dat de 2 mp3 bestanden tegelijk starten kan je misschien toch beter kijken naar iets als FMOD.

FMOD is niet heel moeilijk om te begrijpen en heeft ook goede ondersteuning op het forum van ze

  • Aloys
  • Registratie: Juni 2005
  • Niet online
opzich is het tegelijk draaien van mp3's geen probleem. Die link die je heb gepost is imo erg interresant, er staan dingen in om een kanaal uit te zetten. Maar het probleem is dat (volgens de beschrijving) dit bij een mono-audiostream niet gaat werekn. Ik zoek dus echt iets om te pannen. (alle sound van 1mp3 over 1 speaker)

Ik ga nog ff verder aanrommelen, tips zijn welkom, en als het niet lukt ga ik fmod proberen. :)

  • Exirion
  • Registratie: Februari 2000
  • Laatst online: 23:16

Exirion

Gadgetfetisjist

Waarom gebruik je niet gewoon libmad om de MP3's te decoden en dan zelf de PCM data te mixen, pannen, whatever you like? Je beperkt jezelf door op zo'n abstract niveau mp3's af te spelen.

"Logica brengt je van A naar B, verbeelding brengt je overal." - Albert Einstein


  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
Zoek eens op TBass

http://www.un4seen.com/

Daarmee kan je ALLES doen wat je wilt.

  • netvor
  • Registratie: September 2000
  • Laatst online: 08-04-2024
Exirion schreef op zondag 13 mei 2007 @ 21:53:
Waarom gebruik je niet gewoon libmad om de MP3's te decoden en dan zelf de PCM data te mixen, pannen, whatever you like? Je beperkt jezelf door op zo'n abstract niveau mp3's af te spelen.
^ I'm with stupid.

Als je de twee mp3's gesynchroniseerd wil hebben gaat dat met het win32-api heel moeilijk worden. Ik zou inderdaad libmad o.i.d. (er zijn er meerdere) gebruiken om de twee mp3's te decoden. Een decoder heeft vaak een optie om te downmixen naar mono. Vervolgens moet je van de twee mono-PCM-streams een stereo stream maken (hoe dat moet weet ik eigenlijk niet) en deze stereo-stream kan je dan afspelen.

Verder nog een waarschuwing: als je een stereo-stream 100% left panned, dan wordt feitelijk het rechter kanaal uitgeschakeld. Als je dus de hele mp3 over de linkerspeaker wil horen moet je deze dus niet als stereo pannen, maar eerst downmixen naar mono en dan pas pannen.

Computer Science: describing our world with boxes and arrows.


  • Aloys
  • Registratie: Juni 2005
  • Niet online
Ik zal fftjes wat verduidelijken....

Ik heb 2 mono (!) mp3-bestanden
En het gelijk laten lopen komt helemaal in orde, want het is geen muziek oid. Het is een nederlandse tekst, en die word tegelijk in het engels ernaast gedaan (of een andere taal naar keuze). Dus dat downmixen ed. is dus niet nodig.

Verder moet die standalone op een pctje kunnen draaien, en is het niet de bedoeling dat de gebruiker een C2D Quad nodig heeft. (petium 2 oid moet genoeg zijn.) Dus het lieftst geen gemix enz.

Maar allemaal toch bedankt voor jullie input :) , ik zoek zelf nog eventjes verder. (FMOD, en Bass werken met dll'tjes?)

  • DaCoTa
  • Registratie: April 2002
  • Laatst online: 30-11 21:02
Hmm, 2 goedkope geluidskaartjes en zelf een kabeltje solderen?

  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
Bass is gewoon een delphi package. Installeren en gaan

[ Voor 31% gewijzigd door Megamind op 14-05-2007 18:17 ]


  • JochemK
  • Registratie: Maart 2003
  • Laatst online: 25-11 10:41
netvor schreef op maandag 14 mei 2007 @ 16:49:
[...]
Vervolgens moet je van de twee mono-PCM-streams een stereo stream maken (hoe dat moet weet ik eigenlijk niet)
Over het algemeen sampletje voor links, sampletje voor rechts, sampeltje voor links ....

Wat ik me dan weer afvraag is, als ik die ruwe data heb, hoe speel ik dat dan weer af?

  • NLChris
  • Registratie: Juli 2004
  • Laatst online: 21:30
Mixen is absoluut geen probleem voor een pentium 2. Rauwe PCM data kan je afspelen met de WaveOut api van windows.

Maar het is veel makkelijker om Bass of FMOD te pakken. Je opent dan gewoon beide bestanden met fmod/bass. Pannen en playback starten.

Bovendien komen deze APIs met veel handige functies die je misschien later nog kan gebruiken

  • Janoz
  • Registratie: Oktober 2000
  • Nu online

Janoz

Moderator Devschuur®

!litemod

Mixen deed ik al op mijn 486 :), en die zat daarbij ook nog eens uit zijn neus te vreten. Wat denk je dat er gebeurt bij de aanroep van mciSendString? Op dat moment wordt een compleet mpeg decompressie algoritme los gelaten op je mp3 data om het vervolgens raw naar de geluidskaart te kunnen sturen.

Het enige wat jij hoeft te doen is deze handeling eerder doen zodat je zelf de beschikking hebt over de raw data en dit dan vervolgens zelf naar de geluidskaart gaan sturen. Ik vermoed dat je applicatie (als je hem goed hebt gemaakt) meer tijd kwijt is aan het tekenen van zijn GUI dan aan het hele audio gedeelte.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Aloys
  • Registratie: Juni 2005
  • Niet online
Megamind schreef op maandag 14 mei 2007 @ 18:17:
Bass is gewoon een delphi package. Installeren en gaan
Ik heb gezocht op de site maar kon geen delphi package vinden :?
Hmm al die verschillende talen zitten gewoon in 1 package :9 .

[ Voor 13% gewijzigd door Aloys op 15-05-2007 13:27 ]

Pagina: 1