Delphi-PRAXiS
Seite 9 von 9   « Erste     789   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Virtual Piano (https://www.delphipraxis.net/158944-virtual-piano.html)

EWeiss 24. Jun 2012 13:19

AW: Virtual Piano
 
Zitat:

Zitat von lbccaleb (Beitrag 1172196)
Hey Emil,

hab mir gerade mal deinen Code angesehen, wie du einige Sachen so machst, um mich bisschen weiter zu entwickeln 8-)
Kein Plan, ob du noch an dem Programm was veränderst und ob du das schon weisst, aber mir ist da was kleines aufgefallen:

Du vergleichst oft auf True/False (was man ja bekanntlich nicht machen sollte)

zb:

Delphi-Quellcode:
  IsInitialized := GetClassInfoEx(SkinEngine.skInstance, zClass, wc);
  if IsInitialized = False then
  begin

Vllt. änderst du das ja noch irgendwann ein mal!

BTW. Cooles Prog und thx vor OS :thumb:

Das ist richtig was du sagst.. oder besser gesagt
ist nicht falsch aber auch nicht richtig, halt ein überbleibsel (Gewohnheit) aus meiner VB zeit.

Glaube nicht das ich das noch weiter Entwickle da dieses Projekt ja nur entstanden ist um meine DLL zu testen.
Diese wurde aber mittlerweise weiterentwickelt und ist nicht mehr kompatibel zu VPiano.
Lasse den Quelltext aber stehn so wie er ist, ist vielleicht hilfreich für NonVCL Progger
wenn man auch einiges besser machen könnte.

gruss

EWeiss 6. Dez 2013 00:03

AW: Virtual Piano
 
Zitat:

Du vergleichst oft auf True/False
Hab ich mittlerweile alles korrigiert ;)

Zitat:

Wenn ich beim Klavier von einer Taste auf die nächste rutsche höre ich wohl einen Ton und das ist auch bei jedem
anderen Keyboard so.
(Wär doch zumindest ein nettes Feature. Wenn ich auf deinem Piano Violine spielen will geht das nicht anders)
Grüsse
Na ja lieber später als nie.. ;)

Habe das Feature nun addiert bzw.. wer sich noch dafür interessiert kann es nachträglich einfügen.
Delphi-Quellcode:
//uMain..
//.. globale Variablen
  currentNote: Integer;
  note: Integer;
  KeyHandle: HWND;
Delphi-Quellcode:
{$REGION 'WM_MOUSEMOVE'}
  WM_MOUSEMOVE:
  begin
    // Über Tastatur spielen ausgestellt?
    if not (CheckUseKey.GetCheckButtonStatus(CheckUseKey.Handle)) then
    begin
      // Kein Preset am spielen?
      if not PresetValue then
      begin
        case LoWord(wP) of
          // Noten bei gedrückter linker Maustaste spielen
          ID_KEY_ARRAY_FIRST..ID_KEY_ARRAY_LAST:
          begin
            if not (GetSystemMetrics(SM_SWAPBUTTON) <> 0) then
            begin
              // nicht umgeschaltet dann Linke Maustaste
              if (GetAsyncKeyState(VK_LBUTTON) and 32768 <> 0) then
              begin
                GetCursorPos(p);
                KeyHandle := WindowFromPoint(p);
                note := MAKELONG(GetDlgCtrlID(KeyHandle), 0) - ID_KEY_ARRAY_FIRST;

                if (note >= 0) and (note < 128) and (note <> CurrentNote) then
                begin
                  lastChordInDrag := integer(TChord(Chord));
                  StopNote(CurrentNote, lastChordInDrag);
                  CurrentNote := note;
                  StartNote(CurrentNote, lastChordInDrag);
                end;
              end;
            end;
          end;
        end;
      end;
    end;
  end;
{$ENDREGION}
{$REGION 'WM_LBUTTONDOWN'}
    WM_LBUTTONDOWN:
    begin
      if not (CheckUseKey.GetCheckButtonStatus(CheckUseKey.Handle)) then
      begin
        if not PresetValue then
        begin
          case LoWord(wP) of
            // Note mit der Maus spielen
            ID_KEY_ARRAY_FIRST..ID_KEY_ARRAY_LAST:
            begin
              // Keyboard eingeschaltet?
              if OnState then
              begin
                lastChordInDrag := integer(TChord(Chord));
                StartNote(((wp - ID_KEY_ARRAY_FIRST)), lastChordInDrag);
                currentNote := wp - ID_KEY_ARRAY_FIRST;
              end;
            end;
          end;
        end;
      end
      else
        SetFocus(WinHandle);

      // Instrumenten Bank Speichern/Weiterschalten
      case LoWord(wP) of
        ID_BANK_FIRST..ID_BANK_LAST:
        begin
          if GetKeyState(VK_SHIFT) and 32768 <> 0 then
          begin
            Banks[wP - (ID_BANK_FIRST - 1)].Value := InstIndex;
            tmpStr := Split(InstArrayList[InstIndex], ',');
            SKAERO_SetCTLText(SKAERO_GetMainItem(WinHandle, ID_INSTRUMENTLABEL),
              WideString(tmpStr[0]));

            SetController(32, 0, Channel);
            SetInstrument(Banks[wP - (ID_BANK_FIRST - 1)].Value, Channel);
            SKAERO_SetToolTipText(SKAERO_GetMainItem(WinHandle, wP),
              PWideChar(tmpStr[0]));
          end
          else
          begin
            if Banks[wP - (ID_BANK_FIRST - 1)].Value > -1 then
            begin
              tmpStr := Split(InstArrayList[Banks[wP - (ID_BANK_FIRST - 1)].Value], ',');
              SKAERO_SetCTLText(SKAERO_GetMainItem(WinHandle, ID_INSTRUMENTLABEL),
              WideString(tmpStr[0]));

              MidiTracker.CurrentInst[MidiTracker.CurrentTrack] := Banks[wP - (ID_BANK_FIRST - 1)].Value;
              Channel := MidiTracker.CurrentTrack;
              MidiTracker.ChangeInstrument(MidiTracker.CurrentInst[MidiTracker.CurrentTrack]);
            end;
          end;
        end;
      end;
    end;
{$ENDREGION}
{$REGION 'WM_LBUTTONUP'}
    WM_LBUTTONUP:
    begin
      if not (CheckUseKey.GetCheckButtonStatus(CheckUseKey.Handle) = True) then
      begin
        case LoWord(wP) of
          // zuletzt gespielte Note mit der Maus stoppen
          ID_KEY_ARRAY_FIRST..ID_KEY_ARRAY_LAST:
          begin
            if OnState then
            begin
              lastChordInDrag := integer(TChord(Chord));
              StopNote(CurrentNote, lastChordInDrag);
              SKAERO_SetZorder(SKAERO_GetMainItem(WinHandle, wP+1), HWND_TOP);
            end;
          end;
        end;
      end else
      begin
        Result := SendMessage(WinHandle, WM_COMMAND, wP, lP);
        exit;
      end;
    end;
{$ENDREGION}
gruss

EWeiss 28. Apr 2015 15:48

AW: Virtual Piano
 
Noch ein kleines(Großes) Problem behoben.

Bedingt durch SetWindowRgn verändert sich die Zorder der Tasten.
Das hat zur folge das beim klick auf die Halbtontasten die vorherige gedrückte Taste mit gespielt wird
wenn sie davor gedrückt wurde.

Vorher!
Delphi-Quellcode:
// Note mit der Maus spielen
ID_KEY_ARRAY_FIRST..ID_KEY_ARRAY_LAST:
begin
  // Keyboard eingeschaltet?
  if OnState then
  begin
    lastChordInDrag := integer(TChord(Chord));
    StartNote(((wp - ID_KEY_ARRAY_FIRST)), lastChordInDrag);
    currentNote := wp - ID_KEY_ARRAY_FIRST;
  end;
end;
Und jetzt!
Delphi-Quellcode:
ID_KEY_ARRAY_FIRST..ID_KEY_ARRAY_LAST:
begin
  // Keyboard eingeschaltet?
  if OnState then
  begin
    GetCursorPos(p);
    KeyHandle := WindowFromPoint(p);
    Note := MAKELONG(GetDlgCtrlID(KeyHandle), 0) - ID_KEY_ARRAY_FIRST;

    CurrentNote := Note;
    StartNote(CurrentNote, lastChordInDrag);
  end;
end;
Vorher habe ich WParam(wp) so übernommen wie es kommt.
Da aber die ZOrder verändert wird und der Button im Bereich über der Halbtontaste Transparent ist
kann ich mit dem aktuellen Window Handle nicht mehr arbeiten da es nicht mehr gültig ist.
Also hole ich mir jetzt die Note über die ControlID der ich das jetzt neu ermittelte Handle übergebe.
Jetzt klappt es trotz der Änderung der ZOrder.

Ihr könnte das ja selbst einfügen in WM_LBUTTONDOWN:

gruss

Aviator 28. Apr 2015 16:06

AW: Virtual Piano
 
Mir wurde gerade beim Entpacken der ZIp-Archive von GData ein Virus angezeigt. In zwei ZIP-Dateien hat er angeschlagen. Das nur als kleine Info.

Code:
Virenwächter
Geprüft: 6496 (2 infiziert)
Letzte Infektion: D:\Download\VirtualPiano\VPiano\Songs\Midi\freude.mid
Infiziert mit: Exploit.CVE-2012-0003.Gen (Engine A)

EWeiss 28. Apr 2015 16:18

AW: Virtual Piano
 
Zitat:

Zitat von Aviator (Beitrag 1299574)
Mir wurde gerade beim Entpacken der ZIp-Archive von GData ein Virus angezeigt. In zwei ZIP-Dateien hat er angeschlagen. Das nur als kleine Info.

Code:
Virenwächter
Geprüft: 6496 (2 infiziert)
Letzte Infektion: D:\Download\VirtualPiano\VPiano\Songs\Midi\freude.mid
Infiziert mit: Exploit.CVE-2012-0003.Gen (Engine A)

Dann hole dir einen Virenscanner der was taugt. ;)
Hab hier AVG der hat mir noch keinen Virus in meinen Archiven angezeigt geschweige denn in einer Midi Datei.
Und so was ginge bei mir auch gar nicht raus.

Und du bist der erste der mir bei fast 60 Downloads so etwas meldet.

ZITAT: Antivirus Test 2014
Zitat:

Die Messwerte auf der unteren Tabelle fassen die Ergebnisse übersichtlich zusammen. Dabei zeigt sich, dass Sie mit allen getesteten Antivirenprogrammen gut geschützt sind.
In der reinen Virenerkennung hatten alle Programme die Note „Sehr gut“. Der schlechteste Wert liegt bei 98,0 Prozent der Schädlinge (G Data), der beste bei stolzen 99,9 Prozent (Kaspersky).
Das sagt schon alles..
Vom False Alarm mal ganz zu schweigen.

gruss

Aviator 28. Apr 2015 16:28

AW: Virtual Piano
 
Hmm. Also G-Data hat als bester Virenscanner abgeschnitten. :roll:
Und den benutze ich schon ewig. Ich weiß zwar, dass der manchmal etwas zu scharf ist und ich will dir auch nicht unterstellen, dass du hier etwas virenverseuchtes hochladen würdest. Ich wollte dir nur bescheid geben, dass diese Datei als eventueller Virus erkannt wird. Es gab hier im Forum ja auch schon diverse Themen in denen es gerade um solche Fehlmeldungen ging. Alle anderen Dateien wurden ohne meckern "durchgewunken".

Aber ansonsten schönes Programm. Auch wenn ich nichts mit Klavier, und was auch immer man alles damit machen kann, am Hut habe. :-D

EWeiss 28. Apr 2015 16:31

AW: Virtual Piano
 
Zitat:

Ich wollte dir nur bescheid geben, dass diese Datei als eventueller Virus erkannt wird
Ist ja kein Problem :)

http://www.pc-magazin.de/vergleichst...h-1944271.html

Na ja Stiftung Warentest.. sorry sagt schon alles.
Zitat:

Aber ansonsten schönes Programm. Auch wenn ich nichts mit Klavier, und was auch immer man alles damit machen kann, am Hut habe.
;)

gruss

BadenPower 28. Apr 2015 16:39

AW: Virtual Piano
 
Zitat:

Zitat von EWeiss (Beitrag 1299576)
Dann hole dir einen Virenscanner der was taugt. ;)
Hab hier AVG der hat mir noch keinen Virus in meinen Archiven angezeigt geschweige denn in einer Midi Datei.

NaJa, ich benutze auf einem der Systeme auch AVG.

Aber das gelbe von Ei ist er auch nicht, denn auch er zeigt Fehlalarme, wie Du im Link unten nachlesen kannst:

http://www.delphipraxis.net/184842-a...ml#post1299118

EWeiss 28. Apr 2015 16:41

AW: Virtual Piano
 
Zitat:

Zitat von BadenPower (Beitrag 1299580)
Zitat:

Zitat von EWeiss (Beitrag 1299576)
Dann hole dir einen Virenscanner der was taugt. ;)
Hab hier AVG der hat mir noch keinen Virus in meinen Archiven angezeigt geschweige denn in einer Midi Datei.

NaJa, ich benutze auf einem der Systeme auch AVG.

Aber das gelbe von Ei ist er auch nicht, denn auch er zeigt Fehlalarme, wie Du im Link unten nachlesen kannst:

http://www.delphipraxis.net/184842-a...ml#post1299118

Da ist kein Scanner von befreit.
NUR man muss es richtig stellen das es ein false Alarm ist.

gruss

BadenPower 28. Apr 2015 16:44

AW: Virtual Piano
 
Zitat:

Zitat von EWeiss (Beitrag 1299581)
NUR man muss es richtig stellen das es ein false Alarm ist.

Habe es gleich AVG gemeldet und die entsprechende Datei hochgeladen. Bislang leider noch keine Reaktion.

EWeiss 5. Mai 2015 04:06

AW: Virtual Piano
 
Zitat:

Zitat von BadenPower (Beitrag 1299582)
Zitat:

Zitat von EWeiss (Beitrag 1299581)
NUR man muss es richtig stellen das es ein false Alarm ist.

Habe es gleich AVG gemeldet und die entsprechende Datei hochgeladen. Bislang leider noch keine Reaktion.

Na ja wenn du kein Business Kunde bist tun die sich schwer damit.

gruss

EWeiss 13. Mai 2015 06:32

AW: Virtual Piano
 
Arbeite an einer neuen Version.
Hier schon mal ein paar Shots

SkinMenu ist jetzt mit Checkbutten ausgestattet.
Volle 88 Tasten Ausstattung kann mir so das hin und her schalten mit den Oktaven sparen.
Fehler im MidiFile2 behoben.
MTF Dateien die mit dem Tracker ins Midi Format gespeichert wurden werden nun korrekt zurück in das Grid geladen.
Alles etwas größer bedingt durch die volle Anzahl der Tasten.
Auf dem Hauptformular kann man nun direkt eine Midi Datei auswählen die dann abgespielt wird.
Natürlich werden die Tasten Animiert.
Der Tracker kann dann solange nicht mehr geöffnet werden wie die Datei am spielen ist.
Fontrendern verbessert.
Lyrics Text addiert.


gruss

EWeiss 17. Mai 2015 14:08

AW: Virtual Piano
 
Neue Version Hochgeladen.

gruss

EWeiss 12. Aug 2018 23:53

AW: Virtual Piano
 
Neue Version.. Kompatibel zu Win10
Zum klimpern reicht es. ;)

gruss

klaus Meier9 7. Apr 2019 19:01

AW: Virtual Piano Source?
 
Hallo,
ich suche den Source und finde leider nirgends eine Link dazu.
Kann mit jemand weiterhelfen?
Grüße
Klaus

EWeiss 7. Apr 2019 19:08

AW: Virtual Piano Source?
 
Zitat:

Zitat von klaus Meier9 (Beitrag 1429771)
Hallo,
ich suche den Source und finde leider nirgends eine Link dazu.
Kann mit jemand weiterhelfen?
Grüße
Klaus

PN ist unterwegs..

gruss

klaus Meier9 8. Apr 2019 10:33

AW: Virtual Piano Source?
 
Super - Danke erst Mal.
Leider kommt:
The share you are looking for does not exist.

Hab es mit FF und IE versucht.


Zitat:

Zitat von EWeiss (Beitrag 1429772)
Zitat:

Zitat von klaus Meier9 (Beitrag 1429771)
Hallo,
ich suche den Source und finde leider nirgends eine Link dazu.
Kann mit jemand weiterhelfen?
Grüße
Klaus

PN ist unterwegs..

gruss


nwnssolutionssoftware 8. Apr 2019 11:45

AW: Virtual Piano
 
Hätte ebenfalls intresse an den Sources.
Besteht das Angebot mit der PN noch ?

EWeiss 8. Apr 2019 11:47

AW: Virtual Piano
 
Zitat:

Zitat von nwnssolutionssoftware (Beitrag 1429822)
Hätte ebenfalls intresse an den Sources.
Besteht das Angebot mit der PN noch ?

jo PN unterwegs

gruss

klaus Meier9 10. Apr 2019 12:01

AW: Virtual Piano Source?
 
Danke für deine Mühe.
Leider kommt immer noch:
The share you are looking for does not exist.

Hab es mit FF und IE versucht.

PN an dich geht leider nicht, darum hier ein weiterer Versuch.

Viele Grüße

EWeiss 10. Apr 2019 15:04

AW: Virtual Piano
 
Sorry nein ihr müsst nicht mehr fragen.
Ich habe den link 7 Stunden online gehalten wenn es euch so interessiert hätte wärt ihr am Ball geblieben.

gruss

DieDolly 10. Apr 2019 16:01

AW: Virtual Piano
 
Zitat:

Zitat von EWeiss (Beitrag 1429997)
Sorry nein ihr müsst nicht mehr fragen.
Ich habe den link 7 Stunden online gehalten wenn es euch so interessiert hätte wärt ihr am Ball geblieben.

gruss

So funktioniert das Internet und eine Community aber eigentlich nicht. :roll:

EWeiss 10. Apr 2019 18:18

AW: Virtual Piano
 
Zitat:

Zitat von DieDolly (Beitrag 1430005)
Zitat:

Zitat von EWeiss (Beitrag 1429997)
Sorry nein ihr müsst nicht mehr fragen.
Ich habe den link 7 Stunden online gehalten wenn es euch so interessiert hätte wärt ihr am Ball geblieben.

gruss

So funktioniert das Internet und eine Community aber eigentlich nicht. :roll:

Dann kläre mich doch mal auf wie es zu funktionieren hat.
oops sollte eigentlich als PN raus gehen aber gut..

gruss

klaus Meier9 10. Apr 2019 21:28

AW: Virtual Piano
 
Zitat:

Zitat von EWeiss (Beitrag 1429997)
Sorry nein ihr müsst nicht mehr fragen.
Ich habe den link 7 Stunden online gehalten wenn es euch so interessiert hätte wärt ihr am Ball geblieben.

gruss

Oh Schade,
Wenn ich gewusst hätte, dass du mit "ich lasse den Link bis Morgen Abend aktiv" nur 7 Stunden meinst
und du erwartest, dass man ständig eMails prüft, ob du geschrieben hast, dann ...

Danke jedenfalls für deine Mühe.

Viellecht hat jemand anders noch Sourcen zu einem Virtual Piano?

Viele Grüße

trymeout 12. Apr 2019 21:02

AW: Virtual Piano
 
Ich hätte Interesse am Source Code. Warum nicht einfach für jeden zum Download? :cyclops:

EWeiss 13. Apr 2019 10:17

AW: Virtual Piano
 
Zitat:

Zitat von trymeout (Beitrag 1430191)
Warum nicht einfach für jeden zum Download? :cyclops:

Ich bin einfach Müde gegen die ständigen Diffamierungen in jeglicher Form gegen meine Person anzukämpfen das ist der einzige Grund.

Bisher habe ich alle meine Arbeiten hier zur freien Verfügung für jedermann hochgeladen inklusive Quelltext.
Wenn ich um Hilfe bat musste ich mir Dinge anhören wie "Ich helfe dir nur aus Mitleid", "Ich kann nichts", "Meine Arbeit ist Vaporware"
Die wenigsten Leute waren bereit, ohne mich dabei runterzumachen, bei diversen Problemen zu Unterstützen, diese kann ich an einer Hand abzählen.

Also was wollt ihr mit meiner Arbeit wenn der Dank den man erhält Gespött und Mobbing jeglicher Art ist.
Wie gesagt ich bin einfach Müde anstelle von Dank nur Hohn und Spott zu ernten.

Wollte eigentlich kein Statement dazu abgeben.. aber manchmal muss einfach gesagt werden, was gesagt werden muss.

PS:
Man muss sich nur mal diesen Thread hier durchlesen um zu verstehen was ich meine.
Bei den anderen ist es auch nicht anders.

gruss

DieDolly 13. Apr 2019 12:35

AW: Virtual Piano
 
Zitat:

Bisher habe ich alle meine Arbeiten hier zur freien Verfügung für jedermann hochgeladen inklusive Quelltext.
Wenn ich um Hilfe bat musste ich mir Dinge anhören wie "Ich helfe dir nur aus Mitleid", "Ich kann nichts", "Meine Arbeit ist Vaporware"
Die wenigsten Leute waren bereit, ohne mich dabei runterzumachen, bei diversen Problemen zu Unterstützen, diese kann ich an einer Hand abzählen.
Sowas gehört sich nicht und ich denke, dass der Chef des Hauses ein kleines Machtwort aussprechen sollte.

Jede Arbeit, egal ob groß oder klein, ist zu schätzen.

EWeiss 13. Apr 2019 12:58

AW: Virtual Piano
 
Hier ist der link zur Datei ist als Anhang hier im Forum zu groß..
Ich bin mir aber bewusst das ich auf Dank irgendeiner Art wohl verzichten muss.. das ist hier nun mal so.


Es kann sein das ihr die Seite aktualisieren müsst. Ist nicht gerade die schnellste.
Der link ist solange gültig wie es mir beliebt.


Entfernt..

gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:49 Uhr.
Seite 9 von 9   « Erste     789   

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