Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Klatsch und Tratsch (https://www.delphipraxis.net/34-klatsch-und-tratsch/)
-   -   VU Meter (Wasapi) (https://www.delphipraxis.net/198998-vu-meter-wasapi.html)

EWeiss 17. Dez 2018 19:52

VU Meter (Wasapi)
 
Ich arbeite an einem VU Meter für Wasapi unter Verwendung von TAudioVolume.

Hier mal ein Shot.
Das VU Meter links ist eingeschaltet also man kann das Licht zuschalten wenn die Aufnahme eingeschaltet wird.
Der rechte ist zu demonstrationszwecken aus..

Dauert noch bis es fertig ist.
Muss da am Bitmap noch was feilschen, einige Controls noch addieren usw..

gruss

p80286 17. Dez 2018 20:46

AW: VU Meter (Wasapi)
 
Sieht gut aus, ist nur etwas dunkel.
Es muß ja nicht die klassische Farbgebung schwarz auf gelb sein.

Gruß
k-h

EWeiss 17. Dez 2018 20:51

AW: VU Meter (Wasapi)
 
Zitat:

Zitat von p80286 (Beitrag 1421097)
Sieht gut aus, ist nur etwas dunkel.
Es muß ja nicht die klassische Farbgebung schwarz auf gelb sein.

Gruß
k-h

Vielleicht sieht das etwas besser aus ;)
Wenn nicht mache ich es noch etwas heller. (Das Licht)

Ich glaube nur das dann die Schrift unleserlich wird.. wenn das Spotlight zu Hell ist.
Im Moment verwende ich für das Licht "33ffff" könnte es mal mit weiß versuchen. Hmmm...

gruss

EWeiss 18. Dez 2018 01:04

AW: VU Meter (Wasapi)
 
Hier noch ein kleiner Fortschritt.
An und Aus Status.

Zudem habe ich noch etwas am Bitmap gemacht. ;)
Könnt ihr ja mit dem oberen vergleichen.

Glaube es ist Hell genug.
Wer es mal testen will hier ist was zum spielen.. (Zur zeit geht es nur um das Design, Licht etc..)

gruss

p80286 18. Dez 2018 07:28

AW: VU Meter (Wasapi)
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich hab mal ein Beispiel besorgt, wie ich mir ein VU-Meter vorstelle.
Ich kann mich erinnern, daß bei den AKAI-Maschinen auch so ein Flackerlicht mit dabei war. Ich empfand das damals aber als störend. Bei Tandberg konnte man allerdings darauf verzichten. Das war zwar in abgedunkelten Räumen nicht so dekorativ aber für die Arbeit angenehmer.
Wenn Du Dein VU-Meter nicht ernsthaft nutzen willst (wer steuert heute noch bis +3db aus?) ist die ablesbarket wohl nicht sooo wichtig.

Gruß
K-H

jobo 18. Dez 2018 07:52

AW: VU Meter (Wasapi)
 
Ich finde die Entwürfe sehen etwas nach "Milchglas" aus, sowohl on als auch off.
Oder ist das die Imitation eines verwitterten Klar-Plastiks?
Der Reiz eines Analoginstruments ist ja eigentlich die unnachahmliche(?) Bewegung des Zeigers, "zackiges" Ansprechverhalten, minimale Trägheit, sanftes Zurücksinken.

Außerdem zeigen sich schon JPG Kompressionsartefakte. Die Skala plus BEschriftung könnte definierter sein.

Sherlock 18. Dez 2018 08:02

AW: VU Meter (Wasapi)
 
Aus (also ohne Beleuchtung) finde ich besser lesbar. Sieht aber toll aus.

Sherlock

bernau 18. Dez 2018 08:22

AW: VU Meter (Wasapi)
 
Die Bilder finde ich toll. Wie hast du die gemacht?

EWeiss 18. Dez 2018 10:19

AW: VU Meter (Wasapi)
 
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".

Denn wie du im Archiv schwerlich erkennen kannst verwende ich das Format *.png.
Und von *.psd nach *.png wie soll dort eine JPG Kompression entstehen?
Da ist nix mit Kompressionsartefakte.

Zitat:

Die Bilder finde ich toll. Wie hast du die gemacht?
Photoshop CC

Zitat:

Ich finde die Entwürfe sehen etwas nach "Milchglas" aus, sowohl on als auch off.
Ja ist so gewollt. ;)
Glaseffekt mit durchgezogener Linie hat meines erachtens nichts mit Glas zu tun.
Also so wie das bei GlassButton und der gleichen gehandhabt wird.

Sieht zwar mitunter fein aus hat aber mit Glas im eigentlichen sinne nicht viel zu tun.
Habe mal vergleiche incl. *psd hochgeladen. (Blau spare ich mir ist ja im Beispiel enthalten)
Notfalls kann ich immer noch eine Möglichkeit hinzufügen mit der man die Farben zur Laufzeit angleichen kann. ;)

gruss

TiGü 18. Dez 2018 10:50

AW: VU Meter (Wasapi)
 
Zitat:

Zitat von EWeiss (Beitrag 1421136)
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

EWeiss 18. Dez 2018 10:53

AW: VU Meter (Wasapi)
 
Zitat:

Zitat von TiGü (Beitrag 1421138)
Zitat:

Zitat von EWeiss (Beitrag 1421136)
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

p80286 18. Dez 2018 11:05

AW: VU Meter (Wasapi)
 
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

EWeiss 18. Dez 2018 11:14

AW: VU Meter (Wasapi)
 
Zitat:

Zitat von p80286 (Beitrag 1421141)
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

Codehunter 18. Dez 2018 11:20

AW: VU Meter (Wasapi)
 
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

EWeiss 18. Dez 2018 11:56

AW: VU Meter (Wasapi)
 
Zitat:

Zitat von Codehunter (Beitrag 1421145)
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

p80286 18. Dez 2018 13:17

AW: VU Meter (Wasapi)
 
Interessant!
ich habe selbst eine Aussteuerungsanzeige gebastelt. aber die ist bei weitem nicht so gehörrichig wie Dein Beispiel.

Gruß
K-H

EWeiss 19. Dez 2018 02:29

AW: VU Meter (Wasapi)
 
Zitat:

Zitat von p80286 (Beitrag 1421159)
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

Sherlock 19. Dez 2018 08:03

AW: VU Meter (Wasapi)
 
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

EWeiss 19. Dez 2018 08:37

AW: VU Meter (Wasapi)
 
Zitat:

Zitat von Sherlock (Beitrag 1421218)
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

EWeiss 8. Jan 2019 18:16

AW: VU Meter (Wasapi)
 
Fertig.. Bitte schön wer's braucht.

gruss

EWeiss 22. Mär 2019 21:55

AW: VU Meter (Wasapi)
 
Da ich gerade dabei war hier nochmal die letzte Version.

gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:49 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz