AGB  ·  Datenschutz  ·  Impressum  







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

VU Meter (Wasapi)

Ein Thema von EWeiss · begonnen am 17. Dez 2018 · letzter Beitrag vom 22. Mär 2019
Antwort Antwort
Seite 2 von 3     12 3      
EWeiss
(Gast)

n/a Beiträge
 
#11

AW: VU Meter (Wasapi)

  Alt 18. Dez 2018, 11:53
Zitat:
Außerdem zeigen sich schon JPG Kompressionsartefakte. Die Skala plus BEschriftung könnte definierter sein.
Die Frage die da wäre was verstehst du unter *.jpg.. bzw. was ist bei dir "png <> jpg".
Er bezog sich mit seiner Aussage auf die hochgeladenen Bilder.
Deine ersten vier Bilder im Thread haben als Dateiendung .jpg.

Beispiel:
https://www.delphipraxis.net/attachm...sapi-17.12.jpg
https://www.delphipraxis.net/attachm...r-wasapi-2.jpg
Ach so, kein Problem, ja da kann man nichts machen
Habe angenommen er hat das Archiv zum testen geladen da ist alles in *.png.

Habe als *.png hochgeladen und wird von der DP zu *.jpg umgewandelt.
Da gibt es dann halt Artefakte.
Nun ist kein Grafiker Forum von daher erst mal egal.


gruss

Geändert von EWeiss (18. Dez 2018 um 12:03 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#12

AW: VU Meter (Wasapi)

  Alt 18. Dez 2018, 12:05
Das weiße gefällt mir gut, sieht aus wie ein echtes analoges Instrument aus den 50/60ern.
Gewollt oder Fehler, der rote Bereich liegt etwas höher als die untere Begrenzung des Normalbereiches.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#13

AW: VU Meter (Wasapi)

  Alt 18. Dez 2018, 12:14
Das weiße gefällt mir gut, sieht aus wie ein echtes analoges Instrument aus den 50/60ern.
Gewollt oder Fehler, der rote Bereich liegt etwas höher als die untere Begrenzung des Normalbereiches.

Gruß
K-H
Danke.
Denke ist wohl eher ein Fehler.

Mir ging es darum einen Glas Effekt auf das gesamt VU zu verwirklichen ist eins der schwierigsten Dinge die es unter Graphikern gibt. (Meine nicht diese Orb-Button das in ein Zug mit 3 Effekten) aber nicht realistisch.
Dann muss es auch zu meinem Skin Layout passen.
Aber habe nichts dagegen wenn jemand den source *.psd dementsprechend anpassen möchte

Ein Originales VU hat nun mal als Abdeckung eine Glasscheibe.

gruss

Geändert von EWeiss (18. Dez 2018 um 12:16 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#14

AW: VU Meter (Wasapi)

  Alt 18. Dez 2018, 12:20
Hallo Emil,

versuch doch mal mit Alphatransparenzen innerhalb der Ebenen zu arbeiten. Im Moment sieht es so aus als würde das Licht (sowohl in der grünen als auch der gelben Variante) von vorne auf die Skale strahlen. In Natura ist sowas ja eher backlighted. Wenn du die Schrift zB mit FFFFFF66 anlegst und den dunklen Skalenhintergrund mit zB 33333300. Dann legst du den farbigen Lichtkegel zweimal an als Ebene. Einmal mit hoher Deckfähigkeit HINTER der Skale und ein zweites Mal mit geringer Deckfähigkeit VOR der Skale. Dadurch ließe sich evtl. ein besserer Backlight-Effekt erzeugen.

Grüße
Cody
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#15

AW: VU Meter (Wasapi)

  Alt 18. Dez 2018, 12:56
Hallo Emil,

versuch doch mal mit Alphatransparenzen innerhalb der Ebenen zu arbeiten. Im Moment sieht es so aus als würde das Licht (sowohl in der grünen als auch der gelben Variante) von vorne auf die Skale strahlen. In Natura ist sowas ja eher backlighted. Wenn du die Schrift zB mit FFFFFF66 anlegst und den dunklen Skalenhintergrund mit zB 33333300. Dann legst du den farbigen Lichtkegel zweimal an als Ebene. Einmal mit hoher Deckfähigkeit HINTER der Skale und ein zweites Mal mit geringer Deckfähigkeit VOR der Skale. Dadurch ließe sich evtl. ein besserer Backlight-Effekt erzeugen.

Grüße
Cody
Danke werde ich mal versuchen.
Hier noch einige Informationen bzg. des Projekts.
Das Bitmap selbst also das weiße liegt nicht als Datei vor sondern wird Binär im Code selbst erzeugt.
bsp.
Delphi-Quellcode:
 VU_BASE: array[0..VU_WIDTH*VU_HEIGHT*4-1] of BYTE = (
$04,$00,$00,$00,$04,$00,$00,$00,$04,$00,$00,$00,$04,$00,$00,$00,
$04,$00,$00,$00,$04,$00,$00,$00,$04,$00,$00,$00,$04,$00,$00,$00,
Ich habe einen Shot vom Programm genommen und das Bitmap meinen Ansprüchen entsprechen angepasst.

Das Original Source ist hier zu finden (ohne TAudioVolume) und in C++ basierend auf DirectX. (Für Delphi neu aufgesetzt von Silhwan).

Meine Version verwendet nichts von der DirectX Version diese wird unter Verwendung von GDI+ erstellt.

Im Anhang also ein funktionierende Version von Silhwan.
Dort kann man dann auch mal die Technische Seite beleuchten in wie weit das einem Originalen VU entspricht.

PS:
Vielleicht kann man den Thread nach Projekte verschieben ?

gruss

Geändert von EWeiss (11. Jul 2019 um 17:11 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#16

AW: VU Meter (Wasapi)

  Alt 18. Dez 2018, 14:17
Interessant!
ich habe selbst eine Aussteuerungsanzeige gebastelt. aber die ist bei weitem nicht so gehörrichig wie Dein Beispiel.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#17

AW: VU Meter (Wasapi)

  Alt 19. Dez 2018, 03:29
Interessant!
ich habe selbst eine Aussteuerungsanzeige gebastelt. aber die ist bei weitem nicht so gehörrichig wie Dein Beispiel.

Gruß
K-H
Jo macht schon was her..
Der aktuelle Status als Bitmap angehängt. (Leider nicht so sauber weil wieder nach *.jpg durch die DP komprimiert.)
Nur falls jemand schimpft

Zitat:
Im Moment sieht es so aus als würde das Licht (sowohl in der grünen als auch der gelben Variante) von vorne auf die Skale strahlen
Bekomme das irgendwie nicht hin.
Wenn du vielleicht Interesse hast das Bitmap anzupassen der Source als *PSD ist ja vorhanden.

gruss

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

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.798 Beiträge
 
Delphi 12 Athens
 
#18

AW: VU Meter (Wasapi)

  Alt 19. Dez 2018, 09:03
Ist vielleicht nur ein kleines Detail, aber sollte der Zeiger nicht hinter der Schraube und dem Glas liegen? Also eher so wie hier:
http://www.giangrandi.ch/electronics...vu-meter.shtml

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann

Geändert von Sherlock (19. Dez 2018 um 13:56 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#19

AW: VU Meter (Wasapi)

  Alt 19. Dez 2018, 09:37
Ist vielleicht nur ein kleines Detail, aber sollte der Zeiger nicht hinter der Schraube und dem Glas liegen? Also eher so wie hier:
hhttp://www.giangrandi.ch/electronic...vu-meter.shtml

Sherlock
Ja Danke
Habe ich heute morgen auch gesehen nachdem ich den Compi angemacht habe.. hehehehe.

PS:
Korrektur..

Delphi-Quellcode:
procedure CreateVUSprites(WinHandle: HWND; X, Y: Integer; SpritePath: string);
var
  HBmp: HBITMAP;
  ImgW, ImgH: Cardinal;
  X1, Y1: Integer;
  IntI: Integer;
  bmW, bmH: Cardinal;
  VuHeight, VUWidth: Integer;
  VULeftX, VULeftY: Integer;
  VURightX, VURightY: Integer;
  DotTop, DotWidth: Integer;
begin

  VuHeight := 0;
  VuWidth := 0;
  DotTop := 0;
  DotWidth := 0;

  if gSprVU.GD_GetObjectBitmap(ID_LAYER) = 0 then
  begin
    hBmp := gSprVU.GI_CreateBitmapFromFile(PWideChar(SpritePath + 'Layer.png'), ImgW, ImgH);
    if hBmp <> 0 then
    begin
      // Layer
      gSprVU.GD_DrawBitmapToCtrl(WinHandle, X, Y, hBmp, gSprVU.GD_ColorARGB(255, 0), ID_LAYER,
        GS_VISIBLE);
      gSprVU.GD_SetObjectLinked(ID_LAYER, ID_LAYER);
      gSprVU.GD_SetObjectLocked(ID_LAYER, true);

      hBmp := gSprVU.GI_CreateBitmapFromFile(PWideChar(SpritePath + 'TopLight.png'), ImgW, ImgH);

      X1 := X + 110;
      Y1 := Y + 28;

      for IntI := 0 to 3 do
      begin
        gSprVU.GD_DrawBitmapToCtrl(WinHandle, X1, Y1, hBmp, gSprVU.GD_ColorARGB(255, 0),
          ID_TOPLIGHT + IntI, GS_HIDDEN);
        gSprVU.GD_SetObjectLinked(ID_TOPLIGHT + IntI, ID_LAYER);

        case IntI of
          0:
            X1 := X1 + 240;
          1:
            X1 := X1 + 110;
          2:
            X1 := X1 + 240;
        end;
      end;

      // ************** VUMeter Left
      VULeftX := X + 64;
      VULeftY := Y + 32;
      hBmp := gSprVU.GI_CreateBitmapFromFile(PWideChar(SpritePath + 'BVU.png'), ImgW, ImgH);
      if hBmp <> 0 then
      begin
        gSprVU.GD_DrawBitmapToCtrl(WinHandle, VULeftX, VULeftY, hBmp, gSprVU.GD_ColorARGB(255, 0),
          ID_VULEFT, GS_VISIBLE);

        gSprVU.GD_SetObjectLinked(ID_VULEFT, ID_VULEFT);
        gSprVU.GD_SetObjectLocked(ID_VULEFT, true);
        VuHeight := ImgH;
        VuWidth := ImgW;
      end;
      // LeftPendel
      hBmp := gSprVU.GI_CreateBitmapFromFile(PWideChar(SpritePath + 'Pendel.png'), ImgW, ImgH);
      if hBmp <> 0 then
      begin
        gSprVU.GD_DrawBitmapToCtrl(WinHandle, VULeftX + (VuWidth div 2) - 10, VULeftY + 39, hBmp,
          gSprVU.GD_ColorARGB(255, 0), ID_PENDELLEFT, GS_VISIBLE);
        gSprVU.GD_SetObjectLinked(ID_PENDELLEFT, ID_VULEFT);
        gSprVU.GD_SetObjectLocked(ID_PENDELLEFT, true);
        gSprVU.GD_SetObjectAngle(ID_PENDELLEFT, 310);
      end;
      // Dot
      hBmp := gSprVU.GI_CreateBitmapFromFile(PWideChar(SpritePath + 'Dot.png'), ImgW, ImgH);
      if hBmp <> 0 then
      begin
        DotTop := (VULeftY + VuHeight) - Integer(ImgH);
        DotWidth := ImgW;
        gSprVU.GD_DrawBitmapToCtrl(WinHandle, VULeftX + (VuWidth - DotWidth + 1) div 2, DotTop, hBmp,
          gSprVU.GD_ColorARGB(255, 0), ID_DOTLEFT, GS_VISIBLE);
        gSprVU.GD_SetObjectLinked(ID_DOTLEFT, ID_VULEFT);
        gSprVU.GD_SetObjectLocked(ID_DOTLEFT, true);
      end;
      // VULeftLight
      hBmp := gSprVU.GI_CreateBitmapFromFile(PWideChar(SpritePath + 'BLight.png'), ImgW, ImgH);
      if hBmp <> 0 then
      begin
        gSprVU.GD_DrawBitmapToCtrl(WinHandle, VULeftX, VULeftY, hBmp, gSprVU.GD_ColorARGB(255, 0),
          ID_LIGHTLEFT, GS_HIDDEN);
        gSprVU.GD_SetObjectLinked(ID_LIGHTLEFT, ID_VULEFT);
        gSprVU.GD_SetObjectLocked(ID_LIGHTLEFT, true);
      end;

      // ************** VU Meter Right
      VURightX := VULeftX + Integer(ImgW);
      VURightY := VULeftY;
      // same Bitmap as VULeft so to clone
      gSprVU.GD_CloneObject(ID_VULEFT, ID_VURIGHT, VURightX, VURightY);
      // RightPendel
      // same Bitmap as LeftPendel so to clone
      gSprVU.GD_CloneObject(ID_PENDELLEFT, ID_PENDELRIGHT, VURightX + (VuWidth div 2) - 10, VURightY + 39);
      gSprVU.GD_SetObjectAngle(ID_PENDELRIGHT, 310);
      // Dot
      // same Bitmap as DotLeft so to clone
      gSprVU.GD_CloneObject(ID_DOTLEFT, ID_DOTRIGHT, VURightX + (VuWidth - DotWidth + 1) div 2, DotTop);
      // VURightLight
      // same Bitmap as VULeftLight so to clone
      gSprVU.GD_CloneObject(ID_LIGHTLEFT, ID_LIGHTRIGHT, VURightX, VURightY);

      hBmp := gSprVU.GI_CreateBitmapFromFile(PWideChar(SpriteResPath + 'hSwitch.png'), bmW, bmH);
      if (hBmp <> 0) then
      begin
        gSprVU.GD_DrawBitmapToCtrl(HSprVU, 740, 267, hBmp, OPAQUEIMAGE, ID_POWER,
          GS_VISIBLE);
        gSprVU.GD_SetObjectFrameCount(ID_POWER, 2);
        // Frame 2 Power OFF
        gSprVU.GD_SetObjectFrameToUse(ID_POWER, 2);
        gSprVU.GD_SetObjectLocked(ID_POWER, true);
      end;

      // Left Anchor
      gSprVU.GD_SetObjectAnchorMode(ID_VULEFT, ANCHOR_CENTER);
      gSprVU.GD_SetObjectAnchorMode(ID_PENDELLEFT, ANCHOR_CENTER);
      gSprVU.GD_SetObjectAnchorMode(ID_LIGHTLEFT, ANCHOR_CENTER);
      gSprVU.GD_SetObjectAnchorMode(ID_DOTLEFT, ANCHOR_CENTER);
      // Right Anchor
      gSprVU.GD_SetObjectAnchorMode(ID_VURIGHT, ANCHOR_CENTER);
      gSprVU.GD_SetObjectAnchorMode(ID_PENDELRIGHT, ANCHOR_CENTER);
      gSprVU.GD_SetObjectAnchorMode(ID_LIGHTRIGHT, ANCHOR_CENTER);
      gSprVU.GD_SetObjectAnchorMode(ID_DOTRIGHT, ANCHOR_CENTER);
    end;
  end;
end;
gruss

Geändert von EWeiss (11. Jul 2019 um 16:54 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#20

AW: VU Meter (Wasapi)

  Alt 8. Jan 2019, 19:16
Fertig.. Bitte schön wer's braucht.

gruss

Geändert von EWeiss (11. Jul 2019 um 17:11 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 04:58 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