Ton ertönt nicht.

Posted By: hopfel

Ton ertönt nicht. - 03/09/10 20:32

Hallo liebe Community laugh

Ich bin am Schreiben eines Programms, welches beim Drücken einer Taste auf der Tastatur einen Ton ertönen lassen soll. Ich benutzte snd_play, weil es OGG-Sounds sind (Es müssen OGG-Sounds sein, da diese schnell geladen werden müssen) Nun ertönen die Töne aber völlig willkührlich, manchmal ertönen sie, manchmal nicht...
Ich habe das (Zum Testen erst einmal für die Zahlenreihe auf der Tastatur) so definiert:

Click to reveal..
Am Anfang vom Script:
Code:
SOUND* tas1  = "t1.OGG";


In einer Funktion:
Code:
snd_play(tas1,100,NULL);



Der Code drumrum kann kaum Schuld am Problem sein, denn wenn ich schreibe:

Click to reveal..
Code:
media_play("t1.OGG",NULL,100);



funktioniert es bestens und ohne Probleme; nur funktioniert das auf anderen Computern nicht mehr, ohne einen Treiber installieren zu müssen. (Und die Symbolleiste wird mit der Zeit sehr lang, da viele Sounds abgespielt werden)
Also ist das keine Option.
Weiss wer was ich falsch gemacht habe?
Bei anderen Spielen bei denen ich snd_play benutzt habe hats immer gut funktioniert smirk

Danke für eure Hilfe,
Hopfel
Posted By: Tempelbauer

Re: Ton ertönt nicht. - 03/09/10 20:42

weiß jetzt nicht obs daran liegt, aber im manual steht als beispiel snd_play(tas1,100,0);
ich würds mit 0 anstelle von NULL versuchen
Posted By: hopfel

Re: Ton ertönt nicht. - 03/09/10 20:55

Hm... Ne hilft nichts. frown Mit der Balance sollte es aber doch eh nichts zu tun haben (oder? ^^)
Posted By: jane

Re: Ton ertönt nicht. - 03/09/10 23:55

Habs mal mit der im source-Ordner liegenden goal.ogg probiert, so
funktionierts, zu mindest bei mir:

var ton1_handle_n;
SOUND* ton1 = "goal.ogg";

function tastenton1()
{
while(1)
{
while(snd_playing(ton1_handle_n)) { wait(1); }
ton1_handle = snd_play(ton1, 100, 0);
if(!key_t){ snd_stop(ton1_handle_n; )}
wait(1);
}
}

und z.B. in der main:

on_t = tastenton1;

Hoffe ich konnte helfen.
Posted By: hopfel

Re: Ton ertönt nicht. - 03/10/10 12:05

Wie schon gesagt, am Code drumrum kann es nicht liegen, da es mit media_play problemlos funktioniert...
Es funzt auch nicht mit anderen Sounds (von anderen Spielen bei denen es funktionierte)

Ich schreibe aber am besten doch mal den ganzen Code rein:

Code:
#include <acknex.h>
#include <sounds.c>

SOUND* tas1  = "t1.OGG";
SOUND* tas2  = "t2.OGG";
SOUND* tas3  = "t3.OGG";
SOUND* tas4  = "t4.OGG";
SOUND* tas5  = "t5.OGG";
SOUND* tas6  = "t6.OGG";
SOUND* tas7  = "t7.OGG";
SOUND* tas8  = "t8.OGG";
SOUND* tas9  = "t9.OGG";
SOUND* tas10 = "t10.OGG";

function ton(var moise)
{
switch (moise){  
case 2:    snd_play(tas1,100,0);   break;  
case 3:    snd_play(tas2,100,0);   break;  
case 4:    snd_play(tas3,100,0);   break; 
case 5:    snd_play(tas4,100,0);   break;  
case 6:    snd_play(tas5,100,0);   break;  
case 7:    snd_play(tas6,100,0);   break; 
case 8:    snd_play(tas7,100,0);   break;  
case 9:    snd_play(tas8,100,0);   break;
case 10:   snd_play(tas9,100,0);   break; 
case 11:   snd_play(tas10,100,0);  break;
default:   beep();
}}


function main()
{
video_set(640,480,NULL,2);
video_window(0,vector(640,480,0),1,"Taster");
tester();
var scanlast=0;

while(1)
{
while(key_lastpressed==scanlast){wait(1);} //wird eine andere Taste gedrückt

ton(key_lastpressed); //spiele Ton ab

scanlast=key_lastpressed;

wait(1);}}


Posted By: Progger

Re: Ton ertönt nicht. - 03/10/10 13:23

Versuch mal den code zu publishen ob es dann funktioniert.
Beim mir muss ich den debug button drücken um überhaupt einen sound zu hören ):
Vielleicht ist es bei dir auch so
MFG progger
Posted By: jane

Re: Ton ertönt nicht. - 03/10/10 13:52

Habe das Script bei mir getestet, mit unterschiedlichen Sound-Dateien
(ogg, wav), funktioniert einwandfrei. Könnte also an den oggs t1 - t10
liegen.

Allerdings hatte ich die #include <sounds.c> sowie die tester();
ausgeklammert und die lite.c und die default.c includet.
Posted By: hopfel

Re: Ton ertönt nicht. - 03/10/10 13:56

Ich hab mich jetzt schlussendlich doch entschieden das wav-format zu benutzen, hat zwar weniger Qualität und braucht länger zum laden, dafür funzt es jetzt immer und überall <.< Aber wenn ich wieder mal dieses Problem haben sollte, probiere oben besagtes aus grin
Danke an alle die geantwortet haben :]
© 2024 lite-C Forums