AGB  ·  Datenschutz  ·  Impressum  







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

Knob value wie feiner abstimmen

Ein Thema von EWeiss · begonnen am 5. Mai 2011 · letzter Beitrag vom 6. Mai 2011
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#11

AW: Knob value wie feiner abstimmen

  Alt 6. Mai 2011, 01:30
Oder du wertest nicht die Pixel aus, die der User mit der Maus fährt, sondern löst das feiner auf. Aber das ist dann auch nicht mehr all zu toll, wenn ich 200 Pixel nach rechts z.B. fahren muss, dass sich da ein wenig was bewegt.

-- Edit: Schau mir mal das Bin.rar an.

-- Edit: Also, wenn mich nicht alles täuscht ist das eine logrithmische Skala. Im unteren Bereich wird pro Pixel, die sich die Maus bewegt sehr fein aufgelöst, und ab 1.0db wird pro Pixel 0.2db hinzugezählt bzw. abgezogen.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)

Geändert von s.h.a.r.k ( 6. Mai 2011 um 01:34 Uhr)
  Mit Zitat antworten Zitat
blackfin
(Gast)

n/a Beiträge
 
#12

AW: Knob value wie feiner abstimmen

  Alt 6. Mai 2011, 02:28
Vielleicht nur mal so als Denk-Ansatz:
Ich hatte mir vor ein paar Jährchen mal ein MIDI-Pult aus ein paar Microcontrollern, Touch-Motor-Fadern und echten "Knobs", also Endlos-Incremental-Encodern gebaut.
Da war die Auflösung auch anfangs ein Problem (Die mittelpreislichen Encoder haben eine ähnliche miese Hardware-Auflösung mit ca. 32-64 Takten/Umdrehung, was man mit der niedrigen Pixel-Auflösung einer Maus vergleichen kann).
Meine Lösung hat dann darauf basiert, dass ich die Auflösung / Wertesprünge, die über den Encoder z.B. an ein VST-Plugin übergeben werden, mit einem Beschleunigungsfaktor gesetzt habe, je nachdem, wie schnell jemand einen Knob / Encoder dreht. Bei langsamen Bewegungen sehr niedriges Increment / Decrement, bei schnellen, zackigen Bewegungen und gleichbleibender Greycode-Änderung dementsprechend weitere Wertesprünge. Diese Beschleunigungs-Tabellen (Greycode-Iterationen / Zeit => Sprungwert) waren dann im Pult auch änderbar.
Das wird zwar denke ich mit der Maus in einer PC-Application generell ein wenig schwieriger werden (Zeit messen in einem extrem kurzen Zeitbereich ohne HW-Interrupts wie bei einer MCU ja nicht so ohne weiteres möglich...), aber ich will das mal als Ansatz stehen lassen

Edit:
Echte Studio-Geräte (z.B. die meisten EQs und Kompressoren) haben bei Einstellungen über Drehregler auch oft mehrere "Bereich"-Buttons unter oder neben dem Encoder, die nach Aktivierung eben die gerade aktive Auflösung des Encoders festlegen. So etwas könnte man bei einem GUI-Knob auch relativ userfreundlich gestalten, indem man z.B. durch Klick auf den Knopf (mouse down + up ohne zwischenzeitliches Ziehen) die Auflösungen durchschaltet / rotiert und zusätzlich dann die Auflösung / Pixel neben dem Encoder anzeigt, dessen Farbe ändert oder wie auch immer. Oder eben mit der rechten Maustaste durchschalten lassen. Zuätzliche Keys wie SHIFT oder CTRL abfragen halte ich nicht so für gut, kommt aber auf den Anwendungsfall an. Im Soundbereich ist so etwas eher lästig (meine Meinung), da man die andere Hand meistens eh für andere Aktionen benötigt. Aber das ist Geschmacksache

Geändert von blackfin ( 6. Mai 2011 um 02:57 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#13

AW: Knob value wie feiner abstimmen

  Alt 6. Mai 2011, 02:36
Jo, hört sich nicht all zu einfach an, ABER du hast ein super Stichwort genannt, welches, passend implementiert, natürlich auch funktionieren kann. Und zwar spiele ich hier auf das (Teil-)Wort Endlos an, wobei ich nicht einen Knob meine, den man endlos drehen können soll, aber warum sollte nicht mehr als 360 Grad möglich sein?

Beispiel: Wenn du die doppelte Auflösung brauchst, dann sollten halt 720 Grad möglich sein und nicht nur 360.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#14

AW: Knob value wie feiner abstimmen

  Alt 6. Mai 2011, 02:56
Jo, hört sich nicht all zu einfach an, ABER du hast ein super Stichwort genannt, welches, passend implementiert, natürlich auch funktionieren kann. Und zwar spiele ich hier auf das (Teil-)Wort Endlos an, wobei ich nicht einen Knob meine, den man endlos drehen können soll, aber warum sollte nicht mehr als 360 Grad möglich sein?

Beispiel: Wenn du die doppelte Auflösung brauchst, dann sollten halt 720 Grad möglich sein und nicht nur 360.
Danke euch für die Anregungen.
Habe es jetzt so umgesetzt das man nach einem Klick oder Drehen des Knobs den Focus auf
den Knob bekommt danach ist es dann möglich über Mousewheel die Feineinstellung vorzunehmen.

Irgendwie ist das doppelt gemoppelt.
Aber ne andere Idee hab ich da zur zeit auch nicht.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#15

AW: Knob value wie feiner abstimmen

  Alt 6. Mai 2011, 03:01
Kannst ja alle genannten mal umsetzen und dann einen Usability Test unter freiwilligen DP-Mitgliedern machen
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
blackfin
(Gast)

n/a Beiträge
 
#16

AW: Knob value wie feiner abstimmen

  Alt 6. Mai 2011, 03:05
Du kannst dir auch mal die Demo-Versionen von virtuellen Instrumenten anschauen, oft finden sich dort in der Praxis sehr ansprechende Lösungswege.
Empfehlenswert sind z.B. die GUIs der Tools von Native Instruments.

P.S.
Und wenn du bei der grafischen Gestaltung der Knobs ein wirklich nettes Tool suchst, das nichts kostet, schau dir mal den KnobMan an
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#17

AW: Knob value wie feiner abstimmen

  Alt 6. Mai 2011, 03:26
Du kannst dir auch mal die Demo-Versionen von virtuellen Instrumenten anschauen, oft finden sich dort in der Praxis sehr ansprechende Lösungswege.
Empfehlenswert sind z.B. die GUIs der Tools von Native Instruments.

P.S.
Und wenn du bei der grafischen Gestaltung der Knobs ein wirklich nettes Tool suchst, das nichts kostet, schau dir mal den KnobMan an
Kann ja mal schaun schaden kann es nix Wobei die hier auf VSTGUI ausgelegt sind... Mach dann lieber mein eigenes weiter .. hiihiihihi
Den verwende ich schon seit Anbegin der zeit

gruss

Geändert von EWeiss ( 6. Mai 2011 um 04:15 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#18

AW: Knob value wie feiner abstimmen

  Alt 6. Mai 2011, 03:35
Kannst ja alle genannten mal umsetzen und dann einen Usability Test unter freiwilligen DP-Mitgliedern machen
Wäre ja wohl ein bißchen hart
Muss jetzt nur mal sehen wo ich meinen alten TollTip Text wieder aktiviere nach dem MouseWeel.

Das ist etwas kompliziert da ich ja kein up/down habe wie bei Buttons

Delphi-Quellcode:
      WM_MOUSEWHEEL:
      begin
        if not MouseWeel then
        begin
          // hole den aktuellen ToolTip und speichere
          // ihn in die Variable sOldTip
          hToolTip := ToolTipData(0, 0);
          sOldTip := SkinEngine.GetCTLText(hToolTip);
          MouseWeel:= True;
        end;

        If wP > 0 then
          direction := 1
        else
        direction := -1;
        // Aktuelle Value einlesen
        WasValue := SkinEngine.GetProperty(WinHandle, KNOB_WAS_VALUE);
        if direction = 1 then
          // Neue Value um eins incrementieren
          tVal := WasValue + 1
        else
        // Neue Value um eins decrementieren
        tVal := WasValue - 1;

        // Poperties der aktuellen Value speichern
        SkinEngine.SetProperty(WinHandle, KNOB_VALUE, tVal);
        SkinEngine.SetProperty(WinHandle, KNOB_WAS_VALUE, tVal);
        // Aktuelle Value an die Anwendung schicken
        SendMessage(GetParent(WinHandle), WM_COMMAND,
          MAKELONG(GetDlgCtrlID(WinHandle), 0), SkinEngine.GetProperty(WinHandle, KNOB_VALUE));
        // Frame Aktualisieren
        FFrame := tVal;
        // Value ToolTip setzen
        SetToolTipText(WinHandle, PWideChar(IntToStr(tVal)));
        // XOffset Aktualisieren
        UpdateFramePosition(WinHandle);
        // Knob Neuzeichnen
        SkinEngine.FUpdateWindow(WinHandle, False);
      end;
Habe meinen alten ToolTip zwischen gespeichert.
Nur wo soll ich diesen wieder aktivieren ?? HEheheheee

Delphi-Quellcode:
// Setze den alten ToolTip für den Knob
SetToolTipText(WinHandle, PWideChar(sOldTip));
grrrrummel..

Hat sich erledigt
Delphi-Quellcode:
      WM_KILLFOCUS:
      begin
        if MouseWeel then
        begin
          // Setze den alten ToolTip für den Knob
          SetToolTipText(WinHandle, PWideChar(sOldTip));
          MouseWeel:= False;
        end;
      end;
gruss

Geändert von EWeiss ( 6. Mai 2011 um 03:59 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 07:43 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