Hallo,
trotz der mir von Anfang an bekannten, problematischen Programmierung von Interrupt- und Timing-abhängigen Codes in VB6 habe ich begonnen, einen MIDI-Sequenzer zu programmieren. VB6 deshalb, weil ich seit über 10 Jahren immer mal wieder kleinere bis mittlere Programme geschrieben habe und so sehr schnell Dinge entwickeln kann und ganze Unterprogramme aus alten Listings übernehmen kann und NET doch eine grössere Umstellung ist.
Wichtige Dinge zum Programm:
Hauptseite hat u. A.:
- eine Tabelle (HFlexGrid) in der die Verknüpfungen zu den Musik-Patterns gespeichert werden
- eine (unsichtbare) Tabelle aus einer ADO-Datenbank (Access 2000) in der die eigentlichen Patterns mit Zusatzinfos gespeichert werden
- je 16 Spur-Infos wie MIDI-Kanal, Klang-Programm, etc. in diversen TXT- und CBO-Boxen
Es gibt bereits 2 funktionierende Editoren für Schlagzeug und Noten, Routienen zum Speichern und laden, etc. , der Code umfasst bisher geschätzte 800 Codezeilen in 10 Formularen/Modulen)
Das Problem:
Die Abspiel-Routine (bisher nur ca. 50 Zeilen Code) funktioniert gut und ist (erstaunlicherweise) genug performant, um die Patterns an das MIDI-Interface in Echtzeit weiterzugeben. Sobald ich aber z.B. einen Editor öffne (was während des Abspielens möglich sein soll) oder in CBO-Boxen scrolle, kommt der normale VB6 Timer nicht mehr hinterher und die Musik stockt.
Ich habe jetzt 3 Ideen, für eine Lösung und möchte Eure Meinung dazu hören:
- 1. gibt es einen Timer für VB6 der von den andern "Events" von VB6 unbeeindrucht das Timing durchzieht?
- 2. macht es Sinn, die Abspiel-Routiene in eine seperate exe-Datei zu verlagern und die Daten dahin zu übergeben?
- 3. soll ich die Abspiel-Routiene in C verlagern (was ich bisher kaum kann)?
Ich programmiere z. Zt. unter Vista 32Bit, das Programm soll aber unter Win XP, Vista, 7, 8, wenn möglich auch 95, 98, ME laufen.
Da ich einige Tage in Google keine Antwort auf diese Frage fand, hoffe ich auf eine Antwort.
Gruss
Jörg
trotz der mir von Anfang an bekannten, problematischen Programmierung von Interrupt- und Timing-abhängigen Codes in VB6 habe ich begonnen, einen MIDI-Sequenzer zu programmieren. VB6 deshalb, weil ich seit über 10 Jahren immer mal wieder kleinere bis mittlere Programme geschrieben habe und so sehr schnell Dinge entwickeln kann und ganze Unterprogramme aus alten Listings übernehmen kann und NET doch eine grössere Umstellung ist.
Wichtige Dinge zum Programm:
Hauptseite hat u. A.:
- eine Tabelle (HFlexGrid) in der die Verknüpfungen zu den Musik-Patterns gespeichert werden
- eine (unsichtbare) Tabelle aus einer ADO-Datenbank (Access 2000) in der die eigentlichen Patterns mit Zusatzinfos gespeichert werden
- je 16 Spur-Infos wie MIDI-Kanal, Klang-Programm, etc. in diversen TXT- und CBO-Boxen
Es gibt bereits 2 funktionierende Editoren für Schlagzeug und Noten, Routienen zum Speichern und laden, etc. , der Code umfasst bisher geschätzte 800 Codezeilen in 10 Formularen/Modulen)
Das Problem:
Die Abspiel-Routine (bisher nur ca. 50 Zeilen Code) funktioniert gut und ist (erstaunlicherweise) genug performant, um die Patterns an das MIDI-Interface in Echtzeit weiterzugeben. Sobald ich aber z.B. einen Editor öffne (was während des Abspielens möglich sein soll) oder in CBO-Boxen scrolle, kommt der normale VB6 Timer nicht mehr hinterher und die Musik stockt.
Ich habe jetzt 3 Ideen, für eine Lösung und möchte Eure Meinung dazu hören:
- 1. gibt es einen Timer für VB6 der von den andern "Events" von VB6 unbeeindrucht das Timing durchzieht?
- 2. macht es Sinn, die Abspiel-Routiene in eine seperate exe-Datei zu verlagern und die Daten dahin zu übergeben?
- 3. soll ich die Abspiel-Routiene in C verlagern (was ich bisher kaum kann)?
Ich programmiere z. Zt. unter Vista 32Bit, das Programm soll aber unter Win XP, Vista, 7, 8, wenn möglich auch 95, 98, ME laufen.
Da ich einige Tage in Google keine Antwort auf diese Frage fand, hoffe ich auf eine Antwort.
Gruss
Jörg