Autor Beitrag
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 29.04.11 17:05 
user profile icongalagher hat folgendes geschrieben Zum zitierten Posting springen:
sondern für beliebige viele Klangeffekte, die in meine exe-Datei als Ressource eingebunden sind und die ich bei Bedarf mit SndPlaySound lade.
Das Laden musst du dann schon über die Bass.dll machen, dafür ist die da. ;-)

Du kannst zum Beispiel über TResourceStreams die Ressourcen in den Speicher laden, dort bereit halten und deren Daten dann mit BASS_StreamCreate zum Abspielen nutzen.

Eine andere Möglichkeit gibt es nicht. Entweder du lässt die bass.dll alles machen, abspielen, Klangeffekte (Nachhall, ...) und Lautstärkeregelung oder du kümmerst dich je nach Betriebssystem um die Lautstärkeregelung, was aber erst ab Vista anwendungsbezogen funktioniert.
galagher Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2510
Erhaltene Danke: 44

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Fr 29.04.11 17:14 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Entweder du lässt die bass.dll alles machen, abspielen, Klangeffekte (Nachhall, ...) und Lautstärkeregelung oder du kümmerst dich je nach Betriebssystem um die Lautstärkeregelung, was aber erst ab Vista anwendungsbezogen funktioniert.
Ok, dann ist das klar, das es so halb-halb nicht geht.

Habe aber soeben hier -> entwickler-forum.de/showthread.php?t=27605 waveOutSetVolume entdeckt:
ausblenden Delphi-Quelltext
1:
waveOutSetVolume(0, MakeLong(iVolume, iVolume));					

Das ist anwendungsbezogen, aber funktioniert's auch unter Win7?
//Edit: doch nicht anwendungsbezogen :?

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!


Zuletzt bearbeitet von galagher am Sa 30.04.11 11:22, insgesamt 1-mal bearbeitet
ALF
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1085
Erhaltene Danke: 53

WinXP, Win7, Win10
Delphi 7 Enterprise, XE
BeitragVerfasst: Fr 29.04.11 17:19 
so geht das auch nicht.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
var
 chan1:  HSTREAM;//<----- diese Variable ist wichtig, sonnst geht es auch nicht mit bass.dll
 song: String;
....
....

song:= 'Deine SoundDatei';
chan1 := BASS_StreamCreateFile(False, pchar(song),00,
            BASS_MUSIC_STOPBACK {$IFDEF UNICODE} or BASS_UNICODE {$ENDIF});

Bass_ChannelPLay(chan1, false):
BASS_ChannelSetAttribute(chan1, BASS_ATTRIB_VOL, 1);//<-- je nach auflösung 0, 0.01, 0.02 bis 1


Willst du mehherer Songs zur gleichen Zeit abspielen, dann halt
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
chan1 := BASS_StreamCreateFile(False, pchar(song1),00,
            BASS_MUSIC_STOPBACK {$IFDEF UNICODE} or BASS_UNICODE {$ENDIF});
chan2 := BASS_StreamCreateFile(False, pchar(song2),00,
            BASS_MUSIC_STOPBACK {$IFDEF UNICODE} or BASS_UNICODE {$ENDIF});
chan3 := BASS_StreamCreateFile(False, pchar(song3),00,
            BASS_MUSIC_STOPBACK {$IFDEF UNICODE} or BASS_UNICODE {$ENDIF});

oder ein HSTREAM array einsetzen und über das Array weiter arbeiten.
und für jeden 'chan' kannst Du nun auch die lautstärke seperat regeln zusammen mischen oder mit effekten drauflegen!

aber steht ja auch in der Bass Hilfe mit drin. :wink:
Gruss Alf

_________________
Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
galagher Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2510
Erhaltene Danke: 44

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Fr 29.04.11 17:47 
user profile iconALF hat folgendes geschrieben Zum zitierten Posting springen:
so geht das auch nicht.
Aber wie in deinem Beispiel auch nicht!

user profile iconALF hat folgendes geschrieben Zum zitierten Posting springen:
aber steht ja auch in der Bass Hilfe mit drin. :wink:
Genau, und deshalb werde ich da mal (aber nicht jetzt :mrgreen: ) durchsteigen, das wird sonst nichts.

Danke an euch!

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
ALF
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1085
Erhaltene Danke: 53

WinXP, Win7, Win10
Delphi 7 Enterprise, XE
BeitragVerfasst: Fr 29.04.11 18:09 
user profile icongalagher hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconALF hat folgendes geschrieben Zum zitierten Posting springen:
so geht das auch nicht.
Aber wie in deinem Beispiel auch nicht!

Dann dürfte mein ganzer mxplayer nicht funktionieren :wink:

Ich gehe davon aus das du
ausblenden Delphi-Quelltext
1:
2:
 if not BASS_Init(1441000, Handle, nilthen
      Error('Error initializing audio!');
im Create der Form schon drin hast!
sonnst funct natürlich gar nix.

Gruss ALf

_________________
Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
galagher Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2510
Erhaltene Danke: 44

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Fr 29.04.11 18:24 
user profile iconALF hat folgendes geschrieben Zum zitierten Posting springen:
Ich gehe davon aus das du
ausblenden Delphi-Quelltext
1:
2:
 if not BASS_Init(1441000, Handle, nilthen
      Error('Error initializing audio!');
im Create der Form schon drin hast!
Ja, jetzt schon! :oops:
Ok, und wenn ich dich noch fragen darf: Wie lade ich die Sounds nicht als Datei, sondern als Ressource meiner exe?

Ich habe also aus einer Datei sound.rc eine sound.res gemacht und diese mit {$R sound.res} eingebunden. Nun möchte ich mit bass eine dieser Ressourcen abspielen. Wie mache ich das?

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 29.04.11 18:48 
Wie ich schrieb:
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Du kannst zum Beispiel über TResourceStreams die Ressourcen in den Speicher laden, dort bereit halten und deren Daten dann mit BASS_StreamCreate zum Abspielen nutzen.
Das habe ich noch nie genutzt, sieht aber rein von den Parametern der Funktion richtig aus (keine Zeit in die Hilfe zu schauen grad). ;-)
ALF
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1085
Erhaltene Danke: 53

WinXP, Win7, Win10
Delphi 7 Enterprise, XE
BeitragVerfasst: Fr 29.04.11 19:49 
Hier hast Du mich natürlich auch auf den linken Fuss erwischt :oops:
Verwendet selber hab ich es nie (brauche es nicht).
Wie das nun ist wenn eine fertige wav/mp3 im speicher ist(incl header usw)?

Wenn ich mich aber richtig erinnerre musst Du die calback funktion Filereadproc oder streamproc benutzen, da Du die Daten ja schon im Speicher hast.
Also das was @jaenicke schon gesagt hat, mit TResourceStreams, und den erhaltenen Buffer übergibst Du an die funktion.

Getestet hab ich leider selber noch nicht.

Dazu müsstest Du aber BASS_StreamCreate oder BASS_StreamCreateFileUser benutzen.

Denn BASS_StreamCreateFile geht nur mit Dateien.


Gruss ALf

_________________
Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
galagher Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2510
Erhaltene Danke: 44

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Fr 29.04.11 20:03 
user profile iconALF hat folgendes geschrieben Zum zitierten Posting springen:
Dazu müsstest Du aber BASS_StreamCreate oder BASS_StreamCreateFileUser benutzen.
Das ist, wenn ich mir die Beispiel-pas ansehe, mehr verwirrend als hilfreich. Ich meine, dass es langsamer ist, wenn die Datei erst von der Platte gelesen werden muss.
Da kann auf im Speicher gehaltene Daten natürlich schneller zugegriffen werden, ich möchte verhindern, dass eine sichtbare Pause im Programm entsteht.

Aber ich blicke da nicht durch.

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 29.04.11 20:39 
Vom Handy aus, dehalb nur kurz:
Die von mir genannte Funktion bekommt eine Callback Funktion als Parameter. Darin musst du die Daten bereitstellen.

Am einfachsten lade die Daten mit Hilfe eines TResourceStreams in einen TMemoryStream und lasse den offen.

In der Callback Funktion kannst du die Daten einfach aus dem Stream holen und liefern.
galagher Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2510
Erhaltene Danke: 44

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Fr 29.04.11 20:47 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Vom Handy aus, dehalb nur kurz:
Die von mir genannte Funktion bekommt eine Callback Funktion als Parameter. Darin musst du die Daten bereitstellen.

Am einfachsten lade die Daten mit Hilfe eines TResourceStreams in einen TMemoryStream und lasse den offen.

In der Callback Funktion kannst du die Daten einfach aus dem Stream holen und liefern.

Ist wirklich toll von euch, wie ihr mir helfen wollt, aber ich verstehe nur Bahnhof. Muss mich zuerst mit den Begriffen "TResourceStream", "TMemoryStream", "Callback" auseinandersetzen (was ist das? Wie wendet man es an?), und dann versuchen, daraus was zu machen.

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 29.04.11 21:00 
TResourceStream: Laden von Ressourcen aus der Exe, TMemoryStream: ein Stream mit Daten, die im Speicher liegen, die beiden sollten kein Problem sein.

Ein Callback dient dazu, der Funktion eine eigene Funktion mitzugeben, die diese aufrufen kann. Zum Beispiel wie hier um weitere Daten abzufragen.

Such einmal nach Beispielen zu EnumWindows. Da gibt es auch einen Callback.
galagher Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2510
Erhaltene Danke: 44

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Sa 30.04.11 11:16 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
TResourceStream: Laden von Ressourcen aus der Exe, TMemoryStream: ein Stream mit Daten, die im Speicher liegen, die beiden sollten kein Problem sein.
Bis TResourceStream bin ich ja schon gekommen, nur was ich dann damit machen soll und wie es weiter geht, weiss ich nicht.

Das hat so keinen Sinn, der ganze Aufwand, nur um anwendungsbezogen laut/leise zu drehen, steht doch nicht dafür! Ich habe ja bereits ein Konzept, das Sounds abspielt (nur halt so laut, wie sie eben sind bzw. wie die Lautstärke systemweit eingestellt ist). Wenn die Lautstärkeregelung nicht einfach zu bewerkstelligen ist, ist sie Nebensache.

Ich komme mit bass.dll ohne deutsche Hilfe und Beispiele einfach nicht weiter.

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
ALF
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1085
Erhaltene Danke: 53

WinXP, Win7, Win10
Delphi 7 Enterprise, XE
BeitragVerfasst: Sa 30.04.11 12:27 
Vor Montag kann ich leider nicht weiter helfen (bin nicht home).
Aber Du wirst sehen das dies dann relativ überschbar bleibt.

Gruss Alf

_________________
Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
galagher Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2510
Erhaltene Danke: 44

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Sa 30.04.11 14:29 
user profile iconALF hat folgendes geschrieben Zum zitierten Posting springen:
Vor Montag kann ich leider nicht weiter helfen
Mein Projekt ist ja noch nicht beendet, also von daher... :mrgreen:

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
ALF
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1085
Erhaltene Danke: 53

WinXP, Win7, Win10
Delphi 7 Enterprise, XE
BeitragVerfasst: So 01.05.11 11:46 
So nun hab ich noch ein bisschen Zeit.
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
{je nach dem wieviel sounds Du einbindest, solltest Du diese evtl gleich mit ein TypArray umsetzten} 
  {TMySong = Array[1..bisx] of TResourceStream}
  {TMyMem = Array[1..bisx] of Pointer}
  {TMyPlay = Array[1..bisx] of HSTREAM}
  {TResourceId = Array[1..bisx] of Cardinal}
  {TMyVolume = Array[1..bisx] of float}
{vorteil ist klar, Du brauchst dann nur noch mit den index der Arrays arbeiten}
{vielleicht gibt es noch ne effizientere methode????}

{ab hier gilt es für einen song}
private
  mySong: TResourceStream;
  myMem: Pointer;
  myPlay: HSTREAM;
  myVolume: float;
  resourceID: Cardinal;

....
....
....

procedure TForm1.FormCreate(Sender: TObject);
begin
  resourceID:= 1;
  {leider kann man mit hinstance, bzw mySong nicht direct mit Bass arbeiten,}
  {wie es das mmsystem kann}
  {darum der Umweg über Speicherreservierung und das laden der Daten in den Speicher}
  mySong:= TResourceStream.CreateFromID(hInstance, ResourceID, 'SOUND');
  GetMem(myMem, mySong.Size);
  mysong.Read(myMem^, mySong.Size);

end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
   {nicht vergessen alles zum schluss frei zugeben}
   Bass_Stop;
   Bass_Free;
   FreeMem(myMem);
   mySong.Free;

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
    {dies währe mit dem mmsystem, aber da kannst Du nur volume Global regeln}
    //PlaySound(PChar(1),HInstance, snd_ASync or snd_Memory or snd_Resource);
    
    myVolume:= 0.2;//<-- von 0 bis 1
    myPlay:= BASS_StreamCreateFile(True, myMem , 0, mySong.Size, BASS_STREAM_AUTOFREE);
    BASS_ChannelSetAttribute(myPlay, BASS_ATTRIB_VOL, myVolume);
    BASS_ChannelPlay(myPlay, False)
end;
....
....
....

dies ist wie gesagt für ein song(wave Datei)
Hoffe nix übersehen zu haben!
Doch hab ich. :oops:
Es gibt keine Fehlerbehandlung!
- hier TResourceStream.Create (Try block)
- und alles was mit Bass gemacht wird(steht in der Help!


Mit der bass kannst Du nun noch links, rechts, souround(7.1) ansteuern um für dein Spiel schöne effekte zu machen 8)

Gruss Alf

Ps: Bin leider kein Profi um das evtl effektiver oder besser zu machen!
Da beneide ich alle die, die das können.

_________________
Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
turboPASCAL
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 193
Erhaltene Danke: 1

Win XP / Vischda
D6 PE / D2005 PE
BeitragVerfasst: So 01.05.11 18:44 
Ich habe mir eine kleine Classe gebastelt die den Umgang mit der Bass.dll ein wenig erleichtert.

Im Demo schaut es dann so aus:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, Dynamic_Bass24, SoundFX, XPMan, StdCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    TrackBar1: TTrackBar;
    TrackBar2: TTrackBar;
    TrackBar3: TTrackBar;
    Label1: TLabel;
    Label2: TLabel;
    Button4: TButton;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure ButtonsClick(Sender: TObject);
    procedure TrackBar1Change(Sender: TObject);
    procedure TrackBar2Change(Sender: TObject);
    procedure TrackBar3Change(Sender: TObject);
  private
    { Private-Deklarationen }
    SndFX: TSndFX;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  // yes, sounds...
  SndFX := TSndFX.Create;
  try
    SndFX.SetChannels(4);
    SndFX.LoadSndFromResource(hInstance, MAKEINTRESOURCE(1), RT_RCWAVE, 0);
    SndFX.LoadSndFromResource(hInstance, MAKEINTRESOURCE(2), RT_RCWAVE, 1);
    SndFX.LoadSndFromResource(hInstance, MAKEINTRESOURCE(3), RT_RCWAVE, 2);
    SndFX.LoadSndFromResource(hInstance, MAKEINTRESOURCE(1), RT_RCDATA, 3);

    SndFX.LoadSndFromFile(PCHAR(ExtractFilePath(ParamStr(0))+'\music.ogg'), 4, BASS_SAMPLE_LOOP);
    SndFX.SetChannelVol(425);
    SndFX.PlayChannel(4);

    TrackBar1.Position := 25;
  except
    on Exception do Exception.CreateFmt('Zonk! %s', ['Fehler bei SndFX.Create']);
  end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  if ASSIGNED(SndFX) then SndFX.Free;
end;

procedure TForm1.ButtonsClick(Sender: TObject);
begin
  if ASSIGNED(SndFX) then
    case (Sender as TButton).Tag of
      10: SndFX.PlayChannel(0);
      20: SndFX.PlayChannel(1);
      30: SndFX.PlayChannel(2);
      40: SndFX.PlayChannel(3);
    end;
end;

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
  SndFX.SetChannelVol(4, TrackBar1.Position);
end;

procedure TForm1.TrackBar2Change(Sender: TObject);
begin
  if ASSIGNED(SndFX) then
    SndFX.SetChannelVol(2, TrackBar2.Position);
end;

procedure TForm1.TrackBar3Change(Sender: TObject);
begin
  if ASSIGNED(SndFX) then
    SndFX.SetGlobalVol(TrackBar3.Max - TrackBar3.Position);
end;

end.
Einloggen, um Attachments anzusehen!
_________________
Nein, ich bin nicht der turboPASCAL aus der DP, ich seh nur so aus... :P
galagher Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2510
Erhaltene Danke: 44

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Mo 02.05.11 10:39 
@user profile iconALF:
mySong:= TResourceStream.CreateFromID(hInstance, ResourceID, 'SOUND'); verursacht eine Zugriffsverletzung.
Aber vielleicht kriege ich es ja doch noch hin.

@user profile iconturboPASCAL:
SndFX.LoadSndFromFile(PCHAR(ExtractFilePath(ParamStr(0))+'\music.ogg'), 4, BASS_SAMPLE_LOOP); Damit wird ja eine Datei geladen, genau das möchte ich nicht, sondern Sounds, die Resourcen sind, nutzen!

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
ALF
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1085
Erhaltene Danke: 53

WinXP, Win7, Win10
Delphi 7 Enterprise, XE
BeitragVerfasst: Mo 02.05.11 11:21 
user profile icongalagher hat folgendes geschrieben Zum zitierten Posting springen:
@user profile iconALF:
mySong:= TResourceStream.CreateFromID(hInstance, ResourceID, 'SOUND'); verursacht eine Zugriffsverletzung.
Aber vielleicht kriege ich es ja doch noch hin.

Das hängt wahrscheinlich davon ab was Du einbindest (Wave oder mp3).
Bzw was Du hierfür stehen hast 'SOUND' oder 'WAVE' oder 'Musik' etc. (wenn Du wave format verwendest)

user profile icongalagher hat folgendes geschrieben Zum zitierten Posting springen:
@user profile iconturboPASCAL:
SndFX.LoadSndFromFile(PCHAR(ExtractFilePath(ParamStr(0))+'\music.ogg'), 4, BASS_SAMPLE_LOOP); Damit wird ja eine Datei geladen, genau das möchte ich nicht, sondern Sounds, die Resourcen sind, nutzen!
Diese stelle must Du ja auch nicht benutzten :wink:
Sondern die anderen 4 Zeilen, wo er die aus resource laden tut (SndFX.LoadSndFromResource).
Er zeigt Dir aber damit, das beides genauso schnell ist!

PS. Nur so am Rande bemerkt.
Ob es nun Sinn macht die AudioDateien in eine res zu packen :gruebel: , wegen der Bass.DLL.
Die musst Du auch mit geben, wenn Du dein Spiel jemanden geben willst!
Man muss also nicht die Audiodateien unbedingt in die exe packen, sondern ganz normal im create deiner Form laden und abspielen dann, wenn du sie benötigst.
Geht also genauso schnell :!:
Vorteil ist der, willst Du sonnds hinzufügen/ändern, musst Du nicht jedesmal ein Res erzeugen.

Gruss Alf

_________________
Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
galagher Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2510
Erhaltene Danke: 44

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Mo 02.05.11 12:35 
user profile iconALF hat folgendes geschrieben Zum zitierten Posting springen:
Das hängt wahrscheinlich davon ab was Du einbindest (Wave oder mp3).
Bzw was Du hierfür stehen hast 'SOUND' oder 'WAVE' oder 'Musik' etc. (wenn Du wave format verwendest)
Ja, ich verwende WAVE, es funktioniert aber leider auch mit 'WAVE' nicht.

user profile icongalagher hat folgendes geschrieben Zum zitierten Posting springen:
Diese stelle must Du ja auch nicht benutzten :wink:
Sondern die anderen 4 Zeilen, wo er die aus resource laden tut (SndFX.LoadSndFromResource).
Er zeigt Dir aber damit, das beides genauso schnell ist!

Ich habe beide Codes einfach nur ausprobiert (also, ja, ich geb's zu, copy & paste :oops: ). Sehe mir das aber nochmal an.

user profile icongalagher hat folgendes geschrieben Zum zitierten Posting springen:
Ob es nun Sinn macht die AudioDateien in eine res zu packen :gruebel: , wegen der Bass.DLL.
Die musst Du auch mit geben, wenn Du dein Spiel jemanden geben willst!
Muss ich die in jedem Fall mitgeben, also auch dann, wenn ich die Sounds als Dateien lade?

user profile icongalagher hat folgendes geschrieben Zum zitierten Posting springen:
Man muss also nicht die Audiodateien unbedingt in die exe packen, sondern ganz normal im create deiner Form laden und abspielen dann, wenn du sie benötigst.
Stimmt, ja, alle zuerst laden, dann sind sie im Speicher und können jederzeit abgespielt werden.

Wie gesagt, ich schaue mir das alles noch genau an, habe aber jetzt im Moment keine Zeit. Melde mich dann wieder! Mal sehen, ob ich das hinbekomme!
Vielen Dank!

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!