AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

WaveMapper L/R

Ein Thema von TheMiller · begonnen am 30. Jun 2003 · letzter Beitrag vom 11. Jul 2003
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#1

WaveMapper L/R

  Alt 30. Jun 2003, 00:23
Hey, nochmal euer DJ!

Also, ich möchte zu einer best. Uhrzeit den LautstärkePegel für Waves auf 100% haben. Aber mein kleines süßes Delphi *würg* setzt mit diesem Code: if TimeToStr(now)>= '00:00then WaveOutSetVolume(wave_mapper,65000); Die Lautstärke immer auf 100%, jedoch die balance komplett nach rechts. Wie lautet der Code für den anderen Kanal?

Danke im Vorraus

Dj-SPM
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#2
  Alt 30. Jun 2003, 01:30
Moin DJ-SPM,

das hatte ich hier

waveOutSetVolume aus mmsystem
schon mal erklärt.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#3
  Alt 30. Jun 2003, 23:19
Also,
erstmal danke für deine Hilfe, aber so ehrlich gesagt verstehe ich das jetzt nicht. Könntest du dich vielleicht hinreißen lassen, mir noch ein wenig zu helfen *g*?
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#4
  Alt 30. Jun 2003, 23:42
Moin DJ-SPM,

könntest Du bitte mal erläutern was Du nicht daran verstehst.
'ist sonst etwas schwierig zu helfen.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#5
  Alt 1. Jul 2003, 12:36
Ja hi,

also ich hatte ja den normalen Wave_Mapper Code, wie ich ihn oben beschrieben habe. Hatte ja nur das Problem dass er automatisch 100% auf den rechten Speaker setzt. Daraufhin meintest du, dass ich den einen Code aus dem Link einfügen sollte, weiss aber nicht, wie ich ihn mit der DWORD implementieren soll.

Hoffe du weisst, was ich meine. Am einfachsten wäre es, du würdest mir mal einen Code geben, wie du meinst, dass er aussehen soll.

Vielen Danke für deine tolle Hilfe,

DJ-SPM
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#6
  Alt 1. Jul 2003, 15:05
Moin DJ-SPM,

ich hatte nicht gesagt, dass Du den Code von dort übernehmen kannst, sondern dass ich dort erklärt hatte, wie die Lautstärkeregelung für zwei Kanäle erfolgt.
Lies Dir das doch noch einmal in Ruhe durch.

Zitat von DJ-SPM:
Am einfachsten wäre es, du würdest mir mal einen Code geben, wie du meinst, dass er aussehen soll.
der steht ja in dem Thread
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#7

Re: WaveMapper L/R

  Alt 10. Jul 2003, 22:40
Hi Chris...

also, ich nahm mir deinen Ratschlag, den Thread in Ruhe durchzulesen, zu Herzen und muss einräumen ... das ich nur Bahnhof verstehe.

Könntest du mir den Code für den 2.Kanal mal geben und mir vielleicht danach erklären, denn ich denke, dass das so nichts wird... Das wäre nett..

Ciao

DJ-SPM
  Mit Zitat antworten Zitat
tommie-lie
(Gast)

n/a Beiträge
 
#8

Re: WaveMapper L/R

  Alt 10. Jul 2003, 23:11
Mensch Chris, jetzt spann' ihn doch wegen zwei Zeilen code nicht auf die Folter...

Delphi-Quellcode:
var
  NewVolume: Word;
begin
  NewVolume := 123; // gewünschte Lautstärke (0..65535)
  WaveOutSetVolume(wave_mapper, NewVolume or (NewVolume shl 16);
Und die Erklärung findet sich auch im SDK wieder:
Zitat von MS-PSDK:
dwVolume
New volume setting. The low-order word contains the left-channel volume setting, and the high-order word contains the right-channel setting. A value of 0xFFFF represents full volume, and a value of 0x0000 is silence.
Wie man jetzt Links und Rechts getrennt steuert, darfst du selber schreiben
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#9

Re: WaveMapper L/R

  Alt 10. Jul 2003, 23:21
Klasse!

Danke. Funzt einwandtfrei.

Bi szum nächsten Mal
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: WaveMapper L/R

  Alt 10. Jul 2003, 23:28
Moin DJ-SPM,

dann will ich mal versuchen, das zu erklären:

Der zweite Parameter von WaveOutSetVolume setzt sich eigentlich aus zwei Parametern zusammen, nämlich einem Wert für die Lautstärke des linken und einem für die Lautstärke des rechten Kanals.

Der Parameter ist ein DWORD, also ein 32 Bit Wert ohne Vorzeichen.
Dies kann man aber auch ansehen, als zwei unmittelbar aufeinander folgende Werte vom Typ WORD (16 Bit ohne Vorzeichen)
Das höherwertige WORD steht hierbei für die Lautstärke des rechten Kanals, das niederwertige für die des linken.

Der Wertebereich für ein WORD geht von 0 bis 65535 (Du hattest also nicht ganz Vollausschlag ) Hexadezimal wäre das FFFF.

In Deinem Beispiel, 65000, hätte nun also das niederwertige WORD den Wert 65000 (passt ja rein) und das höherwertige den Wert 0.
Folge: Auf dem rechten Kanal kommt nichts, auf dem linken hast Du fast volle Lautstärke.
Um jetzt den Wert für den rechten zu setzen, muss dieser in das höherwertige Word. Dieses befindet sich, sozusagen, 16 links des niederwertigen WORDs.
Um bei Deinem Beispiel zu bleiben: 65000 dez ist FDE8 Hex.
Damit beide Kanäle also diesen Wert bekommen, müsste als Parameter
FDE8FDE8 übergeben werden.

Dazu kannst Du dann einfach einer Variablen vom Typ DWORD den gewünschten Wert geben, und musst dann beim Aufruf der Funktion nur noch dafür sorgen, dass dieser Wert auch im höherwertigen WORD steht.
Dies geht am einfachsten mit shl (Shift Left)

Beispiel:

Delphi-Quellcode:
var
  dwVolume : DWORD;

begin
  dwVolume := $FDE8; // Die 65000 aus Deinem Beispiel
  // durch shl 16 wird der Wert in das höherwertige WORD verschoben
  // dwVolume shl 16 wäre also gleich $FDE80000
  // dwVolume selber ist $0000FDE8
  WaveOutSetVolume(wave_mapper,(dwVolume shl 16) or dwVolume);
end;
War das jetzt verständlicher?
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz