Autor Beitrag
beastofchaos
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 247
Erhaltene Danke: 4



BeitragVerfasst: Sa 21.05.11 22:45 
Hallo Leute,
seit Lägerem befasse ich mich nun mit der Bass.dll. Nun will ich bei meinem Progamm auch die Lautstärke regulieren. 2 Probleme:

Wie ermittel ich die Lautsträke - habe die bass-unit durchgeschaut und die Funktion BASS_GetVolume gefunden. Die gibt aber iwie nur "-1" aus... Wisst ihr da was?

2.Problem: Ich habe im Hintergrund per Media player ein Lied laufen, will aber die Lautstärke des Programms verringern - nicht "global" auf dem ganzen Computer und damit auch meine Musik im Hintergrund. Wenn ich aber BASS_SetVolume() benutze, passiert genau das... Nämlich alles wird leiser :/

Hoffe auf Hilfe, Gruß Thomas ;)


Moderiert von user profile iconNarses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Sa 21.05.2011 um 23:31
glotzer
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 393
Erhaltene Danke: 49

Win 7
Lazarus
BeitragVerfasst: Sa 21.05.11 22:57 
naja, wenn dann musst du ALLES mit der bass.dll machen, oder eben garnix

_________________
ja, ich schreibe grundsätzlich alles klein und meine rechtschreibfehler sind absicht
beastofchaos Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 247
Erhaltene Danke: 4



BeitragVerfasst: Sa 21.05.11 23:20 
Na klar mach ich alles mit der Bass.dll, aber was ich doof finde, dass sich das auch auf andere Programm (wie den Windows Meda Player) auswirkt...

Außerdem geht das mit GetVolume inzwischen - war, glaub ich, vor dem LoadBass ^^
glotzer
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 393
Erhaltene Danke: 49

Win 7
Lazarus
BeitragVerfasst: Sa 21.05.11 23:47 
oh, sorry hat sich so angehört als würdest du mit dem mediaplayer im programm was abspielen

_________________
ja, ich schreibe grundsätzlich alles klein und meine rechtschreibfehler sind absicht


Zuletzt bearbeitet von glotzer am So 22.05.11 00:18, insgesamt 1-mal bearbeitet
beastofchaos Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 247
Erhaltene Danke: 4



BeitragVerfasst: Sa 21.05.11 23:57 
:))

So, ich hab noch ein Problem - die Bass.dll mag mich nicht^^

Ich hab einen Button zum Musik pausieren eingebaut. Quelltext sieht so aus:
ausblenden Delphi-Quelltext
1:
2:
if (Bass_ChannelIsActive(FBackgroundStream) = BASS_ACTIVE_PLAYING) then
    BASS_Pause;


Das ist alles - Musik stoppt sogar, aber das Programm hängt sich automatisch auf - auch ohne die Abfrage... :/
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 21.05.11 23:58 
Hast Du ja schon gefunden getvolume und das andere ist setvolume
die werte sind 0 bis 1. also 0,001 ist leise 0,5 ist die halbe lautstärke
Genauer gesagt:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
var
  volume: real; //<--wert von 0 bis 1, also 0.001 bis 1 zb.

BASS_ChannelGetAttribute(FBackgroundStream, BASS_ATTRIB_VOL, Volume)
BASS_ChannelSetAttribute(FBackgroundStream, BASS_ATTRIB_VOL, volume)

Pause ist
ausblenden Delphi-Quelltext
1:
Bass_ChannelPause(FBackgroundStream), wenn ich mich recht erinnere.					


Gruss ALf

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

Win 7
Lazarus
BeitragVerfasst: So 22.05.11 00:20 

_________________
ja, ich schreibe grundsätzlich alles klein und meine rechtschreibfehler sind absicht
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 22.05.11 00:31 
user profile iconglotzer hat folgendes geschrieben Zum zitierten Posting springen:
[eigenwerbung][url=www.delphi-forum.de/.../url][/eigenwerbung]
Oh ja, da wollte ich auch noch nen Vorschlag machen :wink:

@beastofchaos:
Ansonsten gibt es Die Bass-Help und die Bass-Demos. Sollte man sich unbedingt anschauen!
Vielleicht hilft auch das www.delphi-treff.de/...ck-und-vorbereitung/

Ansonsten gibt es sehr viele Infos auch hier im Forum, wenn man mal die Suche benutzt :wink:

Gruss ALf

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



BeitragVerfasst: So 22.05.11 00:43 
Werde ich mir morgen auf jeden Fall mal durchlesen ( das Tut zu bass.dll ).

@Glotzer: Hab grad deinen Thread zur eigenen Bass-Klasse angeschaut - in deiner procedure Pause - siehts auch so aus:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TBassSound.Pause;
begin
  if Handle = 0 then NotLoadedError;
  BASS_ChannelPause(Handle);
  BassError(BASS_ErrorGetCode);
end;


Bloß funktioniert bei mir Pause und auch ChannelPause nicht - also würd mir deine Prozedur auch iwie nichts bringen - vermut ich... :/ was mach ich falsch...-_-

Gruß
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 22.05.11 00:47 
ausblenden Delphi-Quelltext
1:
Bass_ChannelPause(FBackgroundStream);					

damit geht dein aktueller Straem/handel, Sound in die Pause!

ausblenden Delphi-Quelltext
1:
Bass_ChannelPlay(FBackgroundStream);					

spielst Du ihn wieder ab!

Gruss alf

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



BeitragVerfasst: So 22.05.11 01:03 
user profile iconALF hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
Bass_ChannelPause(FBackgroundStream);					

damit geht dein aktueller Straem/handel, Sound in die Pause!

ausblenden Delphi-Quelltext
1:
Bass_ChannelPlay(FBackgroundStream);					

spielst Du ihn wieder ab!

Gruss alf


Das ist mir doch klar - Mir gehts doch darum, dass mein Programm sich aufhängt, wenn ich diese Prozedur aufrufe... :/
glotzer
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 393
Erhaltene Danke: 49

Win 7
Lazarus
BeitragVerfasst: So 22.05.11 01:09 
spielst du einen stream aus dem Netz ab? falls ja musst du Bass_ChannelStop nehmen.

_________________
ja, ich schreibe grundsätzlich alles klein und meine rechtschreibfehler sind absicht
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 22.05.11 01:11 
BASS_Pause();
Stops the output, pausing all musics/samples/streams
Return value
If successful, then TRUE is returned, else FALSE is returned. Use BASS_ErrorGetCode to get the error code.

Hst Du auch die Errrorbehandlung mit eingebaut?
Sieht ja so aus das bei der inizialisierung was nicht stimmt!

Währe also mehr infos wichtig!
Alles andere ist Raten.

Gruss ALf

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



BeitragVerfasst: So 22.05.11 01:20 
user profile iconALF hat folgendes geschrieben Zum zitierten Posting springen:
BASS_Pause();
Stops the output, pausing all musics/samples/streams
Return value
If successful, then TRUE is returned, else FALSE is returned. Use BASS_ErrorGetCode to get the error code.

Hst Du auch die Errrorbehandlung mit eingebaut?
Sieht ja so aus das bei der inizialisierung was nicht stimmt!

Währe also mehr infos wichtig!
Alles andere ist Raten.

Gruss ALf


@glotzer: Also, ich spiel ganz normal aus einem Unterordner ein Lied ab - kA, was du sonst mit Netz meisnt :P

@ALF: Plötzlich geht bei mir ChannelPlay - das ich bei PLAY eine Errorbehandlung brauche - ist ja ätzend xD

Da werd ich wohl lieber jeden einzelnen Stream pausieren, da es jetzt geht ;) Morgen werdet ihr wieder von mir höen, weil ich dann das nächste Problem mit Dateien kopieren habe xD
(CopyFile funktioniert nicht trotz richtiger Pfade)


Gute Nacht ;)
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 22.05.11 01:31 
user profile iconbeastofchaos hat folgendes geschrieben Zum zitierten Posting springen:
@ALF: Plötzlich geht bei mir ChannelPlay - das ich bei PLAY eine Errorbehandlung brauche - ist ja ätzend xD
Darum auch die Bass-Hilfe nehmen. hat schon seinen Grund!

Bool BASS_ChannelPlay(DWORD handle, BOOL restart);

Zitat:
Return value
If successful, TRUE is returned, else FALSE is returned. Use BASS_ErrorGetCode to get the error code.

Error codes
BASS_ERROR_HANDLE handle is not a valid channel.
BASS_ERROR_START The output is paused/stopped, use BASS_Start to start it.
BASS_ERROR_DECODE The channel is not playable, it's a "decoding channel".
BASS_ERROR_BUFLOST Should not happen... check that a valid window handle was used with BASS_Init.
BASS_ERROR_NOHW No hardware voices are available (HCHANNEL only). This only occurs if the sample was loaded/created with the BASS_SAMPLE_VAM flag and BASS_VAM_HARDWARE is set in the sample's VAM mode, and there are no hardware voices available to play it.

Ich glaube das sagt alles Warum man es machen soll!

Gruss ALf

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



BeitragVerfasst: Mo 23.05.11 20:24 
Ihr wisst ja, dass ich das Problem auch mit Bass_Stop habe. Ich dachte, ich könnte das Problem auch mit Bass_ChannelStop lösen - leider hängt sich das Programm wieder auf.

Muss ich bei ChannelStop vll. auch eine Fehlerbehandlung mitführen? Und wie würde das dann z.B. aussehen?


edit:

Ok, Problem geklärt - ein Timer versucht dann nämlich das Lied abzuspielen und wenn die gegen arbeiten, kann das nur hängen xD Dazu fällt mir aber auf, dass kein Utnerschied ziwschen ChannelStop und ChannelPlay liegt. Wie kann ich denn das Lied auf Sekudne 0 setzen?
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 23.05.11 21:38 
Ich will ja nicht unhöfflich sein, aber hast Du nun die BASS-Hilfe oder nicht!?
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
var
position: QWORD;


position:= BASS_ChannelGetPosition(FBackgroundStream, BASS_POS_BYTE);//<--lesen der Position


BASS_ChannelSetPosition(FBackgroundStream, position, BASS_POS_BYTE);//<--setzten der Position


user profile iconbeastofchaos hat folgendes geschrieben Zum zitierten Posting springen:
...ein Timer versucht dann nämlich das Lied abzuspielen und wenn die gegen arbeiten, kann das nur hängen xD Dazu fällt mir aber auf, dass kein Utnerschied ziwschen ChannelStop und ChannelPlay liegt.


Wieso spielt ein Timer deine Sounds ab????

Was für ein unterschied??

ChannelStop, stoppt die Musik
ChannelPlay startet die Musik

Warum soll das kein unterschied sein????
Gruss ALf

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



BeitragVerfasst: Mo 23.05.11 21:50 
user profile iconALF hat folgendes geschrieben Zum zitierten Posting springen:
Ich will ja nicht unhöfflich sein, aber hast Du nun die BASS-Hilfe oder nicht!?

Wieso spielt ein Timer deine Sounds ab????

Was für ein unterschied??

ChannelStop, stoppt die Musik
ChannelPlay startet die Musik

Warum soll das kein unterschied sein????
Gruss ALf


Mit einem Timer prüfe ich, ob das Lied zu Ende ist und für den Fall wird per Random ein neues Lied gestartet.

Naja, mit ChannelPause kann ich auch pausieren xD meinte natürlic hden Utnerschied zwischen Stop und Pause. Und danke für die Prozedur und nein, ich habs heute ncoht nciht geschafft. Ich werd jetzt zu dem Thema nur etwas fragen, wenn ich die schon durchgelesen habe, ok? :)
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 23.05.11 22:09 
user profile iconbeastofchaos hat folgendes geschrieben Zum zitierten Posting springen:
Naja, mit ChannelPause kann ich auch pausieren xD meinte natürlic hden Utnerschied zwischen Stop und Pause.

Basshilfe
Zitat:

Stopping a user stream (created with BASS_StreamCreate) will clear its buffer contents. Use BASS_ChannelPause instead if you wish to stop a user stream and then resume it from the same point.

Ich kann so gut wie kein engl und habs verstanden das es da ein Unterschied gibt :wink:
Warum sollte es da also keinen Unterschied geben?
Gruss ALf

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



BeitragVerfasst: Mo 23.05.11 22:20 
user profile iconALF hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconbeastofchaos hat folgendes geschrieben Zum zitierten Posting springen:
Naja, mit ChannelPause kann ich auch pausieren xD meinte natürlic hden Utnerschied zwischen Stop und Pause.

Basshilfe
Zitat:

Stopping a user stream (created with BASS_StreamCreate) will clear its buffer contents. Use BASS_ChannelPause instead if you wish to stop a user stream and then resume it from the same point.

Ich kann so gut wie kein engl und habs verstanden das es da ein Unterschied gibt :wink:
Warum sollte es da also keinen Unterschied geben?
Gruss ALf



Das "resume it from the same point" macht aber auch ChannelStop, was mich halt verwirrt hat :) Kennst du doch sicher von Mediaplayer oder so, dass wenn du auf Stop (das Viereck) klickst, das Lied auf 0:00 zurück gestzt wird, aber das kann ich logisch auch manuell machen, also kein Problem mehr ;)