![]() |
AW: Virtual Piano
Zitat:
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 |
AW: Virtual Piano
Zitat:
Zitat:
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:
gruss
{$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} |
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:
Und jetzt!
// 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;
Delphi-Quellcode:
Vorher habe ich WParam(wp) so übernommen wie es kommt.
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; 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 |
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) |
AW: Virtual Piano
Zitat:
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:
Vom False Alarm mal ganz zu schweigen. gruss |
AW: Virtual Piano
Hmm. Also G-Data hat als
![]() 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 |
AW: Virtual Piano
Zitat:
![]() Na ja Stiftung Warentest.. sorry sagt schon alles. Zitat:
gruss |
AW: Virtual Piano
Zitat:
Aber das gelbe von Ei ist er auch nicht, denn auch er zeigt Fehlalarme, wie Du im Link unten nachlesen kannst: ![]() |
AW: Virtual Piano
Zitat:
NUR man muss es richtig stellen das es ein false Alarm ist. gruss |
AW: Virtual Piano
Zitat:
|
AW: Virtual Piano
Zitat:
gruss |
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 |
AW: Virtual Piano
Neue Version Hochgeladen.
gruss |
AW: Virtual Piano
Neue Version.. Kompatibel zu Win10
Zum klimpern reicht es. ;) gruss |
AW: Virtual Piano Source?
Hallo,
ich suche den Source und finde leider nirgends eine Link dazu. Kann mit jemand weiterhelfen? Grüße Klaus |
AW: Virtual Piano Source?
Zitat:
gruss |
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:
|
AW: Virtual Piano
Hätte ebenfalls intresse an den Sources.
Besteht das Angebot mit der PN noch ? |
AW: Virtual Piano
Zitat:
gruss |
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 |
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 |
AW: Virtual Piano
Zitat:
|
AW: Virtual Piano
Zitat:
oops sollte eigentlich als PN raus gehen aber gut.. gruss |
AW: Virtual Piano
Zitat:
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 |
AW: Virtual Piano
Ich hätte Interesse am Source Code. Warum nicht einfach für jeden zum Download? :cyclops:
|
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. 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 |
AW: Virtual Piano
Zitat:
Jede Arbeit, egal ob groß oder klein, ist zu schätzen. |
AW: Virtual Piano
![]() 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 20:54 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