Autor |
Beitrag |
beastofchaos
      
Beiträge: 247
Erhaltene Danke: 4
|
Verfasst: 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 Narses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Sa 21.05.2011 um 23:31
|
|
glotzer
      
Beiträge: 393
Erhaltene Danke: 49
Win 7
Lazarus
|
Verfasst: 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 
      
Beiträge: 247
Erhaltene Danke: 4
|
Verfasst: 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
      
Beiträge: 393
Erhaltene Danke: 49
Win 7
Lazarus
|
Verfasst: 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 
      
Beiträge: 247
Erhaltene Danke: 4
|
Verfasst: 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:
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
      
Beiträge: 1085
Erhaltene Danke: 53
WinXP, Win7, Win10
Delphi 7 Enterprise, XE
|
Verfasst: 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:
Delphi-Quelltext 1: 2: 3: 4: 5:
| var volume: real; BASS_ChannelGetAttribute(FBackgroundStream, BASS_ATTRIB_VOL, Volume) BASS_ChannelSetAttribute(FBackgroundStream, BASS_ATTRIB_VOL, volume) |
Pause ist
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
      
Beiträge: 393
Erhaltene Danke: 49
Win 7
Lazarus
|
Verfasst: So 22.05.11 00:20
_________________ ja, ich schreibe grundsätzlich alles klein und meine rechtschreibfehler sind absicht
|
|
ALF
      
Beiträge: 1085
Erhaltene Danke: 53
WinXP, Win7, Win10
Delphi 7 Enterprise, XE
|
Verfasst: So 22.05.11 00:31
Oh ja, da wollte ich auch noch nen Vorschlag machen
@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
Gruss ALf
_________________ Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
|
|
beastofchaos 
      
Beiträge: 247
Erhaltene Danke: 4
|
Verfasst: 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:
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
      
Beiträge: 1085
Erhaltene Danke: 53
WinXP, Win7, Win10
Delphi 7 Enterprise, XE
|
Verfasst: So 22.05.11 00:47
Delphi-Quelltext 1:
| Bass_ChannelPause(FBackgroundStream); |
damit geht dein aktueller Straem/handel, Sound in die Pause!
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 
      
Beiträge: 247
Erhaltene Danke: 4
|
Verfasst: So 22.05.11 01:03
|
|
glotzer
      
Beiträge: 393
Erhaltene Danke: 49
Win 7
Lazarus
|
Verfasst: 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
      
Beiträge: 1085
Erhaltene Danke: 53
WinXP, Win7, Win10
Delphi 7 Enterprise, XE
|
Verfasst: 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 
      
Beiträge: 247
Erhaltene Danke: 4
|
Verfasst: So 22.05.11 01:20
ALF hat folgendes geschrieben : | 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
@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
      
Beiträge: 1085
Erhaltene Danke: 53
WinXP, Win7, Win10
Delphi 7 Enterprise, XE
|
Verfasst: So 22.05.11 01:31
beastofchaos hat folgendes geschrieben : | @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 
      
Beiträge: 247
Erhaltene Danke: 4
|
Verfasst: 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
      
Beiträge: 1085
Erhaltene Danke: 53
WinXP, Win7, Win10
Delphi 7 Enterprise, XE
|
Verfasst: Mo 23.05.11 21:38
Ich will ja nicht unhöfflich sein, aber hast Du nun die BASS-Hilfe oder nicht!?
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| var position: QWORD;
position:= BASS_ChannelGetPosition(FBackgroundStream, BASS_POS_BYTE);
BASS_ChannelSetPosition(FBackgroundStream, position, BASS_POS_BYTE); |
beastofchaos hat folgendes geschrieben : | ...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 
      
Beiträge: 247
Erhaltene Danke: 4
|
Verfasst: Mo 23.05.11 21:50
ALF hat folgendes geschrieben : | 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
      
Beiträge: 1085
Erhaltene Danke: 53
WinXP, Win7, Win10
Delphi 7 Enterprise, XE
|
Verfasst: Mo 23.05.11 22:09
beastofchaos hat folgendes geschrieben : | 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
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 
      
Beiträge: 247
Erhaltene Danke: 4
|
Verfasst: Mo 23.05.11 22:20
|
|