You are not logged in.

  • Login

xavia

Unregistered

1

Monday, March 14th 2011, 7:34pm

Musikschleife mit mciSendString??

hallo zusammen,

ich möchte gerne bei einem Spiel das ich programmiere etwas Hintergrundmusik laufen lassen, dabei habe ich an eine art endlosschleife gedacht...

folgendes habe ich bereits:

C/C++ Quellcode

1
void __fastcall TForm1::Button1Click(TObject *Sender){    mciSendString("stop  all", NULL, 0, NULL);   mciSendString("close all", NULL, 0, NULL); mciSendString("open C:/testmusik.wma wait", NULL, 0, NULL);mciSendString("play C:/testmusik.wma", NULL, 0, NULL);}


wie kann ich das jetzt machen das er iwi erkennt ob das Lied vorbei ist oder so das er dann ein zufälliges neues startet?

und was noch nebenbei wäre, kann ich eine Musikdatei irgendwie so aufrufen das ich sage die liegt immer in dem Ordner in dem auch die .exe liegt, falls ich es verschieben möchte oder...

danke schon mal für die Antwort/en

xavia

Unregistered

2

Monday, March 14th 2011, 7:36pm

hmm ok jetz schaut der quellcode etwas doof aus :-/


void __fastcall TForm1::Button1Click(TObject *Sender)
{
mciSendString("stop all", NULL, 0, NULL);
mciSendString("close all", NULL, 0, NULL);
mciSendString("open C:/testmusik.wma wait", NULL, 0, NULL);
mciSendString("play C:/testmusik.wma", NULL, 0, NULL);
}

3

Monday, March 14th 2011, 7:43pm

Das ist ein zufälliger Fehler hier im Forum.
Benutze einfach den "Bearbeiten"-Button und füge per [Enter] die Zeilenumbrüche neu ein. Meistens klappt es dann. Wenn sich dein Browser wie bei mir dann auch schließt, so benutze einfach einen anderen....

Was mir gleich auffällt, auch wenn ich so etwas bisher nur über SDL und SFML gemacht habe, du scheinst alles zu stoppen usw. bevor es überhaupt losgeht. Du stoppst und lädst. Das sollte man nicht über einen Button machen,
zur Not kannst du ihn ja deaktivieren. Wenn ich bei der SFML so etwas machen würde, würde es abstürzen.
Du hast ja jetzt nicht gesagt was bei dir passiert, aber das war jetzt mal so meine spekulative Antwort. :D

MfG
Check

xavia

Unregistered

4

Monday, March 14th 2011, 7:50pm

leider gibbet kein edit, da ich nich angemeldet bin ^^

der button funzt soweit ganz gut, das stoppen ist dafür da, das ich nicht 2 sounds gleichzeitig abspiele, danach wird dann der neue gestartet

allerdings habe ich das ganze jetz nur in einem extra programm gemacht das nur aus 2 buttons besteht, weil ich das Spiel nicht hier habe ^^

5

Monday, March 14th 2011, 8:29pm

Könnte aber zu internen Problemen führen, ich würde Extra-Buttons machen. Ist fast wie mit einer for-Schleife.
Wobei das:

C/C++ Quellcode

1
2
3
int y=1;
for(y<2; y++)
...

Fehler hervorbringt und das:

C/C++ Quellcode

1
2
for(int y=1; y<2; y++)
...

Keine.
Gut, liegt jetzt mehr daran das der Aufbau einer for-Schleife der ist:

for ( init_expression ; cond_expression ; iteration_expression ) loop_statement

Von der Fehlerart nicht zu vergleichen, aber irgendwie sagt mir mein Bauch, das ich das jetzt sagen sollte. :D
Wenn du nicht 2 Sounds gleichzeitig abspielen möchtest, dann guck wie lang die Stücke sind, bastele dir einen Timer und lass eine Funktion nach dieser Zeit laden.
Ich würde es zwar im Spiel machen, mit Engine, da es wesentlich leichter sein kann, aber musst du wissen. ;)

MfG
Check

xavia

Unregistered

6

Monday, March 14th 2011, 9:29pm

naja die art wie ich das mache is mir eigentlich recht schnuppe, das war halt jetzt so was ich gefunden habe um musik abzuspielen^^
d.h. ich brauch einfach irgendwas, das eine endlos Musik-schleife erstellt, hauptsache funzt und ich verstehs :P
bin da leider noch nicht so erfahren drin, versteh das aber recht schnell wenn du mir da was bissel erläuterst :)

was hat es mit der "Engine" auf sich?

7

Monday, March 14th 2011, 9:42pm

Wenn du weiterhin mit mciSendString arbeiten möchtest haste du hier eine komplette Befehlsübersicht:
http://msdn.microsoft.com/en-us/library/…v=vs.85%29.aspx

Für dich sollte die Statusabfrage (status-mode) interessant sein:
http://msdn.microsoft.com/en-us/library/…v=vs.85%29.aspx

Mfg Rushh0ur

Xavia

Unregistered

8

Monday, March 14th 2011, 11:50pm

naja wirklich weiterhelfen tuts mir nicht :-/

habs jetz mal mit playsound versucht, aber das geht ja nur mit wav-.-

9

Tuesday, March 15th 2011, 7:22pm

Hmm... Weil *.wav das gängigste Format von Windows ist? :D
Wandele das doch einfach mal um, wie zum Beispiel mit Format Factory.
Ansonsten empfehle ich immer noch eine gescheite vorgefertigte Engine wie SFML oder SDL, oder du schreibst dir natürlich die Auslesung von anderen Musikformaten selbst.... :rolleyes:

MfG
Check

10

Tuesday, March 15th 2011, 8:49pm

Das problem mit wav ist genau das gleiche wie mit bmp.
Beide sind EXTREM groß.
Ich denke mal deswegen will er es nicht verwenden.

xavia91

Unregistered

11

Tuesday, March 15th 2011, 10:34pm

sehr richtig pocky^^

naja ich hab mir überlegt vielleicht einfach nur eine etwas längere Playlist mit mciSendString zu laden, das sollte reichen... zumindest bis die Präsentation fertig ist :P

12

Sunday, March 20th 2011, 3:22pm

mciSendString ist veraltet, bzw wird sogut wie nie verwendet, ich würde dir im generelen davon abraten.

Wenn du mehr (einfache) möglichkeiten, und vorallem mehr Formate abspielen zu können, haben willst wird es das beste sien eien Engine zu nehmen.
Da gibt es mittlerweiel viele gute. Eine wurde ja schon gennant, die SFML Engine, desweiteren würde mir irrKlang, Bass Audio Lib einfallen.

Mfg Rushh0ur

13

Sunday, March 20th 2011, 3:37pm

Die SDL ist für den Anfang ziemlich einfach, habe ich auch erstmal benutzt und kann man auch erstmal benutzen.

Such dir eine aus. :P

MfG
Check

Similar threads

Social bookmarks