Sound Probleme


luteijn said:
and before you went to 1.2.0, did you have the original sdl libs on your gp2x?

Yes and after that i haven't installed the SDL-Libs yet. My bed has called: Here i am :)

Greetz
BNrXYZ
 
Nächster Versuch

<r>Hiho...<br/>
<br/>
ich habe mir jetzt ein neues DevKitGP2X-Verzeichnis erzeugt.<br/>
Am Code des Programms habe ich nichts verändert.<br/>
<br/>
Mein von DEVcpp generiertes Makefile sieht so aus:
<CODE><s>
Code:
</s><i>
</i># Project: AirPong
# Makefile created by Dev-C++ 4.9.9.2

CPP  = arm-linux-g++.exe
CC   = arm-linux-gcc.exe
WINDRES = windres.exe
RES  = 
OBJ  = main.o cgameobj.o cball.o cbat.o config.o display.o event.o font.o game.o global.o menu.o mouse.o objects.o timer.o keyboard.o $(RES)
LINKOBJ  = main.o cgameobj.o cball.o cbat.o config.o display.o event.o font.o game.o global.o menu.o mouse.o objects.o timer.o keyboard.o $(RES)
LIBS =  -L"C:/devkitGP2X/lib" -lSDLmain -lSDL_mixer -lvorbisidec -lmikmod -lSDL_ttf -lm -lfreetype -lz -lSDL -lpthread -static   -fmessage-length=0 
INCS =  -I"C:/devkitGP2X/include" 
CXXINCS =  -I"C:/devkitGP2X/lib/gcc/arm-linux/4.0.2/include"  -I"C:/devkitGP2X/include/c++/4.0.2/backward"  -I"C:/devkitGP2X/include/c++/4.0.2/arm-linux"  -I"C:/devkitGP2X/include/c++/4.0.2"  -I"C:/devkitGP2X/include" 
BIN  = AirPong.gpe
CXXFLAGS = $(CXXINCS)    -fmessage-length=0
CFLAGS = $(INCS)    -fmessage-length=0
RM = rm -f

.PHONY: all all-before all-after clean clean-custom

all: all-before AirPong.gpe all-after


clean: clean-custom
	${RM} $(OBJ) $(BIN)

$(BIN): $(OBJ)
	$(CPP) $(LINKOBJ) -o "AirPong.gpe" $(LIBS)

main.o: main.cpp
	$(CPP) -c main.cpp -o main.o $(CXXFLAGS)
.
.
.
<e>
</e></CODE>

Das DEVcpp-Compile-Log sieht so aus:<br/>

<CODE><s>
Code:
</s><i>
</i>Compiler: DevkitGP2X
Building Makefile: "C:\devkitGP2X\Proggies\airpong022\src\Makefile.win"
Führt  make clean aus
rm -f main.o cgameobj.o cball.o cbat.o config.o display.o event.o font.o game.o global.o menu.o mouse.o objects.o timer.o keyboard.o  AirPong.gpe
arm-linux-g++.exe -c main.cpp -o main.o -I"C:/devkitGP2X/lib/gcc/arm-linux/4.0.2/include"  -I"C:/devkitGP2X/include/c++/4.0.2/backward"  -I"C:/devkitGP2X/include/c++/4.0.2/arm-linux"  -I"C:/devkitGP2X/include/c++/4.0.2"  -I"C:/devkitGP2X/include"     -fmessage-length=0
arm-linux-g++.exe -c cgameobj.cpp -o cgameobj.o -I"C:/devkitGP2X/lib/gcc/arm-linux/4.0.2/include"  -I"C:/devkitGP2X/include/c++/4.0.2/backward"  -I"C:/devkitGP2X/include/c++/4.0.2/arm-linux"  -I"C:/devkitGP2X/include/c++/4.0.2"  -I"C:/devkitGP2X/include"     -fmessage-length=0
arm-linux-g++.exe -c cball.cpp -o cball.o -I"C:/devkitGP2X/lib/gcc/arm-linux/4.0.2/include"  -I"C:/devkitGP2X/include/c++/4.0.2/backward"  -I"C:/devkitGP2X/include/c++/4.0.2/arm-linux"  -I"C:/devkitGP2X/include/c++/4.0.2"  -I"C:/devkitGP2X/include"     -fmessage-length=0
arm-linux-g++.exe -c cbat.cpp -o cbat.o -I"C:/devkitGP2X/lib/gcc/arm-linux/4.0.2/include"  -I"C:/devkitGP2X/include/c++/4.0.2/backward"  -I"C:/devkitGP2X/include/c++/4.0.2/arm-linux"  -I"C:/devkitGP2X/include/c++/4.0.2"  -I"C:/devkitGP2X/include"     -fmessage-length=0
arm-linux-g++.exe -c config.cpp -o config.o -I"C:/devkitGP2X/lib/gcc/arm-linux/4.0.2/include"  -I"C:/devkitGP2X/include/c++/4.0.2/backward"  -I"C:/devkitGP2X/include/c++/4.0.2/arm-linux"  -I"C:/devkitGP2X/include/c++/4.0.2"  -I"C:/devkitGP2X/include"     -fmessage-length=0
arm-linux-g++.exe -c display.cpp -o display.o -I"C:/devkitGP2X/lib/gcc/arm-linux/4.0.2/include"  -I"C:/devkitGP2X/include/c++/4.0.2/backward"  -I"C:/devkitGP2X/include/c++/4.0.2/arm-linux"  -I"C:/devkitGP2X/include/c++/4.0.2"  -I"C:/devkitGP2X/include"     -fmessage-length=0
arm-linux-g++.exe -c event.cpp -o event.o -I"C:/devkitGP2X/lib/gcc/arm-linux/4.0.2/include"  -I"C:/devkitGP2X/include/c++/4.0.2/backward"  -I"C:/devkitGP2X/include/c++/4.0.2/arm-linux"  -I"C:/devkitGP2X/include/c++/4.0.2"  -I"C:/devkitGP2X/include"     -fmessage-length=0
arm-linux-g++.exe -c font.cpp -o font.o -I"C:/devkitGP2X/lib/gcc/arm-linux/4.0.2/include"  -I"C:/devkitGP2X/include/c++/4.0.2/backward"  -I"C:/devkitGP2X/include/c++/4.0.2/arm-linux"  -I"C:/devkitGP2X/include/c++/4.0.2"  -I"C:/devkitGP2X/include"     -fmessage-length=0
arm-linux-g++.exe -c game.cpp -o game.o -I"C:/devkitGP2X/lib/gcc/arm-linux/4.0.2/include"  -I"C:/devkitGP2X/include/c++/4.0.2/backward"  -I"C:/devkitGP2X/include/c++/4.0.2/arm-linux"  -I"C:/devkitGP2X/include/c++/4.0.2"  -I"C:/devkitGP2X/include"     -fmessage-length=0
arm-linux-g++.exe -c global.cpp -o global.o -I"C:/devkitGP2X/lib/gcc/arm-linux/4.0.2/include"  -I"C:/devkitGP2X/include/c++/4.0.2/backward"  -I"C:/devkitGP2X/include/c++/4.0.2/arm-linux"  -I"C:/devkitGP2X/include/c++/4.0.2"  -I"C:/devkitGP2X/include"     -fmessage-length=0
arm-linux-g++.exe -c menu.cpp -o menu.o -I"C:/devkitGP2X/lib/gcc/arm-linux/4.0.2/include"  -I"C:/devkitGP2X/include/c++/4.0.2/backward"  -I"C:/devkitGP2X/include/c++/4.0.2/arm-linux"  -I"C:/devkitGP2X/include/c++/4.0.2"  -I"C:/devkitGP2X/include"     -fmessage-length=0
arm-linux-g++.exe -c mouse.cpp -o mouse.o -I"C:/devkitGP2X/lib/gcc/arm-linux/4.0.2/include"  -I"C:/devkitGP2X/include/c++/4.0.2/backward"  -I"C:/devkitGP2X/include/c++/4.0.2/arm-linux"  -I"C:/devkitGP2X/include/c++/4.0.2"  -I"C:/devkitGP2X/include"     -fmessage-length=0
arm-linux-g++.exe -c objects.cpp -o objects.o -I"C:/devkitGP2X/lib/gcc/arm-linux/4.0.2/include"  -I"C:/devkitGP2X/include/c++/4.0.2/backward"  -I"C:/devkitGP2X/include/c++/4.0.2/arm-linux"  -I"C:/devkitGP2X/include/c++/4.0.2"  -I"C:/devkitGP2X/include"     -fmessage-length=0
objects.cpp: In function 'void objects_update()':
objects.cpp:169: warning: passing 'double' for argument 1 to 'void CGameOBJ::setxv(int)'
objects.cpp:190: warning: passing 'double' for argument 1 to 'void CGameOBJ::setxv(int)'

arm-linux-g++.exe -c timer.cpp -o timer.o -I"C:/devkitGP2X/lib/gcc/arm-linux/4.0.2/include"  -I"C:/devkitGP2X/include/c++/4.0.2/backward"  -I"C:/devkitGP2X/include/c++/4.0.2/arm-linux"  -I"C:/devkitGP2X/include/c++/4.0.2"  -I"C:/devkitGP2X/include"     -fmessage-length=0
arm-linux-g++.exe -c keyboard.cpp -o keyboard.o -I"C:/devkitGP2X/lib/gcc/arm-linux/4.0.2/include"  -I"C:/devkitGP2X/include/c++/4.0.2/backward"  -I"C:/devkitGP2X/include/c++/4.0.2/arm-linux"  -I"C:/devkitGP2X/include/c++/4.0.2"  -I"C:/devkitGP2X/include"     -fmessage-length=0
arm-linux-g++.exe main.o cgameobj.o cball.o cbat.o config.o display.o event.o font.o game.o global.o menu.o mouse.o objects.o timer.o keyboard.o  -o "AirPong.gpe" -L"C:/devkitGP2X/lib" -lSDLmain -lSDL_mixer -lvorbisidec -lmikmod -lSDL_ttf -lm -lfreetype -lz -lSDL -lpthread -static   -fmessage-length=0 
C:/devkitGP2X/lib\libmikmod.a(mdriver.o): In function `MD_DropPrivileges':
mdriver.c:(.text+0x2cf4): warning: Using 'getpwnam' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking

Ausführung beendet
Kompilierung erfolgreich
<e>
</e></CODE>

Die Ausgabe im Terminal gibt nun folgendes aus:<br/>

<CODE><s>
Code:
</s><i>
</i>Init...
Init SDL...
SDL_SYS_JoystickInit
<e>
</e></CODE>

-------------------------------------------------------------------<br/>
BTW: wenn folgende Meldung im Terminal auftaucht:<br/>

<CODE><s>
Code:
</s><i>
</i>Mix_LoadWAV: Mix_LoadWAV_RW with NULL src
<e>
</e></CODE>

dann ist die zu ladende WAV-Datei nicht am definierten Ort auf dem GP2X.<br/>
----------------------------------------------------<br/>
<br/>
Was mich wundert ist, dass jetzt im Prog-Verzeichnis auf dem GP2X eine Datei "music.raw" erzeugt wird. Ich habe den Vorgang nochmals wiederholt und vorher die music.raw per USB-Verbindung gelöscht.<br/>
<br/>
Sie wird beim Start von AirPong angelegt und hat eine Dateigröße von 0 Bytes.<br/>
<br/>
ABER: AirPong startet! Ich höre aber nichts <E:-||</E><br/>
<br/>
Ich werde morgen weiter versuchen....<br/>
<br/>
Hint: Das ist mein erster Versuch unter der FW 1.2.0 und die SDL-Libs habe ich noch nicht auf dem GP2X installiert, er läuft immo also mit dem, was er von der Firmware hat.<br/>
<br/>
Greetz<br/>
BNrXYZ</r>
 
Was mir noch einfällt...

<r>... das ich noch nichts höre, kann einen einfachen Grund haben: Nachdem ich die Probleme mit der SDL_Mixer hatte, hatte ich im Code alles, was mit Sound zu tun hatte erst mal auf "//" gesetzt um es dann schrittweise wieder einzubinden.<br/>
<br/>
Der Abschnitt, der zu
<CODE><s>
Code:
</s><i>
</i>Warning: Couldn't set 22050 Hz 16-bit audio
Reason: Couldn't create mixer lock 
<e>
</e></CODE>
führte, war aber aktiv. Insofern schon mal ein Fortschritt.<br/>
<br/>
Werde heute abend also weiter testen...<br/>
<br/>
Greetz<br/>
BNrXYZ</r>
 
Hipp, hipp...

<r>Was soll ich sagen: Es funktioniert, ich habe Sound in der Konfiguration, wie ich sie oben beschrieben habe. Ich brauchte nur die kommentierten Zeilen wieder zu aktivieren und es lief...<br/>
<br/>
Und Pieter: DANKE!<br/>
<br/>
Greetz<br/>
BNrXYZ<br/>
<br/>
P.S. Falls Fragen da sind, bitte hier stellen. Ich stehe zur Verfügung.<br/>
<br/>
P.P.S. Was ich noch nicht getestet habe: Laufen andere SDL-Games ohne statisch gelinkte SDL-Libs (also solche, die die SDL-Libs des GP2X nutzen, denn die sind ja nicht drauf)? Aber das kommt noch.<br/>
<br/>
Edit: Ich habe nichts anderes gemacht, als mir aus devkitGP2X-win32.exe, arm-linux-sdl-config.rar und theoddbot-libs-open2x-soft-float-beta2.tar.gz ein neues C:\devkitGP2X zu bauen (so wie es in dem GP2X-UserGuide V 1.<B><s></s>2<e></e></B> beschrieben steht, mit dessen Quellen). Das alte C:\devkitGP2X hatte ich vorher umbenannt. Dadurch brauchte ich DEVcpp nichts anzupassen.</r>
 
Re: Hipp, hipp...

<r><QUOTE author="BestNrXYZ"><s>
BestNrXYZ said:
</s>Was soll ich sagen: Es funktioniert, ich habe Sound in der Konfiguration, wie ich sie oben beschrieben habe. Ich brauchte nur die kommentierten Zeilen wieder zu aktivieren und es lief...<br/>
<br/>
Und Pieter: DANKE!<br/>
<br/>
Greetz<br/>
BNrXYZ<br/>
<br/>
P.S. Falls Fragen da sind, bitte hier stellen. Ich stehe zur Verfügung.<br/>
<br/>
P.P.S. Was ich noch nicht getestet habe: Laufen andere SDL-Games ohne statisch gelinkte SDL-Libs (also solche, die die SDL-Libs des GP2X nutzen, denn die sind ja nicht drauf)? Aber das kommt noch.<e>
</e></QUOTE>

Du hast doch Dev-Cpp, oder?<br/>
Gib mir alle infos ! <E>:)</E><br/>
Am besten wo du dei Libs her hast und welche linker options du benutzt hast.<br/>
<br/>
Ich bekomm auch immer den "Couldn't create mixer lock" Fehler.<br/>
Ach und welche Firmware hast du?<br/>
Kann es daran liegen?<br/>
<br/>
MfG<br/>
IceOnly</r>
 
Zusammenfassung:

Ich habe mir aus devkitGP2X-win32.exe, arm-linux-sdl-config.rar und theoddbot-libs-open2x-soft-float-beta2.tar.gz ein neues C:\devkitGP2X gebaut (so wie es in dem GP2X-UserGuide V 1.2 beschrieben steht, mit dessen Quellen). Das alte C:\devkitGP2X hatte ich vorher umbenannt. Dadurch brauchte ich DEVcpp nichts anzupassen.

Meine Linker-Optionen in DevCPP sehen so aus:
Code:
<i>
</i>-lSDLmain -lSDL_mixer -lvorbisidec -lmikmod -lSDL_ttf -lm -lfreetype -lz -lSDL -lpthread -static

Die Reihenfolge ist hier von besonderer Bedeutung, denn sonst hagelt es 'undefined reference'-Fehler.

Ist zwar zuviel drin (z.B. TTF-Krams), aber es schadet nichts.

In DEVcpp unter Werkzeuge / Compiler-Optionen / Verzeichnisse + Programme habe ich alles so eingestellt (gelassen), wie im Wiki zur DEVcpp-Einrichtung beschrieben.

Problem scheint jetzt nur folgendes zu sein: luteijn vermutete bereits, dass der GP2X mit seinen SDL-Libs irgendwas vorinitialisiert und deshalb der Mixer von statisch gelinkten Libs nicht mehr funktioniert (so ich ihn richtig verstanden habe). Nach einem Update auf die FW 1.2.0 habe ich deshalb die GP2X-SDL-Libs nicht installiert, sondern erst mal meine Proggs gestestet. Und der berüchtigte Fehler (Couldn't create mixer lock) kam nicht mehr. Dafür funktionieren jetzt anscheinend keine Games mehr, welche die GP2X-SDL-Libs brauchen.

Das ist für mich jetzt erst mal zweitrangig, auch wenn es für die Verbeitung der Ports hinderlich ist. Da wird schon eine Lösung kommen, da bin ich mir sicher(!?).

Hth...

Greetz
BNrXYZ

P.S. Noiz2Sa in der älteren Version funktioniert noch tadellos (wird nur mit einem seg-fault beendet bei quit), also wohl auch statisch gelinkt. Neue Version noch nicht getestet, aber das kommt noch :)
 
Elektranox said:
warum können die nicht den mixer teil mit in die SDL fürn GP2X machen? dann müsste man gar nicht mehr statisch linken :)

Die SDL_mixer ist nicht der grund fürs statisch linken sondern die libgcc

MfG
IceOnly
 
Dank der hilfe von Best hat Vectoroids nun sound. Aber total instabil.
Ist der einfach überfordert?
Oder muss ich etwas beachten?

MfG
IceOnly
 
Hallo IceOnly,

etwas wenig input, oder? :wink:

Greetz
BNrXYZ

P.S. Und ich bedanke mich nochmals ausdrücklich bei luteijn. Ohne ihn hätte ich mich nie so tief in die Sache mit dem Sound reingekniet.
 
BestNrXYZ said:
etwas wenig input, oder? :wink:

Hast ja recht, also die BG musik geht, die triebwerk auch aber beim schiessen klingts total schräg und das ruckelt total :(
Aber warum friesst sound soviel resourcen?

Hier mal der link zum neusten Source vielleicht könnt ihr mir ja helfen (enthält auch eine fertige gpe datei). *LINK*
@ED: noch nicht fürs archive bereit :wink:
P.S. Und ich bedanke mich nochmals ausdrücklich bei luteijn. Ohne ihn hätte ich mich nie so tief in die Sache mit dem Sound reingekniet.

Ich mich auch!

MfG
IceOnly
 
IceOnly said:
...also die BG musik geht, die triebwerk auch aber beim schiessen klingts total schräg und das ruckelt total :(
Aber warum friesst sound soviel resourcen?

Du setzt die Audiobuffers etwas niedrig an:
chunksize is the size of each mixed sample. The smaller this is the more your hooks will be called. If make this too small on a slow system, sound may skip.

Quelle: http://www.libsdl.org/projects/docs/SDL_mixer/SDL_mixer.html#SEC9

Für Sound und Musik zusammen etwas wenig imho...

Setze mal in
if (Mix_OpenAudio(22050, AUDIO_S16, 1, 256) < 0)
die 256 auf 4096 zum testen.

Give it a try :wink:

Greetz und Hth
BNrXYZ
 
BestNrXYZ said:
Give it a try :wink:

Hab ich :)
So der BG Sound lässt sich nun garnicht mehr beinträchtigen.
Aber die Schïsse höhr man nur ab und zu :(

MfG
IceOnly
 
Back
Top