AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte TAudioVolume Komponente incl. System Mixer
Thema durchsuchen
Ansicht
Themen-Optionen

TAudioVolume Komponente incl. System Mixer

Ein Thema von EWeiss · begonnen am 6. Mai 2018 · letzter Beitrag vom 24. Jul 2019
Antwort Antwort
Seite 15 von 21   « Erste     5131415 1617     Letzte »    
EWeiss
Projekt entfernt..

Geändert von EWeiss (24. Jul 2019 um 05:45 Uhr)
 
EWeiss
 
#141
  Alt 26. Mai 2018, 10:47
Ja beim nächsten mal Frag ich besser gleich nach wie Ergebnisse auszusehen haben, so rum versteh ichs einfach nicht.
Hat sich ja zum positiven Erledigt, Schwamm drüber
Jo ist erledigt aber nochmal zum besseren Verständnis.
Gehen wir von einer gesamtlautstärke von 100 aus.

IPercent := (IPercent * 100) div 16;

Wenn der Regler ganz nach links verschoben ist dann habe ich die gesamte Lautstärke von 100% auf den linken Kanal und das gleiche in umgekehrter Reihenfolge.

Welchen wert man dafür anzeigen will ist letztendlich Geschmacksache.
Ok das war's.

gruss

Geändert von EWeiss (27. Mai 2018 um 16:25 Uhr)
  Mit Zitat antworten Zitat
EWeiss
 
#142
  Alt 27. Mai 2018, 16:24
OK!
Vorerst die letzte Version.. bis ich das Problem mit dem DisconnectSession geklärt habe.
Die TAudioVolume Komponente werde ich erst aktualisieren wenn mein Projekt komplett fertig ist.
Mag nicht 3 Baustellen gleichzeitig.

Die neuen Futures und Fixes

1. Das Rechte Bitmap zum verschieben der Einträge wird zu schnell ausgeschaltet. (behoben)
2. Das Offset der neu hinzugefügten Session stimmt nicht. (behoben)
3. Invalid Pointer beim ändern der Laustärke. (behoben)
4. Informationen über der zuletzt addierter Session hinzugefügt.
5. Animierten (Zoom) Text addiert incl. Rotation. (Spielerei)
6. ToolTip für Balance addiert
7. Scroll Speed Einstellungen addiert.
8. CPU Auslastung optimiert.

gruss

Geändert von EWeiss (31. Mai 2018 um 14:43 Uhr)
  Mit Zitat antworten Zitat
EWeiss
 
#143
  Alt 27. Mai 2018, 21:18
Wenn jemand diesen Mirror Effekt haben möchte muss er nur diese eine Zeile editieren.
anstelle von GI_CreateBitmapFromFile..
Siehe Scroll Speed! Das Image darunter.

Delphi-Quellcode:
procedure CreateOptionSprites;
//...
hBmp := gSprOption.GI_CreateMirrorBitmapFromFile(PWideChar(SpriteResPath + 'speed.png'), bmW, bmH);
Ich habe das gleiche auch bei den Thumps gemacht aber die Höhe der Bitmaps noch verändert.
Delphi-Quellcode:
hThumb := gSprSession.GI_CreateMirrorBitmapFromFile
  (PWideChar(SpriteResPath + 'thumbV.png'), bmW, bmH);
thumbV.png muss dann die höhe von 26 Pixel haben damit es gut aussieht.
Der Effekt dabei ist das es dann einen Schatten auf den Slider Hintergrund wirft.

Das selbe beim Master Thumb einfach nach _thumbV.png suchen.

sorry vergessen..
Wenn jemand die Thumps ändert muss das ebenfalls ersetzt werden weil sonst das Image optisch nicht mehr in der Mitte liegt beim Mirror Effekt.
Die Höhe des Mirror muss dann abgezogen werden.

Delphi-Quellcode:
// Thumb
{$REGION 'SetThumbVert'}

procedure SetThumbVert(ID: Integer; SprCtrl: ISkinSpriteContainer;
  THUMB_VERT, SLIDER_VERT: Integer; Percent: Single);
var
  x, y, w, h, nY, nH, Half: Integer;
  IDSlider: Integer;
begin

  if (ID < THUMB_VERT) then
    inc(ID, THUMB_VERT - SLIDER_VERT);

  SprCtrl.GD_GetObjectXY(ID - (THUMB_VERT - SLIDER_VERT), x, nY);
  SprCtrl.GD_GetObjectBound(ID - (THUMB_VERT - SLIDER_VERT), w, nH);
  SprCtrl.GD_GetObjectBound(ID, w, h);
  SprCtrl.GD_GetObjectXY(ID, x, y);

  Half := Round(h / 2) div 2; // Mirror abziehen
  nY := (nY + nH) - ((round(Percent) * nH) div 100) - Half;

  SprCtrl.GD_SetObjectXY(ID, x, nY);

  IDSlider := ID_SLIDER_LED + (ID - ID_THUMB_VERT);
  SprCtrl.GD_SetObjectImageLabel(IDSlider, FloatToStr(Percent));
  SprCtrl.GD_SetObjectTextEx(IDSlider, PWideChar(FloatToStr(Percent)));
end;
{$ENDREGION}
{$REGION 'MoveThumbVert'}

procedure MoveThumbVert(ID: Integer; SprCtrl: ISkinSpriteContainer; MouseY, THUMB_VERT,
  SLIDER_VERT: Integer);
var
  x, y, nY, w, h, nH: Integer;
  Half: Integer;
  PosY, Percent: Single;
  IDX: Integer;
begin

  bMyVolSet := true;

  if (ID < THUMB_VERT) then
    inc(ID, THUMB_VERT - SLIDER_VERT);

  SprCtrl.GD_GetObjectXY(ID - (THUMB_VERT - SLIDER_VERT), x, nY);
  SprCtrl.GD_GetObjectBound(ID - (THUMB_VERT - SLIDER_VERT), w, nH);
  SprCtrl.GD_GetObjectBound(ID, w, h);
  SprCtrl.GD_GetObjectXY(ID, x, y);

  Half := Round(h / 2) div 2; // Mirror abziehen
  y := MIN(MAX(MouseY - Half, nY - Half), nY + nH - Half);
  SprCtrl.GD_SetObjectXY(ID, x, y, true);

  PosY := (nY + nH) - (y + Half);
  Percent := (PosY / nH) * 100;

  IDX := ID + (THUMB_VERT - SLIDER_VERT);
  SprCtrl.GD_SetObjectImageLabel(IDX, FloatToStr(Percent));
  SendMessageW(MainHandle, WM_VSCROLL, MAKELONG(SB_THUMBPOSITION, round(Percent)), IDX);
end;
{$ENDREGION}
gruss

Geändert von EWeiss (11. Jul 2019 um 16:51 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

 
Delphi 11 Alexandria
 
#144
  Alt 27. Mai 2018, 23:02
Das mit dem Texteffekt kommt schon geil und jetzt noch sowas, sehr cooles Projekt!
  Mit Zitat antworten Zitat
EWeiss
 
#145
  Alt 27. Mai 2018, 23:09
Das mit dem Texteffekt kommt schon geil und jetzt noch sowas, sehr cooles Projekt!
Freut mich das es dir gefällt.
Im Grunde ist es kein Text mehr.

Ich erstelle einen Font anschließend ein Bitmap "GD_CreateBitmapFromText"
Dann wird dieses Bitmap zum GD_DrawTextBitmapToCtrl Sprite Container addiert und nun als ganz normales Bitmap behandelt.
Mit dem ich dann zoomen, drehen und andere Spielchen machen kann.

gruss
  Mit Zitat antworten Zitat
EWeiss
 
#146
  Alt 28. Mai 2018, 18:38
Habe noch etwas rumgespielt..
Delphi-Quellcode:
          // Device
          if ID = ID_LIST_DEVICE then
          begin
            gSprBackground.GD_GetObjectXY(ID_LIST_DEVICE, x, y);
            gSprBackground.GD_GetObjectBound(ID_LIST_DEVICE, w, h);
            if (HiWord(lp) - y) > h div 2 then
              ID := _DOWN
            else
              ID := _UP;

            gSprBackground.GD_SetObjectTextEx(ID_LIST_TEXT, PWideChar(lstDeviceMsg(ID)), true);
            PostMessage(MainHandle, WM_COMMAND, MAKELONG(ID_LIST_DEVICE, LBN_SELCHANGE),
              HSprBackground);

            // selektierten Eintrag suchen
            for IntI := 0 to (lstDevice.ListCount(lstDevice.Handle) - 1) do
            begin
                  SelectedDevice := AudioVolume1.AudioDeviceInfo(IntI).DeviceName;
                  if lstDevice.ListGetText(lstDevice.Handle, 3) = SelectedDevice then
                    break;
            end;
            IconIndex := IntI;

            case IconIndex of
              0:
                // Lausprecher
                IconHandle := AudioVolume1.LoadMasterIcon('@%SystemRoot%\system32\mmres.dll, -3004');
              1:
                // Mixer
                IconHandle := AudioVolume1.LoadMasterIcon('@%SystemRoot%\system32\mmres.dll, -3018');
              2:
                // LineIn
                IconHandle := AudioVolume1.LoadMasterIcon('@%SystemRoot%\system32\mmres.dll, -3012');
              3:
                // CDAudio
                IconHandle := AudioVolume1.LoadMasterIcon('@%SystemRoot%\system32\mmres.dll, -3020');
              4:
                // Microfon
                IconHandle := AudioVolume1.LoadMasterIcon('@%SystemRoot%\system32\mmres.dll, -3014');
            end;
            MainClass.CreateMasterIcon(56, 9, IconHandle);
          end;
Das Problem bzw. die Fragen die ich nun habe..

1. Funktioniert das unter Win10 also werden die richtigen Icons angezeigt? (erledigt)
2. Was passiert wenn ich einen anderen treiber als Realtek verwende.
3. Beim ändern des Wiedergabegerät gibt es dann ja auch Probleme wie könnte ich das vergleichen? (erledigt)
4. Wenn ich jetzt ein zusätzliches Gerät aktiviere bsp. Realtek Digital Output dann stimmen die Icons auch nicht mehr weil ich dann 6 Einträge anstatt 5 habe. (erledigt)

Wieder so kleine dinge wo ich mit zu kämpfen habe. (Wenn ich die Icons zur Laufzeit anpassen möchte).
Eventuell hat jemand einige Ideen. (Vergesst es habe es selbst gelöst)

gruss

Geändert von EWeiss (11. Jul 2019 um 16:51 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

 
Delphi 11 Alexandria
 
#147
  Alt 28. Mai 2018, 21:25
2. Was passiert wenn ich einen anderen treiber als Realtek verwende.
Bei Dir würde dann der Ton wegbleiben
Spass beiseite, die Mixer .exe von oben kommt prima mit SoundBlaster ZxR aus, allerdings nur mit Windows 7 getestet.
Mit der hab ichs getestet.
  Mit Zitat antworten Zitat
EWeiss
 
#148
  Alt 28. Mai 2018, 21:33
2. Was passiert wenn ich einen anderen treiber als Realtek verwende.
kommt prima mit SoundBlaster ZxR aus, allerdings nur mit Windows 7 getestet.
Mit der hab ichs getestet.
Sorry deine Antwort steht in keinem Kontext zu meiner Frage..
Es geht im allgemeinen um die Icons.
Und das kannst du mit der vorherigen Version nicht testen denn dort wird immer nur 1 Icon und immer das selbe angezeigt für das Master Control.

Ich muss das mit den Icons nochmal überdenken meine Herangehensweise ist definitiv Falsch.

EDIT:
Zumal die Icons nicht vom Treiber verwaltet werden sondern von Windows.. Daher kann ich mir diese eine frage sparen.

gruss

Geändert von EWeiss (28. Mai 2018 um 23:35 Uhr)
  Mit Zitat antworten Zitat
EWeiss
 
#149
  Alt 29. Mai 2018, 06:38
Das ändern der Icons funktioniert nun so wie es soll und genau so wie Windows es handhabt.
Es wird jetzt immer das Icon verwendet das im Dialog Sound vom User festgelegt wird oder als Default wert dort steht dabei spielt es keine Rolle welches Icon es ist.

Also wenn die Icon von der Wiedergabe geändert werden zeige ich sie so an wie geändert
Das gleiche bei der Aufnahme.. Wird das CD Audio Icon geändert dann zeige ich es so an wenn das Device im Mixer geändert wird.
Also von Lautsprecher zu CD Audio.

gruss

Geändert von EWeiss (11. Jul 2019 um 20:25 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

 
Delphi 11 Alexandria
 
#150
  Alt 29. Mai 2018, 12:46
Hallo Emil, das mit den Icons hast Du toll hinbekommen, da das erledigt ist schreib ich mal was ich schon vor längerer Zeit schreiben wollte da Du ja nun wieder Luft hast

Mir sind drei kleine Schönheitsfehler aufgefallen, Programm wird dadurch nicht beeinträchtigt aber es fällt auf.
1. im "Selected Device", bei mir ist Schrift länger als die Box an Platz bietet, der Text wird bei mir am Window-Border gekappt.
2. im "Options" ist es ähnlicher Natur, wenn der "Show Informations" zoomt, dann zeichnet der mini-bissl in den Knopf rein (wenn der Knopf nach links geht)
3. Die Tooltip Farbe hat bei mir keinen Kontrast, weiße Schrift mit hellgrauer Hintergrundfarbe. (Ich bin da kein Farbexperte wie Du, vielleicht ist es auch Ocker für Schrift und Silber als Background)

Und falls es Dich interessiert, bei "Show Information" kommt kein "plopp" Geräusch wenn man Schalter umlegt.

Das wars auch schon. Nach wie vor, grandioses Design, es gefällt auf Anhieb!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 15 von 21   « Erste     5131415 1617     Letzte »    


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 10:53 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