Dies ist die Datei C:\Arbeit-jms\Eigene Dateien 2\Texte\Bedienungsanleitungen\Csofm\ Huku-Startseite.txt =============================================================================================================== Hukumu (vorher Huku) - 03.01.2011 - 24.05.2015 =============================================================================================================== Marker- und Punkte-Copy ---c--- [C:\Arbeit-jms\Eigene Dateien 2\Texte\Bedienungsanleitungen\Csofm\Huku-Startseite.txt::19:31:25 17.05.2015 <---] Arbeit (12.05.2015 bis 21.05.2015) ---&-- [C:\Arbeit-jms\Eigene Dateien 2\Texte\Bedienungsanleitungen\Csofm\Huku-Startseite.txt::10:11:50 17.05.2015 <---] geplante Hukumu-Erweiterungen --*-- [C:\Arbeit-jms\Eigene Dateien 2\Texte\Bedienungsanleitungen\Csofm\Huku-Startseite.txt::09:29:56 08.05.2015 <---] Tonhöheneinstellung durch Editieren von Resonanz.orc [C:\Arbeit-jms\Eigene Dateien 2\Texte\Bedienungsanleitungen\Csofm\Huku-Startseite.txt::12:17:08 07.05.2015 <---] Klangveränderungen durch Editieren von Resonanz.orc [C:\Arbeit-jms\Eigene Dateien 2\Texte\Bedienungsanleitungen\Csofm\Huku-Startseite.txt::11:14:58 04.05.2015 <---] Tricks beim Erstellen und Editieren der Kurvenpunkte [C:\Arbeit-jms\Eigene Dateien 2\Texte\Bedienungsanleitungen\Csofm\Huku-Startseite.txt::23:20:48 03.02.2013 <---] Aktuell (18.09.2013) [C:\Arbeit-jms\Eigene Dateien 2\Texte\Bedienungsanleitungen\Csofm\Huku-Startseite.txt::23:23:01 05.01.2011 <---] Variationen (September 2013) [C:\Arbeit-jms\Eigene Dateien 2\Texte\Bedienungsanleitungen\Csofm\Huku-Startseite.txt::23:00:26 03.09.2013 <---] Suchworte [C:\Arbeit-jms\Eigene Dateien 2\Texte\Bedienungsanleitungen\Csofm\Huku-Startseite.txt::21:25:56 19.01.2011 <---] Private Sub ScoDatei(), Private Sub OrcDatei() usw. [C:\Arbeit-jms\Eigene Dateien 2\Texte\Bedienungsanleitungen\Csofm\Huku-Startseite.txt::19:15:26 10.10.2013 <---] =============================================================================================================== 03.01.2011 Ich dachte, ich würde die Möglichkeit, Formulare durchscheinend zu machen, für ein Programm zum Abtasten (Abmalen) bereits gezeichneter Hüllkurven (in Reaper) verwenden können. Dieses Nachzeichnen wäre aber sehr aufwendig, da es beim Zeichnen von Hüllkurven in Reaper nötig ist, in großem Maße die Zoomstufen zu verändern. Dieses Verändern der Zoomstufen wäre dann auch beim Abmalen wieder notwendig. - Jetzt habe ich eine bessere Idee: In den .rpp-Dateien von Reaper steht u.a. alles, was man gezeichnet hat, also auch die Hüllkurven. Beispiel für eine Kurve, die als Lautstärkehüllkurve gezeichnet worden war: PT 467.281738 0.000000 0 PT 467.284475 1.627586 0 PT 467.450747 0.937931 0 0 1 PT 467.542910 0.000000 0 PT 467.686630 0.000000 0 PT 467.687785 1.309735 0 PT 467.815010 0.654867 0 Ich brauche also nur ein Programm, das diese Zahlen passend für Resone macht! Es soll heißen: Huku (neu: HUKUMU - 07.11.2014) Es geht in etwa so (erster Entwurf am 03.01.2011): * C:\Arbeit\mixr01-d.rpp in den Editor. * 'Huku' suchen (mein Trackname) * Zeitanzeige unten auf 'Sekunden' stellen * Meine zuletzt gezeichnete Hüllkurve suchen (z.B. ab Sek. 465.694, bis zum Ende der Hüllkurvenzahlen) * diese Zahlenreihe kopieren und in eine spezielle Datei (Huku.txt) übertragen. * Dann das neue Programm Huku starten. Es sollte diese Zahlen in Resone-konforme Zahlenreihen umwandeln und eine Datei Huku.rsz erstellen. * Jetzt noch die Frequenzen direkt in Huku.rsz nachtragen bzw. eine nachträgliche Eingabemöglichkeit in Huku vorsehen, wo die Frequenzen nachgetragen werden können. --------------------------------------------------------------------------------------- Es wird nach dem Dateinamen für das zu lesende Reaperfile (z.B. mixr01d.rpp) und nach dem Spurnamen (z.B. Hullkurve) gefragt. Wenn 'Return' gedrückt wird, übernimmt das Programm die früher eingegebenen Werte. Ein Hüllkurvenpunkt muss in Reaper markiert werden (er wird dann als Punkt und nicht als Kreis dargestellt). Dies ist der Startpunkt für die Hüllkurvenauswertung. Tonhöhen werden in Reaper mit Hilfe der Markerbezeichnungen eingegeben! 19:04 04.01.2011 - 05.01.2011 Jetzt wird gemacht: * nur innerhalb der markierten Punkte gucken! <--- ok * Die Zeitpunkte der relevanten Hüllkurven müssen gespeichert werden (kleinster und größter Zeitpunkt) <---- ok * die Marker finden (Schlüsselwort 'MARKER') <---- ok und die Marker-Zeitpunkte ansehen * Nachsehen, welche Marker innerhalb des relevanten Zeitraums sind und deren Inhalt analysieren. - Zunächst diese Marker mit AddItem auflisten! (Test) - ok! Die Markernummern müssen nicht zwangsläufig aufsteigend eingegeben worden sein. * die Frequenzwerte auslesen (erst mal zum Testen anzeigen) und in die richtigen Feldpositionen schreiben. * Zeileninhalt der Kurvenzahlen auswerten * Zeileninhalt der Frequenzzahlen auswerten * Huku.rsz schreiben Beim Programmende: * Schreiben der eingegebenen Werte in eine Datei * Übernehmen früher eingegebener Werte aus einer Datei Für die Frequenzen muss das Programm nur schauen, welche Marker sich innerhalb des relevanten Zeitraums befinden und diese dann auswerten. --------------------- 18:13 06.01.2011 Jetzt: START: * Private Sub Auswertung(): Lies die erste (nächste) relevante Zeile (also mit Index na1 - Ende ist ne1) im Zeilenfeld ZL(), also Zl(na1) in die Variable 'Zeile'. * Private Sub ExtraktVolkurvenZeitpunkte(): Extrahiere den Zeitwert (das ist der Hüllkurvenzeitwert), wandle ihn passend um und schreibe diesen Wert ins Feld ZP(). ok * Private Sub ExtraktVolkurvenLautstarken(): Extrahiere den Lautstärkewert und schreibe diesen Wert ins Feld LT(). ok (Umwandlung später!) * Lies alle Zeilen im Markerfeld() (also mit Index 1 bis mz). * Private Sub ExtraktMarkerZeitpunkte(): Extrahiere den Zeitwert (dies ist der Markerzeitwert). ok Schreibe alle Zeilen ins Feld Markerzeiten() ok Liste diese Zeiten zum Spaß auf ---> Call MarkerzeitwerteZeigen ok Extrahiere die Frequenzwerte! <------------- ! Schreibe alle Frequenzwerte (keine anderen Markertexte) in das Feld Frequenzen() ok Diesen Frequenzwert in das Feld HT() schreiben (Index immer derselbe wie bei LT()) ok START (Private Sub AuswertungFRQ()) * Lies eine Zeile im Feld ZP(), also einen Hüllkurvenzeitpunkt - also von na1 bis ne1. Lies alle Zeilen im Feld Markerzeiten Wenn ein --> ähnlicher <-- Zeitwert dabei ist, dann übernimm den zugehörigen Frequenzwert - ok (hoffentlich steht einer drin!) ins Feld HT() (gleicher Index). In der ersten Zeile von ZP() sollte in jedem Fall ein passender Marker zu finden sein! . . Runden mit der Beispielzahl 22.78945: auf 0.1 Sekunden genau: 22.78945 * 10 = 227.8945 ... 227.8945 + 0.5 = 228.3945 ... INT (228.3945) = 228 ... 228 / 10 = 22.8 auf 0.05 Sekunden genau?: 22.78945 * 5 = 113.94725 ... 113.94725 + 0.5 = 114.44725 ... INT (114.44725) = 114 ... 114 / 5 = 22.8 . . . Wenn Gleichzeit = False (und nicht der erste Durchgang), dann HT(index) = HT(index-1) (das heißt: den vorigen Wert übernehmen). WIEDERHOLE WEITER: * Lies eine im Feld ZP() (nacheinander Zeile 1 bis Zeile (ne1 - na1). Lies alle Zeilen im Feld Markerzeiten(). Wenn sich dort ein Zeitwert dem oben gelesenen Zeitwert ähnelt (müsste nach Rundung gleich sein), dann übertrage den Frequenzwert aus dem Feld Frequenzen() ins Feld HT() Beim ersten Durchgang muss dies der Fall sein, sonst Fehlermeldung ausgeben ('Frequenzangabe am ersten Hüllkurvenpunkt fehlt'). 02:29 10.01.2011 TOLL - es funktioniert super! JETZT * anstelle einer 0 immer die vorige Frequenz hineinschreiben! - ok * noch eine Fehlermeldung, wenn beim ersten Punkt keine Frequenz steht! - ok * In der Bedienungsanleitung genau beschreiben, wie exakt die Frequenzmarker gesetzt werden müssen! - genaue Regeln für den Frequenzeintrag, z.B. immer als erstes eine Zahl! * Erklären, wie man den Anfangs- und den Endpunkt in der Lautstärkekurve setzt (erst alle Punkte löschen, dann Anfangspunkt anklicken, dann mit gedrückter Shifttaste den Endepunkt anklicken). * Erklären, wie man die Frequenzmarker setzt (Cursor auf den betreffenden Kurvenpunkt, Pfeil nach oben solange, bis die Auflösung sehr hoch ist, dann mit 'm' den Marker setztn, dann den Marker (oben) doppelt anklicken und den Frequenzwert hineinschreiben. Es muss immer zuerst eine Zahl geschrieben werden, dann kann eine beliebige Zeichenfolge (z.B. 'Hz') folgen). * Speichern der Einstellungen in einer INI-Datei (Huku.ini) - und abrufen dieser Einstellungen. * Vielleicht auch noch eine KL-Spur zeichnen und ebenso wie die HT-Spur behandeln. Dann müssten aber die Zeitwerte der KL-Kurve mit denen der KL-Kurve übereinstimmen. Darüber wäre nachzudenken ... * Starte ein spezielles Resone (RResone), das Huku.rsz liest und automatisch abläuft (Form unsichtbar, es müssen keine Knöpfe gedrückt werden). Dieses RResone sollte sich im gleichen Ordner befinden wie Huku.exe. RResone.ini gehört in den Ordner C:\Arbeit. -------------------------------- 14:23 11.01.2011 Jetzt sind alle Werte erfasst und in den richtigen Feldern gespeichert. * Schreibe die Datei Huku.rsz (Call HukuSchreiben). Dabei folgendermaßen umwandeln: ZP auf 3 Stellen runden (oder?) LT mit 1000 multiplizieren (vielleicht später die Lautstärken aus einer Tabelle lesen?) HT kann unverändert übernommen werden * Noch Abfragen oder Knöpfe oder so für HT-Multiplikator, KL (wie HT, oder alle wie der erste Wert) * separates KL wäre auch sehr interessant - am besten eine zweite Zahl in die Marker schreiben, getrennt durch ein Trennzeichen! <---------------- !!! (dann muss allerdings der Erkennungsmechanismus in der Routine ..... verfeinert werden!) - ok, gut! 14:42 14.01.2011 Globale Lautstärkekorrektur ermöglichen! <--- Globale Tonhöhenkorrektur ermöglichen! <--- Globale KLangfrequenzkorrektur ermöglichen! <--- Jetzt noch: globale Lautstärke? globale Tonhöhe? Master-Klangfrequenz (gilt für alle Töne)? Master-Tonhöhe (gilt für alle Töne)? Noch die restlichen Werte reinschreiben - Klangdatenbank? ... übernehmen aus Huku.ini?! - ok Diese Werte von Huku aus veränderbar machen!! <--- Sinus ja oder nein? ... dann kein KL! <--- 21:24 17.01.2011 * Es fehlt noch ein Knopf in Huku, mit dem man die Datei Resonanz.wav unter einem anderen (automatischen) Namen abspeichern kann (wie in Resone)! - ok * Wenn ein Tonhöhenfaktor (oder Klangfrequenzfaktor) eingestellt wird, sollte vielleicht nicht noch nach einer Einzeltonhöhe gefragt werden ... (oder?). Unwichtig! * solange w gedrückt wird, sollte nicht mehr der Start- und Endkurvenpunkt nachgesehen werden - er sollte vorher gespeichert werden. - ok. * Vglmidi soll von Huku aus zu starten sein * Möglichkeit, die Voreinstellung auch bei der Frage 'Sinus?' zu übernehmen (muss dann auch in Huk.ini eingetragen werden). wäre gut! 21:41 24.01.2011 Wenn statt einer Zahl Buchstaben im Frequenzmarker sind, steigt das Programm aus .. Prüfung einbauen! in Private Sub ResonefileSchreiben() stürzt es ab ... 09:57 25.01.2011 Gut wäre es, wenn auch Huhu.rsz abgespeichert würde (mit gleichem Index wie die Wav-Datei!): Huku1.rsz, Huku2.rsz usw. Nein, brauchen wir nicht, wir haben ja die Hüllkurven - diese nie löschen! Aber: Huku4.ini, wegen der fof-Einstellungen! ///////////////////////////////////////////////////////////////////////////////////// 23:00:26 03.09.2013 <--- 22:59 03.09.2013 NEU: Variationen ermöglichen mit Hilfe von Zufallsgeneratoren. Damit kann u.a. eine orchestrale Wirkung erzielt werden: Jedes Instrument spielt ein wenig anders. Ich dachte erst, es müsste für jede Variation eine neue Reaperdatei geschrieben werden. Das scheint aber nicht nötig zu sein ... Allerdings können dann die valiierten Hüllkurven nicht grafisch dargestellt werden. --------------------------------------------------------------------- Jede der Spalten Zeitpunkte, Lautstärken, Tonhöhen, Klangfrequenzen hat einen Knopf 'V' (Variationen). Wenn der Knopf 'V' gedrückt wird, passiert folgendes: Es erscheint eine Infobox. Frage: Variationsstärke in Prozent. usw. ------------- Oder: Jede der Spalten erhält einen (senkrechten) Schieberegler. Solange der Schieberegler auf 0 steht, ändert sich nichts. Durch das Einstellen mit dem Schieberegler wird eine Variation in Gang gesetzt, je größer der eingestellte Wert, desto stärker die Variation. Die Arrays ZT(n), LT(n), HT(n) und KL(n) erhalten also bei Betätigung der Schieberegler neue Daten. Nachdem ein Schieberegler eingestellt wurde, muss noch ein Eingabeknopf betätigt werden. Damit erst wird der Zufallsgenerator in Gang gesetzt und das Array erhält die neuen (abgewandelten) Daten. Wenn das geschehen ist, könnte der folgende Ablauf stattfinden: Werte anzeigen Resonefile schreiben (welcher Name?) ResoneHu aufrufen ------------- Oder: * Namen der variierten Reaperdatei (gleich am Programmanfang) festlegen: Variationsname = Reapername + -Z Praktisch: Line Input #1, Reaperfilev: Text1.Text = Reaperfilev Variationsname = Text1.Text + "-Z" Schon eingebaut! * Die Arrays ZT(n), LT(n), HT(n) und KL(n) mit variierten Werten füllen * Eine Routine schreiben, die aus den Arraywerten Reaperdateiwerte macht * Eine neue Reaperdatei schreiben Diese Reaperdatei kann normal mit Reaper angezeigt und mit Huku interpretiert werden. ------------- Die erste Version ist die einfachere und bessere! Die Reaperdatei könnte zusätzlich geschrieben werden, um die Hüllkurve betrachten zu können. 12:20 06.09.2013 Tonhöhen- und Klangwerte gehen logarithmisch: 2^(1/12)=1.0594630 2^(12/12)=2 2^(1/100)=1.00695555 2^(100/100)=2 20:16 06.09.2013 ACHTUNG!! ------------------------------------------------------ Beim Verschieben der Zeitwerte müssen die Marker MIT VERSCHOBEN werden!! ............... nein - es wird ja eine neue Datei Huku.rsz geschrieben (09.09.2013) In diesem Zusammenhang vielleicht brauchbar: Private Sub MarkerFinden() sucht nur das Schlüsselwort 'MARKER' Markerzeiten(n) Private Sub MarkerzeitwerteZeigen() wird das überhaupt aufgerufen? - NEIN Private Sub MarkerfrequenzwerteZeigen() wird das überhaupt aufgerufen? - NEIN Private Sub TonhöhenfeldZEIGEN() wird auch nicht aufgerufen AUFGERUFEN WIRD: Private Sub ZeitwerteLautstärkenTonhöhenZeigen() 02:22 07.09.2013 Private Sub AuswertungFRQ() ------------------------------------------------------ 16:59 07.09.2013 Überlegungen zu einem neuen Unterprogramm: Sub ReaperfileSchreiben * an welcher Zeilennummer in Feld(n) steht MARKER: .. <---- ! * an welcher Zeilennummer in Feld(n) steht der Spurname: nx <---- ! * an welcher Zeilennummer in Feld(n) steht VOLENV2": ny <---- ! 17:29 07.09.2013 zum Testen: MsgBox "nx: " & nx ' TEST am 07.09.2013 MsgBox "ny: " & ny ' TEST am 07.09.2013 MsgBox "na, ne: " & na & " " & ne ' TEST am 07.09.2013 MsgBox "na1, ne1: " & na1 & " " & ne1 ' TEST am 07.09.2013 MsgBox "mz: " & mz ' TEST am 07.09.2013 00:56 08.09.2013 Wertv = Wertv + ZWert ' <------------------ TEST - nur mal addieren .. ZWert = VScroll1.Value / 32767 * Faktor MsgBox "zwert: " & ZWert ' <----- Test am 08.09.2013 MsgBox "Wertz: " & Wertz ' Test am 08.09.2013 12:19 10.09.2013 ---------------------------------------------------------------------------- RESONE erweitern (ich habe gestern schon kleine Veränderungen vorgenommen ---> [C:\Windows\explorer.exe "C:\Arbeit\VB\Resone4\Test8\"] 12:06 09.09.2013 ------------------------------------------------------------------- Für die neuen Möglichkeiten in Huku (Variationen erzeugen) brauche ich jetzt ein Programm oder eine Routine zur Umwandlung einer RSZ-Datei in eine RPP-Datei! Wer kann eine Rsz-Datei lesen? - Resone. Sollte also Resone die Fähigkeit bekommen, eine Reaperdatei zu schreiben? Mein zusätzliches Ziel: Leichte Veränderungen (Variationen) einer mit Capella geschriebenen Melodie erzeugen. So wäre ein wünschenswerter Ablauf: ------------------------------------------------------------------- Bisher in Resone: Capella ---> Midifile ---> Viole.rsz ---> Resonanz.sco Resonanz.orc in Resone (wäre neu): Viole.rsz ---> Viole.rpp (Resone aufrufen: dann kann man die Hüllkurve, die Frequenz- und Klangwerte ansehen). Möglich sollte dann auch sein: Tonverlauf.rsz ---> Tonverlauf.rpp. Dann in Huku: Viole.rpp ---> Huku.rsz 12:14 10.09.2013 Vielleicht in Huku dieselbe Reaperschreibroutine einbauen! Dann kann ich Variationen machen und dann die veränderten Hüllkurven ansehen (und evtl. von Hand weiter verändern). 12:24 10.09.2013 Info - in Resone: Private Sub Command5_Click() ' das ist die große graue Taste 'Cso'! Wer schreibt denn die Dateien Resonanz.sco und Resonanz.orc in Resone? 12:20:41 10.09.2013 <--- KLEINE RESONE-ANALYSE 10.09.2013 - 10.10.2013 Die GRÜNE Taste wird gedrückt - sie ruft folgendes auf: ---------------------------------------------------------------------- Private Sub Command1_Click() ' dies ist die grüne Taste 'B' Zufhol = False Call GBF1 Call GBF2 PRE = False Call Form_Load <----------- was passiert hier? ...... o Namensdeklaration o RSZ-Datei ins Feld o RSZ-Datai analysieren o Csound-Dateien .orc und .sco schreiben, FOF oder Sinus Testliste.Clear Call ShowSCO ' Die Sco-Datei darstellen Testliste.AddItem "" Testliste.AddItem "" Testliste.AddItem "" Testliste.AddItem "" Testliste.AddItem "==========================================================================================================" Testliste.AddItem "" Testliste.AddItem "" Testliste.AddItem "" Testliste.AddItem "" Call ShowORC ' Die Orc-Datei darstellen Call Command5_Click <---------- wie Druck auf die graue Cso-Taste: Csound starten über eine BAT-Datei End Sub ---------------------------------------------------------------------- ---------------------------------------------------------------------- Private Sub Form_Load() - nur das Wichtigste dargestellt und mit Kommentaren versehen Arbeitsordner = "C:\Arbeit\" Tonliste = "Tonverlauf" Csoundname = "Resonanz" Vondatei = Arbeitsordner & Tonliste & ".rsz" oder Vondatei = Preset - Preset kann sein: C:\Arbeit\Tonverlauf.rsz oder C:\Arbeit\Viole.rsz oder C:\Arbeit\Zufall.rsz Zurdatei0 = C:\Arbeit\Viole.rsz Zurdatei1 = C:\Arbeit\Resonanz.sco Zurdatei2 = C:\Arbeit\Resonanz.orc Zurdatei3 = C:\Arbeit\cs06b.bat Zufallsdatei = C:\Arbeit\Zufall.rsz Open Vondatei For Input - Open For Input! Call AlleZeilenLesen - also bereits beim Programmaufruf ... alle Zeilen der RSZ-Datei ins Feld ZL(n)! nv <--- enthält die Zahl der Zeilen Call Zeilencheck - kapiert eine RSZ-Datei <----- !!! Folgendes NUR beim ersten Mal: Open C:\Arbeit\cs06b.bat - Open For Output Call BatDatei - die komplette BAT-Datei schreiben (siehe unten) Open C:\Arbeit\Resonanz.orc - Open For Output Call OrcDatei1 oder Call OrcDatei - FOF oder SINUS Open C:\Arbeit\Resonanz.sco - Open For Output Call ScoDatei1 oder Call ScoDatei - FOF oder SINUS End Sub ---------------------------------------------------------------------- 14:09 11.09.2013 ' NEU am 11.09.2013: --------------------------------------------------------------------------------------------------- In Sub Form_Load(): Zurdatei4 = Preset + ".rpp" (muss ohne Pfad sein!) So würde die zu erstellende Reaperdatei immer nach der zu lesenden RSZ-Datei heißen. Z.B. Huku369.rpp MsgBox "Preset: " & Preset ' Test am 11.09.2013 EINFACHER: Die Reaperdatei soll immer heißen: Resonanz.rpp Also: Zurdatei4 = C:\Arbeit\Resonanz.rpp Zurdatei4 = Arbeitsordner & Csoundname & ".rpp" ' neu am 11.09.2013 (C:\Arbeit\Resonanz.rpp) --------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------- Private Sub Command5_Click() ' das ist die große graue Taste 'Cso'! Call GBF1 ' visible usw. Call GBF2 ' Grund-Textfarben Testliste.Clear ' <------- voila Call ShowSCO ' Die Sco-Datei darstellen Call ShowORC ' Die Sco-Datei darstellen <-- wieder dazugekommen ' NEU am 11.09.2013: ' Hier eine REAPERDATEI schreiben - vorerst immer mit Namen Resonanz.rpp ' Also immer bevor Csound gestartet wird, schreibt das Programm eine Reaperdatei. Open Zurdatei4 For Output As #1 ' Zurdatei4 kann bis jetzt nur sein: C:\Arbeit\Resonanz.rpp Call Reaperdateischreiben Close #1 Call KillApp("Resonanz.wav - Cool Edit") ' Titel des zu schließenden Fensters - NEU am 09.09.2013 Shell "C:\Arbeit\cs06b.bat" 'Csound starten End Sub --------------------------------------------------------------------------------------------------- 16:18 11.09.2013 in Huku ---> Private Sub AuswertungFRQ() NEU IN RESONE: Private Sub Reaperdateischreiben() MsgBox "Zurdatei4: " & Zurdatei4 ' Test am 11.09.2013 * schreibe viele Zeilen Grundtext * schreibe die Marker. Sie entstehen aus ZP(n), HT(n) und KL(n) Form: MARKER NR Zeitpunkt "ZP HT KL" 0 <------ Beispiel: MARKER 7 3.12846687990099 "202 111" 0 ... es sollen aber nur an bestimmten Zeitpunkten Marker gesetzt werden. An welchen? .......... An solchen, an denen sich entweder die Tonhöhe oder der Klangwert (oder beides) ändert! Dazu müssen die Zeitwerte gerundet werden. auf wieviele Stellen? - siehe Huku! -----> Dim rundu As Integer ' bei rundu = 10 wird auf eine Stelle hinter dem ' Dezimalpunkt gerundet rundu = 1000 ' also auf 3 Stellen wird gerundet! ... weiter in Huku: ZeileV = ZP(n) ZeileVr = (Int((ZeileV * rundu) + 0.5)) / rundu 20:19 11.09.2013 NEIN - es ist einfacher: Wir schauen ja eine RSZ-Datei an! An Zeitpunkten, an denen sich HT oder KL oder beide ändern, wird ein Marker gesetzt (MARKER geschrieben)!! * schreibe Variable fun1 für FUB: Wert ---> Variable fun2 für DEL: Wert ---> Variable delayfakt für ENTE: Wert ---> Variable entenmult für FOM: Wert ---> Variable formantfakt für FRV: Wert ---> Variable frequenzverviel für LTF: Wert ---> Variable foffakt für LTS: Wert ---> Variable sampfakt für HTS: Wert ---> Variable sampfrq ---------------------------------------------------------------------- ---------------------------------------------------------------------- Private Sub BatDatei() - die Datei cs06b.bat schreiben Print #4, " REM " & Zurdatei3 Print #4, " REM Geschrieben am "; Date & ", " & Time Print #4, " REM Genauere Infos siehe Clip 'Resonanz' im NoteTab-Editor!" Print #4, "" Print #4, "" Print #4, " set PATH=%PATH%;C:\CSOUND\bin" Print #4, " set SFDIR=C:\Arbeit" Print #4, "" Print #4, " csound -o " & Arbeitsordner & Csoundname; ".wav -W -g "; Arbeitsordner & Csoundname; ".orc "; Arbeitsordner & Csoundname; ".sco" Print #4, " """ & "c:\cool\COOL96.exe" & """" & " " & """" & Arbeitsordner & Csoundname & ".wav" & """" Print #4, "" Print #4, " [c:\arbeit\cs06b.bat]" End Sub ---------------------------------------------------------------------- 15:11 10.09.2013 Die folgende Routine erweitern: Von da aus soll eine Reaperdatei geschrieben werden. .... oder von Form_Load aus <--- ?? (dann wird sie grundsätzlich immer geschrieben, mit einem Standardnamen, z.B. Kurve.rpp). ---------------------------------------------------------------------- Private Sub Command8_Click() ' die ROTE TASTE Call GBF1 Call GBF2 PRE = False CommonDialog1.Flags = 0 CommonDialog1.Action = 1 Preset = CommonDialog1.FileName ' Preset enthält den kompletten Pfad, ' z.B. C:\Arbeit\Huku23.rsz If Preset <> "" Then PRE = True Call Form_Load ' Call AlleZeilenLesen (also ZL(n) füllen), ' Call Zeilencheck (RSZ-Datei kapieren), usw., ' Call OrcDatei1 oder Call OrcDatei ' Call ScoDatei1 oder Call ScoDatei Testliste.Clear Call ShowSCO ' Die Sco-Datei darstellen Testliste.AddItem "" Testliste.AddItem "" Testliste.AddItem "" Testliste.AddItem "" Testliste.AddItem "==========================================================================================================" Testliste.AddItem "" Testliste.AddItem "" Testliste.AddItem "" Testliste.AddItem "" Call ShowORC ' Die Orc-Datei darstellen Call Command5_Click End If End Sub ---------------------------------------------------------------------- 13:24 13.09.2013 Eine Reaperdatei (.rpp) wird geschrieben. Achtung! - dazu müssen sich 4 Dateien im Arbeitsordner (normal: C:\Arbeit) befinden: Grundtext1, Grundtext2, Grundtext3 und Grundtext4. Zur Sicherheit werden diese Texte auch noch im Ordner C:\Arbeit\VB\Resone4 aufbewahrt. 14:15 13.09.2013 Wer schreibt in RESONE die RSZ-Datei (bei Verwendung von Capella-Noten)? Die folgenden zusammengehörenden Unterprogramme: Sub Zeilencheck2, Sub ZeileDurchsuchen und Sub RszDatei. Von Taste 3 wird zunächst Sub Command14_Click() aufgerufen! Private Sub Zeilencheck2() - versteht SCO-Dateien a = 0 mg = 0 ' Gefundene-Zeilen-Zähler z1 = 0: z2 = 0: z3 = 0 Testliste.Clear ' Test For n = 1 To nv ' nv Zeilen nacheinander aufrufen a = 0 Wort = "" 'Wörter heraussuchen Clef = "": flag = 0 zeile = ZL(n) 'Zeilen mit i01 suchen: For m = 1 To Len(zeile) ' Eine Zeile checken Buchstabe = Mid(zeile, m, 1) If Buchstabe <> " " And m <> Len(zeile) Then Wort = Wort & Buchstabe Else If m = Len(zeile) Then Wort = Wort & Buchstabe ' Zusatz! If Wort = "i01" Then ' <------------------ i01 gefunden! Clef = "i01" flag = 1 a = 1 End If End If Next m If Clef = "i01" Then mg = mg + 1 ' Gefundene-Zeilen-Zähler Call ZeileDurchsuchen <===================== End If Next n Call RszDatei <----------- Sub RszDatei wird NUR von hier aus aufgerufen! End Sub Sub RszDatei . . . Call Notennummern Call Zeitpunkte Call Lautstärken Call Tonhöhen Call Klangfarben . . . End Sub Private Sub Tonhöhen() ' Tonhöhen schreiben: Print #2, "HT"; nx = 1 For n = 1 To mg If (ZPL(n) + DTL(n)) < (ZPL(n + 1) - 0.001) Then ' 0.001 zur Sicherheit '----------------------------------------------------------------------- 1 'eine Pause soll entstehen ... Print #2, Tab(nx * tb); "[" & HTL(n) & "*1.00" & "]"; nx = nx + 1 Print #2, Tab(nx * tb); "."; nx = nx + 1 Print #2, Tab(nx * tb); "."; nx = nx + 1 Print #2, Tab(nx * tb); "."; nx = nx + 1 ' Print #2, Tab(nx * tb); "."; Print #2, Tab(nx * tb); "[" & HTL(n + 1) & "*1.00" & "]"; '(schon hier die folgende Tonhöhe einsetzen!) nx = nx + 1 '----------------------------------------------------------------------- 1 Else '----------------------------------------------------------------------- 2 Print #2, Tab(nx * tb); "[" & HTL(n) & "*1.00" & "]"; nx = nx + 1 Print #2, Tab(nx * tb); "."; nx = nx + 1 Print #2, Tab(nx * tb); "."; nx = nx + 1 '----------------------------------------------------------------------- 2 End If Next n Print #2, Tab(nx * tb); "."; Print #2, "" End Sub Private Sub Klangfarben() ' Klangfarben schreiben: Print #2, "KL"; nx = 1 For n = 1 To mg If (ZPL(n) + DTL(n)) < (ZPL(n + 1) - 0.001) Then ' 0.001 zur Sicherheit '----------------------------------------------------------------------- 1 'eine Pause soll entstehen ... Print #2, Tab(nx * tb); "[" & HTL(n) & "*1.00" & "]"; nx = nx + 1 Print #2, Tab(nx * tb); "."; nx = nx + 1 Print #2, Tab(nx * tb); "."; nx = nx + 1 Print #2, Tab(nx * tb); "."; nx = nx + 1 ' Print #2, Tab(nx * tb); "."; Print #2, Tab(nx * tb); "[" & HTL(n + 1) & "*1.00" & "]"; '(NEU: auch bei den Klangfarben schon die folgende Tonhöhe einsetzen!) nx = nx + 1 '----------------------------------------------------------------------- 1 Else '----------------------------------------------------------------------- 2 Print #2, Tab(nx * tb); "[" & HTL(n) & "*1.00" & "]"; nx = nx + 1 Print #2, Tab(nx * tb); "."; nx = nx + 1 Print #2, Tab(nx * tb); "."; nx = nx + 1 '----------------------------------------------------------------------- 2 End If Next n Print #2, Tab(nx * tb); "."; Print #2, "" End Sub Zur Information - Speicher für Werte aus Sample.sco: ----------------------------------------- Dim ZPL(10000) ' Zeitpunkt ZP Dim DTL(10000) ' Dauer DT Dim HTL(10000) ' Tonhöhe HT Dim LTL(10000) ' Lautstärke LT Private Sub ZeileDurchsuchen() Dim flag1 As Integer Wort = "" vk = 0 Call Check1_Click <-------- ??? Call Check2_Click <-------- ??? Call Check3_Click <-------- ??? For m = 1 To Len(zeile) ' Eine Zeile checken Buchstabe = Mid(zeile, m, 1) If Buchstabe <> " " And m <> Len(zeile) Then ' Ziffer gelesen flag1 = 1 Wort = Wort & Buchstabe Else ' Leerzeichen gelesen If flag1 = 1 Then vk = vk + 1 ' Vorkommenszähler If vk = 2 Then z1 = z1 + 1 If ZP_Knopf = True Then ZPL(z1) = Wort ' ZPL() schreiben ' finden End If If vk = 3 Then z2 = z2 + 1 If ZP_Knopf = True Then DTL(z2) = Wort End If If vk = 4 Then z3 = z3 + 1 If HT_Knopf = True Then HTL(z3) = Wort End If If vk = 5 Then Call Expander ' Expander! If LT_Knopf = True Then LTL(z4) = Wort End If End If flag1 = 0 Wort = "" End If Next m End Sub 20:08 13.09.2013 Bei Capella ---> Viole.rzz: Wer ist für die Minipausen zwischen den Tönen zuständig? In Private Sub RszDatei() wird vieles eingestellt! Dies macht wohl die Minipausen: If (ZPL(n) + DTL(n)) < (ZPL(n + 1) - 0.001) Then ' 0.001 zur Sicherheit %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Was muss jetzt noch gecheckt werden? ------------------------------------ In RESONE: Lautstärke bei Capella - Midi - RSZ usw. Lautstärke überhaupt besser checken <-------- ok Die Lautstärken werden in Resonanz.rpp viel zu hoch (sollten nicht größer 2.000 sein!) <-------- ok Muss nicht ein unmarkierter Punkt als erster Punkt gesetzt werden? Doch. <-------- ok In HUKU: Nicht an jedem Zeitpunkt HT- und KL-Werte berechnen! Nur dort, wo Marker sind, d.h. wo neue HT- und KL-Werte stehen ... ! 11:37 14.09.2013 In die Variationsfunktionen weitere Features einbauen: * Alle Dauern gleichzeitig verkürzen oder verlängern (Minimal- und Maximalwerte müssen dabei eingehalten werden!). 17:24 14.09.2013 1. Zeitwerte: Dauern kontrollieren 2. Zeitwerte: nur Tonstart verändern 3. Frequenzen: nur neu auftretende variieren 4. Klangwerte: nur neu auftretende variieren %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% maxi * x = 2 x = 2 / maxi 2/58748 = 0.00003404 58748 * 0.00003404 = 1.99978192 3.404 --------------------------------------------------------------- 00:40 16.09.2013 Vorerst so nicht verwendete Subroutinen: Private Sub Z_Enter1w_Click() ' neu am 05.09.2013 gedru = True ' Das Drücken dieses Knopfes bewirkt folgendes: ' Tonstartpunkte verändern. ' ' Die einzelnen Werte von ZP(n) lesen und mit dem eingestellten ' Wirkungsgrad einer Zufallsfunktion übergeben. Der Wirkungsgrad ' sollte schon zuvor mit dem Schieberegler eingestellt worden sein. ' Werte anzeigen (Sub ZeitwerteLautstärkenTonhöhenZeigen aufrufen) ' ' Regeln für die Zeitpunkte: ' Der erste Wert soll nicht verändert werden. ' Werte von 0 bis 0.1 - noch testen! ' Ein Wert muss immer größer sein als der vorangegangene Wert <------ ! ' Sollte ein Wert nicht dieser letzteren Regel entsprechen, soll einfach ' nochmal die Zufallsfunktion durchlaufen werden. Dim Wert As Double Dim r As Integer ' Ganze Töne sollen versetzt werden: ' beim ersten Ton noch nicht! (n muss also > 1 sein) ' 1. schauen, ob LT(n) = 0 ist ' 2. schauen, bei welchem n LT(n) wieder 0 ist --> Variable e für Tonende ' und Variable d für Distanz ' 4. Tonende e, also ZT(e) muss kleiner sein als der Tonanfang des nächsten ' Tons. Also muss zunächst geschau werden, wo der nächste Ton beginnt. ' Das führt alles zu weit! - machen wir vielleicht später! ' NEIN, SO NICHT: !!!!!!!!! For n = (na1 + 1) To ne1 If LT(n - 1) = 0 And LT(n) > 0 Then ' Tonanfang ' Do r = (Int(Rnd * 100) + 1) - 50 ' Wert = 1 + r * ZWert ' ZWert kommt vom Schieberegler Wert = r * ZWert ' ZWert kommt vom Schieberegler ZP(n - 1) = ZP(n - 1) + Wert ZP(n) = ZP(n) + Wert + 0.001 ' Loop Until ZP(n) > ZP(n - 1) ' muss größer sein als der vorige Wert oder 0 End If ' If ZP(n) <= ZP(n - 1) Then ZP(n) = ZP(n - 1) + 0.001 ' zur Sicherheit Next n Call ZeitwerteLautstärkenTonhöhenZeigen End Sub --------------------------------------------------------------- 11:43 16.09.2013 In Resone, Private Sub Command5_Click(): Call Reaperdateischreiben Private Sub Reaperdateischreiben() 'angepasst und in Huku eingebaut am 16.09.2013 dim Arbeitsordner ..... ??? -- oder gibt es diese Variable auch in Huku? Dim Zurdatei4 As String Dim maxi As Double ' Maximalwert Dim multi As Double ' Multiplikator Dim m As Integer ' Zähler Dim n As Integer ' Zähler Dim a As Integer ' Zähler Dim RZP As Double Dim PUNKT As Double Dim RLT As Double Dim Rundu As Integer Rundu = 10000 Zurdatei4 = nnn4 ' Huku...rpp <------- ! ' 16.09.2012 Open Zurdatei4 For Output As #1 ' schreibe Grundtext1: Open Arbeitsordner & "Grundtext1" For Input As #2 Do While Not EOF(2) Line Input #2, zeile Print #1, zeile Loop Close #2 ' schreibe die Marker: a = 0 For n = 1 To azp 'azp: Anzahl der Spalten in der Rsz-Datei maxi = 0 ' den höchsten Lautstärkewert ermitteln : For m = 1 To azp If LT(m) > maxi Then maxi = LT(m) End If Next m multi = 2 / maxi RZP = (Int((ZP(n) * Rundu) + 0.5)) / Rundu RLT = LT(n) * multi If n = 1 Or (HT(n) <> HT(n - 1) Or Kl(n) <> Kl(n - 1)) Then a = a + 1: Print #1, " MARKER " & a & " " & RZP + 1 & " """ & HT(n) & " " & Kl(n) & """ 0" End If Next n ' schreibe Grundtext2: Open Arbeitsordner & "Grundtext2" For Input As #2 Do While Not EOF(2) Line Input #2, zeile Print #1, zeile Loop Close #2 ' schreibe den Spurnamen (z.B. r01) Print #1, " NAME ""R-01""" ' schreibe Grundtext3: Open Arbeitsordner & "Grundtext3" For Input As #2 Do While Not EOF(2) Line Input #2, zeile Print #1, zeile Loop Close #2 ' schreibe die Punkte: Print #1, " PT " & "0.5" & " " & RLT & " 0" ' einen Punkt davor zeichnen! For n = 1 To azp 'azp: Anzahl der Spalten in der Rsz-Datei RZP = (Int((ZP(n) * Rundu) + 0.5)) / Rundu RLT = LT(n) * multi If n = 1 Or n = azp Then Print #1, " PT " & RZP + 1 & " " & RLT & " 0 0 1" Else Print #1, " PT " & RZP + 1 & " " & RLT & " 0" End If Next n ' schreibe Grundtext4: Open Arbeitsordner & "Grundtext4" For Input As #2 Do While Not EOF(2) Line Input #2, zeile Print #1, zeile Loop Close #2 Close #1 End Sub 14:07 18.09.2013 Die neueste Version (3.0) von Huku ist fertiggestellt. Neuerungen: Variation; Erstellen einer Reaperdatei. Einige Tage vorher wurde bereits eine neue Version von Resone fertiggestellt: V5.0! Neu: eine Reaperdatei wird geschrieben \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 23:23:01 05.01.2011 <--- 21:41 18.01.2011 Inhalt der Datei Huku.ini: =========================================================================================== Line Input #1, Reaperfilev Line Input #1, Tracknamev Line Input #1, Sinusv ' NEU (heute ist Sonntag, der 30.01.2011) Line Input #1, fuav Line Input #1, fubv Line Input #1, entev Line Input #1, delv Line Input #1, fomv Line Input #1, GesamtLTv ' Master - Lautstärke Line Input #1, GesamtHTv ' Gesamt - Tonhöhenverschiebung Line Input #1, GesamtKLv ' Gesamt - Klangfrequenzverschiebung Line Input #1, MasterHTv ' eine Tonhöhe gilt für alle Töne Line Input #1, MasterKLv ' Master-Klangfrequenz - 1 Klangfrequenz gilt für alle Töne Line Input #1, Zeile: dnz = Val(Zeile) 'Dateinamenzähler =========================================================================================== Reaperfilev Tracknamev Dim fua, fuav As String Dim fub, fubv As String Dim ente, entev As String Dim del, delv As String Dim fom, fomv As String DIM GesamtLT, GesamtLTv As String ' Gesamt - Lautstärke Dim GesamtHT, GesamtHTv As String ' Gesamt - Tonhöhenverschiebung Dim GesamtKL, GesamtKLv As String ' Gesamt - Klangfrequenzverschiebung Dim MasterHT, MasterHTv As String ' Master-Tonhöhe - 1 Tonhöhe gilt für alle Töne Dim MasterKL, MasterKLv As String ' Master-Klangfrequenz - 1 Klangfrequenz gilt für alle Töne GesamtLTv GesamtHTv GesamtKLv MasterHTv MasterKLv Huku-Info: ["C:\Programme\IrfanView\i_view32.exe" "D:\Scan\2011-01-16_231712.jpg"] --------------------------------------------------------------------------------------- If wiederhol = False Then Call Eingaben End If FUA 3 FUB 3 ENTE 0.83 DEL 0.0006 FOM 700 01:01 17.01.2011 Spezielles Resone: ----------------------------------------------------------------------------- [C:\Windows\explorer.exe "C:\Arbeit\VB\Huku01\Resone-Spez\"] ----------------------------------------------------------------------------- neu: If waroffen = True Then Call KillApp("Resonanz.wav - Cool Edit") ' Programm schließen! End If Private Function KillApp(Titel As String) Dim myHwnd As Long, MyCaption As String myHwnd = FindWindowEx(0, 0, vbNullString, vbNullString) Do While myHwnd MyCaption = String(255, 0) GetWindowText myHwnd, MyCaption, 255 If InStr(1, LCase(MyCaption), LCase(Titel)) Then SendMessage myHwnd, WM_CLOSE, 0, 0 ' Anwendung_Schließen = True End If myHwnd = FindWindowEx(0, myHwnd, vbNullString, vbNullString) Loop End Function Private Sub Command1_Click() Zufhol = False Call GBF1 -------------> nicht so wichtig Call GBF2 -------------> nicht so wichtig PRE = False Call Form_Load -------------> von vorne starten Testliste.Clear Call ShowSCO ' Die Sco-Datei darstellen -------------> entfernen! Testliste.AddItem "" Testliste.AddItem "" Testliste.AddItem "" Testliste.AddItem "" Testliste.AddItem "==========================================================================================================" Testliste.AddItem "" Testliste.AddItem "" Testliste.AddItem "" Testliste.AddItem "" Call ShowORC ' Die Sco-Datei darstellen -------------> entfernen! Call Command5_Click ' <--------- CSOUND STARTEN!! - dies ist der Csound-Knopf End Sub (ruft auf: Shell "C:\Arbeit\cs06b.bat") Inhalt von cs06.bat: ;nicht ändern! set PATH=%PATH%;C:\CSOUND\bin set SFDIR=C:\Arbeit csound -o Resonanz.wav -W -g Resonanz.orc Resonanz.sco "c:\cool\COOL96.exe" "Resonanz.wav" Private Sub Form_Load() ' Call Positionen ----------------------------------> entfernen Zufallsliste.Default = False GLnull = 0.0001 ' erste Gliss.-Zahl Rundu = 10000 ' Rundung auf 4 Stellen FOF = False fun1 = 0: fun2 = 0: delayfakt = 0: entenmult = 0: formantfakt = 0: frequenzverviel = 0 '---------------------------- ' STARTWERTE-Voreinstellungen: <------------------ Grundeinstellungen '---------------------------- 'Nur beim PROGRAMMSTART wird dieser Abschnitt durchlaufen: If Nichterst = False Then ' wenn es zum ersten Mal ist ... Call Initialisierung ' zuletzt verwendete Einstellungen 'Für die Zeitpunkte: Text3.Text = 10 ' ---> Zzeit Text2.Text = 0.05 ' ---> Mindist Text1.Text = 0.2 ' ---> Maxdist Text4.Text = 0.0001 ' ---> Quant1 ' ' Für die Lautstärken: Text9.Text = 0 ' ---> MinLT Text10.Text = 50000 ' ---> MaxLT ' ' Für die Tonhöhen: Text13.Text = 48 '(c groß) ---> MinHT Text14.Text = 84 '(c 2) ---> MaxHT Text16.Text = 127 ' ---> MaxINT Text17.Text = 2 '(Halbtonschritte) ---> QuantH Text23.Text = 4 ' HTw, Tonwiederholungsrate ' 'Für die Formantfrequenzen; Klangfarbenerzeugung: Text32.Text = 20 ' ---> MinKL Text31.Text = 40 ' ---> MaxKL Text30.Text = 127 ' ---> MaxINL Text29.Text = 2 '(Halbtonschritte) ---> QuantF Text20.Text = 0 ' HTy, Tonwiederholungsrate - 0 bedeutet: Sinus erzeugen ' ' Für die Zusatzparameter der FOF-Generatoren : Text39.Text = 0 ' Text40.Text = 0 ' Text41.Text = 0 ' Text42.Text = 0 ' Text43.Text = 0 ' Text44.Text = 0 ' ' Call GBF3 ' Info-Textfarben <--- neu Else Call GBF2 ' Grund-Textfarben ' außer Betrieb End If Nichterst = True '-------------------------------------------- Arbeitsordner = "C:\Arbeit\" Tonliste = "Huku" ' TONLISTE!! <------------------------ Csoundname = "Resonanz" '-------------------------------------------- ' Call GBF1 Call GBF5 ' If PRE = False Then Vondatei = Arbeitsordner & Tonliste & ".rsz" Else Vondatei = Preset End If Zurdatei0 = Arbeitsordner & "Viole" & ".rsz" Zurdatei1 = Arbeitsordner & Csoundname & ".sco" Zurdatei2 = Arbeitsordner & Csoundname & ".orc" Zurdatei3 = Arbeitsordner & "cs06b.bat" Zufallsdatei = Arbeitsordner & "Zufall.rsz" ' 'On Error Resume Next On Error GoTo weiter3 Open Vondatei For Input As #1 ' If PRE = False Then If Zufhol = True Then frmDatei.Caption = "R E S O N E - Tonverlaufsliste: " & Tonliste & ".rsz - Zufallsliste: " & DateinameXX frmda1 = "R E S O N E - Tonverlaufsliste: " & Tonliste & ".rsz" frmda2 = "Zufallsliste: " & DateinameXX Else frmDatei.Caption = "R E S O N E - Tonverlaufsliste: " & Tonliste & ".rsz - von Hand eingegeben" ' Fenster: Bezeichner frmda1 = "R E S O N E - Tonverlaufsliste: " & Tonliste & ".rsz" frmda2 = "Diese Tonverlaufsliste habe ich von Hand eingegeben." End If Else If Zufhol = True Then frmDatei.Caption = "R E S O N E - Tonverlaufsliste: " & Preset & " - Zufallsliste: " & DateinameXX frmda1 = "R E S O N E - Tonverlaufsliste: " & Preset frmda2 = "Zufallsliste: " & DateinameXX Else frmDatei.Caption = "R E S O N E - Tonverlaufsliste: " & Preset frmda1 = "R E S O N E - Tonverlaufsliste: " & Preset If Preset <> "C:\Arbeit\Tonverlauf.rsz" And Preset <> "C:\Arbeit\Zufall.rsz" Then frmda2 = "Eine ältere Tonverlaufsliste wurde verwendet." Else frmda2 = "" End If End If End If ' Call Info Call AlleZeilenLesen foffakt = 1: sampfakt = 1: sampfrq = 1 ' <------ neu am 29.09.2007 (SAMPLE) Call Zeilencheck 'MsgBox "foffakt = " & foffakt 'MsgBox "sampfakt = " & sampfakt '(kapiert eine RSZ-Datei) Close #1 weiter3: ' If erstesmal = 0 Then GoTo rrraus ' neu am 01.11.2007 ' <-------------------- ??? Open Zurdatei3 For Output As #4 Call BatDatei Close #4 ' Open Zurdatei2 For Output As #3 If FOF = True Then Call OrcDatei1 Else Call OrcDatei ' FOF oder SINUS Close #3 ' Open Zurdatei1 For Output As #2 If FOF = True Then Call ScoDatei1 Else Call ScoDatei ' FOF oder SINUS Close #2 rrraus: erstesmal = 1 End Sub ====================================================================== 18:29 18.01.2011 aus RESONE - Speichern mit Auto-Name: Private Sub Command36_Click() Dim nnn As String dnz = dnz + 1: dnz = Int(dnz) nnn = "c:\Arbeit\Resi" & dnz & ".wav" 'Dateinamenzähler FileCopy "C:\Arbeit\Resonanz.wav", nnn 'Shell "C:\Arbeit\directory3g.bat", 1 Shell "C:\Arbeit\directory3d.bat", 1 Call INIschreiben End Sub Private Sub Command37_Click() Shell "C:\Arbeit\directory3g.bat", 1 'Shell "C:\Arbeit\directory3d.bat", 1 End Sub Private Sub INIschreiben() Open "C:\Arbeit\Resone.ini" For Output As #9 Print #9, Text45.Text Print #9, Text46.Text Print #9, Text47.Text Print #9, Text58.Text Print #9, Text48.Text Print #9, Text49.Text Print #9, Text50.Text Print #9, Text51.Text Print #9, Text52.Text Print #9, WLTF Print #9, WLTS Print #9, WHTS Print #9, dnz 'Dateinamenzähler - NEU Close #9 End Sub Private Sub Initialisierung() Open "C:\Arbeit\Resone.ini" For Input As #9 Line Input #9, Zeile: Text45.Text = Zeile 'Hart Line Input #9, Zeile: Text46.Text = Zeile 'Tempofaktor Line Input #9, Zeile: Text47.Text = Zeile 'Frequenzfaktor Line Input #9, Zeile: Text58.Text = Zeile 'Lautfaktor Line Input #9, Zeile: Text48.Text = Zeile 'FUA Line Input #9, Zeile: Text49.Text = Zeile 'FUB Line Input #9, Zeile: Text50.Text = Zeile 'ENTE Line Input #9, Zeile: Text51.Text = Zeile 'DEL Line Input #9, Zeile: Text52.Text = Zeile 'FOM Line Input #9, Zeile: WLTF = Zeile 'LTF Line Input #9, Zeile: WLTS = Zeile 'LTS Line Input #9, Zeile: WHTS = Zeile 'HTS Line Input #9, Zeile: dnz = Val(Zeile) 'Dateinamenzähler - NEU Close #9 End Sub Vorne: Dim dnz As Integer 'Dateinamenzähler 01:43 30.01.2011 Private Sub IniInfo() Testlist.Clear Testlist.AddItem "" Testlist.AddItem "" Testlist.AddItem "Inhalt der Datei Huku.ini:" Testlist.AddItem "01 Reaperfile" Testlist.AddItem "02 Trackname" Testlist.AddItem "03 Sinus erzeugen? (j oder n)" Testlist.AddItem "04 für fof: FUA" Testlist.AddItem "05 für fof: FUB" Testlist.AddItem "06 für fof: ente" Testlist.AddItem "07 für fof: DEL" Testlist.AddItem "08 für fof: FOM" Testlist.AddItem "09 Masterlautstärke" Testlist.AddItem "10 Gesamt-Tonhöhenverschiebung" Testlist.AddItem "11 Gesamt-Klangfrequenzverschiebung" Testlist.AddItem "12 MasterHTv (eine Tonhöhe für alle Töne)" Testlist.AddItem "13 MasterKLv (1 Klangfrequenz für alle Töne)" Testlist.AddItem "14 Dateinamenzähler" Testlist.AddItem "" Testlist.AddItem "" Infotaste = 2 End Sub Private Sub IniInfo() Testlist.Clear Testlist.AddItem "" Testlist.AddItem "" Testlist.AddItem "Inhalt der Datei Huku.ini:" Testlist.AddItem "01 Reaperfile" Testlist.AddItem "02 Trackname" Testlist.AddItem "03 Sinus erzeugen? (j oder n)" Testlist.AddItem "04 für fof: FUA" Testlist.AddItem "05 für fof: FUB" Testlist.AddItem "06 für fof: ente" Testlist.AddItem "07 für fof: DEL" Testlist.AddItem "08 für fof: FOM" Testlist.AddItem "09 für ltf Testlist.AddItem "10 für lts Testlist.AddItem "11 für hts Testlist.AddItem "12 Masterlautstärke" Testlist.AddItem "13 Gesamt-Tonhöhenverschiebung" Testlist.AddItem "14 Gesamt-Klangfrequenzverschiebung" Testlist.AddItem "15 MasterHTv (eine Tonhöhe für alle Töne)" Testlist.AddItem "16 MasterKLv (1 Klangfrequenz für alle Töne)" Testlist.AddItem "17 Dateinamenzähler" Testlist.AddItem "" Testlist.AddItem "" Infotaste = 2 End Sub Line Input #1, Reaperfilev: Text1.Text = Reaperfilev Line Input #1, Tracknamev Line Input #1, Sinusv ' NEU (heute ist Sonntag, der 30.01.2011) Line Input #1, fuav Line Input #1, fubv Line Input #1, entev Line Input #1, delv Line Input #1, fomv Line Input #1, ltfv ' neu am 7.2.2011 Line Input #1, ltsv ' neu am 7.2.2011 Line Input #1, htsv ' neu am 7.2.2011 Line Input #1, GesamtLTv ' Master - Lautstärke Line Input #1, GesamtHTv ' Gesamt - Tonhöhenverschiebung Line Input #1, GesamtKLv ' Gesamt - Klangfrequenzverschiebung Line Input #1, MasterHTv ' eine Tonhöhe gilt für alle Töne Line Input #1, MasterKLv ' Master-Klangfrequenz - 1 Klangfrequenz gilt für alle Töne Line Input #1, Zeile: dnz = Val(Zeile) 'Dateinamenzähler Reaperfile = Reaperfilev Trackname = Tracknamev Sinus = Sinusv fua = fuav fub = fubv ente = entev del = delv fom = fomv ltf = ltfv ' neu am 7.2.2011 lts = ltsv ' neu am 7.2.2011 hts = htsv ' neu am 7.2.2011 GesamtLT = GesamtLTv GesamtHT = GesamtHTv GesamtKL = GesamtKLv MasterHT = MasterHTv MasterKL = MasterKLv dnz = dnz 09:58 08.02.2011 ------------------------------------------------------------- Verbesserungen in Huku: * wenn "" eingegeben wird, zu 0 wandeln! - ok ------------------------------------------------------------- Verbesserungen in ResoneHu: * Samplefrequenz-Grundeinstellung verbessern empirisch ermittelter Faktor (Sample-Frequenzfaktor): 0.06546 Neuer Frequenzfaktor fürs Sample in Resonanz.orc: 0.06546 * in Resonanz.orc: instr 97 statt instr 98! - ok * Bandpassfilter herausnehmen ... nein <----- vielleicht doch! (sonst werden hohe Töne zu leise) OK - ist vorerst raus - lässt sich aber leicht wieder einbauen. 08:49 11.02.2011 ------------------------------------------------------------- Weitere Verbesserungen in Huku: Fehler: Bei Fehlermeldung beim 3. Mal 'i' drücken (keine Markierungen oder so) bleibt oben ein Text stehen. - OK. Bedienungsanleitung ... Samples usw. Filter weg bei den Samples (?) - in ResoneHu - ok Sample aufrufbar! ... ------------------------------------------------------ * Knopf drücken ... Auswahlmenü: Datei auswählen OK - Damit haben wir die Version 2.0! <--------------- 16:57 12.02.2011 neue Wünsche für Huku ------------------------------------------------------------- Wenn 'Sinus' an ist: FUA, FUB usw. und die zugehörigen Eingabefelder sollen verdunkelt sein. Aus FOF / Sinus - Lautstärkefaktor soll Sinus-Lautstärkefaktor werden (sonst: FOF-Lautstärkefaktor). - OK. Private Sub SinusAn() Wenn Sample-Lautstärkefaktor = 0: Anzeigefeld für den Samplenamen und die beiden Knöpfe dunkel! - OK. 17:49 12.02.2011 Wunsch ------------------------------------------------------------- Huku: Sinus ist zu laut! - Dämpfung einbauen! (* 0.3) - ok. Private Sub ResonefileSchreiben() 10:13 16.02.2011 Wunsch * Eingabefelder heller! - ok. in ResoneHu: * für Samples doch wieder den Bandpassfilter - oder schaltbar machen. * HukuDatei = "c:\Arbeit\Samp100.wav" Text17.Text = Dateiname Call SchreibIni OK 10:52 19.02.2011 Wünsche * Über der Anzeige des aktuellen Samples: 'Pfad und Name des Samples'! 'Name der Reaper-Datei' höher setzen. Darunter ein Knopf wie der Sample-Auswahlknopf zur Auswahl einer Reaper-Datei! * Sample-Knopf: Es soll die aktuelle Datei voreingestellt sein! 21:25:56 19.01.2011 <--- Suchworte ================================================================================================== Private Sub Eingaben() fom = fomv Print #1, "LTF"; Print #1, Tab(j * tb); Print #1, ltf Print #1, "LTS"; Print #1, Tab(j * tb); Print #1, lts Print #1, "HTS"; Print #1, Tab(j * tb); Print #1, hts in ResoneHu: Call AlleZeilenLesen Private Sub Zeilencheck() If Wort = "FUA" And flag = 0 Then Clef = "FUA": flag = 1: a = 1 If Wort = "FUB" And flag = 0 Then Clef = "FUB": flag = 1: a = 1 If Wort = "DEL" And flag = 0 Then Clef = "DEL": flag = 1: a = 1 If Wort = "ENTE" And flag = 0 Then Clef = "ENTE": flag = 1: a = 1 If Wort = "FOM" And flag = 0 Then Clef = "FOM": flag = 1: a = 1 If Wort = "FRV" And flag = 0 Then Clef = "FRV": flag = 1: a = 1 If Wort = "LTF" And flag = 0 Then Clef = "LTF": flag = 1: a = 1 If Wort = "LTS" And flag = 0 Then Clef = "LTS": flag = 1: a = 1 If Wort = "HTS" And flag = 0 Then Clef = "HTS": flag = 1: a = 1 LTF für fof-Lautstärkefaktor LTS für Sample-Lautstärkefaktor HTS für Sample-Frequenzfaktor ltf lts hts Print #3, " iltfakt = "; Val(0.07 * foffakt); " ; Lautstärkefaktor für FOF (z.B. 0.07) <---- änderbar" Print #3, " iltfakts = "; Val(0.15 * sampfakt); " ; Lautstärkefaktor fürs Sample (z.B. 0.07) <---- änderbar" ' SAMPLE ??? Print #3, " gifreqfakts = 1 ' NEU am 07.02.2011" Print #3, " gifreqfakts = 1 ' NEU am 07.02.2011" Print #3, " gifreqfakts = "; Val(sampfrq); " ; Frequenzfaktor fürs Sample" ' SAMPLE Print #3, " gifreqfakts = "; Val(sampfrq); " ; Frequenzfaktor fürs Sample" ' SAMPLE If Clef = "LTF" Then If Wort <> "LTF" Then foffakt = Wort End If End If ' If Clef = "LTS" Then If Wort <> "LTS" Then sampfakt = Wort End If End If ' If Clef = "HTS" Then If Wort <> "HTS" Then sampfrq = Wort End If End If Private Sub OrcDatei() ' für Sinus und Sample Private Sub OrcDatei1() ' für FOF und Sample Private Sub ScoDatei() ' für Sinus Private Sub ScoDatei1() ' für FOF Print #3, ";ORCMODUL-DAUERTON:" 00:35 06.02.2011 FUA 1.1 FUB 2 ENTE 0.17 DEL 0.003 FOM 6 SAMP 1 Letzteres ist neu! Shell "C:\Arbeit\VB\Huku01\ResoneHu.exe" Programmstart "C:\Arbeit\VB\VglMidi\VglMidi.exe" Save: Resonanz.wav für Reaper oder Samplitude mit Auto-Name kopieren (Name = Huku...wav) Die Dateien Huku.wav, Huku.rsz und Huku.ini unter neuem Namen speichern Print #1, Keinsinus ' NEU (heute ist Sonntag, der 30.01.2011) MsgBox "Spur mit Namen " & Trackname & " existiert nicht im Reaperfile " & Reaperfile, , "FEHLER" MsgBox "Frequenzmarker enthält Buchstaben" HT(n) = Val(stk) ' <---- gefundene Frequenz reinschreiben <************** VAL PunkteStartEndTestAus = True na1 = 1: ne1 = 2 ' willkürliche Werte; ne1 = 2 muss so sein (ist ein Hinweis)! MsgBox "Spur mit Namen " & Trackname & " existiert nicht im Reaperfile " & Reaperfile, , "FEHLER" If na1 = 0 Or ne1 = 0 Or na1 = ne1 Then Private Sub Selection_check() 'Test: ''''''''''''''''''''''''''''''''''''' 'ne = ne + 1 'Zl(ne) = "PT 65.177396 0.000000" ' einen Punkt dazumachen ... '''''''''''''''''''''''''''''''''''''' (in AnfangEnde_check) (na und ne ermitteln) Call AuswertungLKurve .... hier stürzt es ab! Zeile = Zl(n) Call ZeitpunktHerausfinden Der nächsthöhere Zeitpunkt zu vZeit ist na1. Der nächstniedrigere Zeitpunkt zu hZeit ist ne1. ALT: Private Sub StartStopPunkte_check() ' na1 und ne1 ermitteln 'Zeilenpointer für markierten Anfang und Ende na1 und ne1 herausfinden 'Auch der niedrigste und der höchste Zeitpunkt muss gespeichert werden '(zpa und zpe)! in Sub StartStopPunkte_check(): Call ZeitpunktHerausfinden 'zpa ermitteln! <-------------------- Call ZeitpunktHerausfinden 'zpe ermitteln! <-------------------- 'Aus einer Zeile wird der Zeitpunkt extrahiert! 'zpa = zpv <------------! 'ich glaube, zpa und zpe brauchen wir garnicht ... NEU: Private Sub Selection_check() ' (nx ist die Zeilennummer, in der der Spurname steht, ' ny ist das Ende der Volkurve??, ' nv ist die Gesamtzeilenzahl!) ' na und ne Anfangs- und Endepunkt für die Volkurve Fehlermeldung, wenn keine Auswahl getroffen wurde (Selection fehlt) Private Sub Selection_check() vZeit, hZeit Call Zeitpunkte_Ermitteln SubroutinenAufrufen Call AnfangEnde_check Call ZeitpunktHerausfinden 'zpa ermitteln! <-------------------- ist vielleicht nicht mehr nötig ... Shell "C:\Arbeit\Editor\NoteTab.exe " & Arbeitsordner & Tonliste & ".rsz" Private Sub ZeitwerteLautstärkenTonhöhenZeigen() ' Testlist.Clear frmInfobox.show Modal:=vbModeless ' ??? Hier kommt eine Infobox hin: Shell "C:\Arbeit\VB\Huku01\ResoneHu.exe" Testlist.AddItem "" Testlist.Clear Call ResonefileSchreiben Private Sub StartStopPunkte_check() Stattdessen könnten wir auch die Selection testen! In C:\Arbeit\hutest.rpp steht: SELECTION 57.17671684367391 56.00323948722822 Testlist.AddItem "" Call KillApp("Resonanz.wav - Cool Edit") Punktefehler = False ' <---------------------- ??? ok? PunkteStartEndTestAus = True DateiNichtDa Punktefehler = False If KeinFrequenzmarkerAmBeginn = False And Punktefehler = False Then ' NEU: Punktefehler Call ZeitwerteLautstärkenTonhöhenZeigen wiederhol = True Punktefehler If NeueKurve Or ErsterDurchlauf = True Then call Form_Load ' ????? End ' Ende Dim Neuklick As Boolean If ErsterDurchlauf = True and Punktefehler = True then Neue Variable 'NeueKurve' ErsterDurchlauf Wenn NeueKurve = false, dann soll kein Punktefehler auftreten können! hier wird die Variable 'Punktefehler' gesetzt (boolean) Private Sub StartStopPunkte_check() Shell "C:\Arbeit\VB\Huku01\ResoneHu.exe" janein = InputBox("weitere Einstellungen? (Return = nein)", "EINGABE") Testlist.height = 1575 fua = fuav fub = fubv ente = entev del = delv fom = fomv fua = fuav fua = InputBox("FUA? (Return = " & fuav & ")", "EINGABE") ZeileVr = (Int((ZeileV * rundu) + 0.5)) / rundu Print #2, Tab(nx * tb); n; Private Sub ResonefileSchreiben() Call ResonefileSchreiben ' <------------ ! ! ! Call SchreibIni Vondatei = Arbeitsordner & Reaperfile & ".rpp" ' <---- ?! Reaperfile = Reaperfilev Trackname = Tracknamev Vondatei = Arbeitsordner & Reaperfile & ".rpp" Open "Huku.ini" For Output As #1 If KL(n) <> 0 Then KLreingeschrieben = True Dim HTreingeschrieben As Boolean Dim KLreingeschrieben As Boolean Call ZeitwerteLautstärkenTonhöhenZeigen Private Sub AuswertungFRQ() Frequenzmarker auswerten: <---------- Dim reingeschrieben As Boolean Private Sub AuswertungMARKER() ruft auf: Private Sub ExtraktMarkerFrequenzwerte() ' neuerdings wird auch noch ein KL-Wert extrahiert! Markerfreq( Private Sub AuswertungFRQ() AuswertungFRQ KeinFrequenzmarkerAmBeginn = True MsgBox "Spur mit Namen " & Trackname & " existiert nicht im Reaperfile " & Reaperfile, , "FEHLER" beim ersten Kurvenwert muss immer eine Frequenz stehen ZeitwerteZeigen Call TonhöhenfeldZEIGEN Call AuswertungFRQ Zeilencheck AlleZeilenLesen AlleZeilenZeigen rechnen Markerfreq(1000) Call ZeitwerteZeigen Call MarkerfrequenzwerteZeigen Private Sub ExtraktMarkerFrequenzwerte() ExtraktVolkurvenLautstarken Testliste.AddItem "Feld Markerzeiten() von 1 bis " & mz MsgBox n & " " & ZP(n) ' ------------------------------------------------ Markerzeiten() Call MarkerFinden Call MarkerzeitwerteZeigen Private Sub ExtraktMarkerZeitpunkte() Testliste.AddItem Private Sub ExtraktVolkurvenZeitpunkte() Private Sub Auswertung() mz ' Markerzähler Sub MarkerZeilenZeigen Sub MarkerFinden ============================================================================================= 23:20:48 03.02.2013 <--- Tricks beim Erstellen und Editieren der Kurvenpunkte ------------------------------------------------------------------------------------------ Wenn ein Ton verlängert werden soll, füge ich einfach eine Leerstelle ('empty space') ein. Das geht so: ---> [C:\Arbeit-jms\Eigene Dateien 2\Texte\Bedienungsanleitungen\Reaper.txt::23:18:33 03.02.2013 <---] ------------------------------------------------------------------------------------------ 11:14:58 04.05.2015 <--- 11:10 04.05.2015 Klangveränderungen durch Editieren von Resonanz.orc. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ifreqfakt = 1.2 (statt 0) in Resonanz.orc macht einen schwebenden Ton! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In Hukumu PLUG verwenden! 12:17:08 07.05.2015 <--- Tonhöheneinstellung durch Editieren von Resonanz.orc. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ in Resonanz.orc Zeile 74: gkfrq1 = kfrq*2 <<<<<<<<<<<<<<<<<<<<< hier kann ein Faktor für die Tonhöhe eingefügt werden ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 15:33 05.09.2013 Suchstrings .... HT(n) = Val(stk) 17:01 06.09.2013 Private Sub Command2_Click() Testliste(1).Visible = False VScroll1.Visible = False ' neu am 06.09.2013 VScroll2.Visible = False ' neu am 06.09.2013 VScroll3.Visible = False ' neu am 06.09.2013 VScroll4.Visible = False ' neu am 06.09.2013 19:11 06.09.2013 Call ResonefileSchreiben Call ZeitwerteLautstärkenTonhöhenZeigen Call Private Sub Variation_Click() Testliste(1).Visible = True Testliste(2).Visible = True Testliste(3).Visible = True Testliste(4).Visible = True Sub AuswertungLKURVE Sub AuswertungFRQ ZP(n) = LT(n) = Lautwert HT(n) = KL(n) = If Infotaste = False Then ' Neu am 06.09.2013 ' ' End If NEU: If Infotaste = False Or gedru = False Then ' Neu am 06.09.2013 gedru = True wo ???? Open Zurdatei2 For Output As #3 If FOF = True Then Call OrcDatei1 Else Call OrcDatei ' FOF oder SINUS Open Zurdatei1 For Output As #2 If FOF = True Then Call ScoDatei1 Else Call ScoDatei ' FOF oder SINUS In ResoneHu: sub orcdatei1, sub orcdatei, sub scodatei1 und sub scodatei müssen erneuert werden!! 19:15:26 10.10.2013 <--- -------------------------------------------------------------------------------------------------- Private Sub ScoDatei() ' für SINUS ZPW = ZP(1) ' wird auf 0 umgerechnet ZTP = 0 ZTPmax = Val(ZP(azp)) - ZPW: ZTPmax = Int(ZTPmax + 1) ' '--------------------------------------------------------- Print #2, " ;" & Date & ", " & Time & " - " & Zurdatei1 & " (einfacher Generator)" Print #2, " ;Hergestellt mit " & frmda1 Print #2, " ;" & frmda2 'Print #2, " ;Hergestellt mit " & frmDatei.Caption 'Print #2, " ;Geschrieben am "; Date & ", " & Time Print #2, " ;Weitere Infos siehe Clip 'Resonanz' im NoteTab-Editor!" Print #2, "" Print #2, "" Print #2, ";SCOMODUL-EINZELTON:" Print #2, "" Print #2, "" Print #2, "" Print #2, " f1 0 4096 9 1 1 0" Print #2, " f3 0 4096 9 1 1 0" Print #2, " i96 0.00 " & ZTPmax & " 0.5 1 ; SINUS - Dauerton, " & ZTPmax & " Sekunden lang" Print #2, "" Print #2, "" '--------------------------------------------------------- ' Print #2, "" Print #2, ";SCOMODUL-DAUERTON:" ' Print #2, "" Print #2, " i96 0.00 " & ZTPmax & " ; FOF - Dauerton, " & ZTPmax & " Sekunden lang" Print #2, " i97 0.00 " & ZTPmax & " ; SAMPLE - Dauerton, " & ZTPmax & " Sekunden lang" Print #2, " i98 0.00 " & ZTPmax & " ; weiterer Dauerton, " & ZTPmax & " Sekunden lang" Print #2, " i99 0.00 " & ZTPmax & " ; weiterer Dauerton, " & ZTPmax & " Sekunden lang" Print #2, " i100 0.00 " & ZTPmax & " ; weiterer Dauerton, " & ZTPmax & " Sekunden lang" Print #2, " i101 0.00 " & ZTPmax & " ; weiterer Dauerton, " & ZTPmax & " Sekunden lang" Print #2, " i102 0.00 " & ZTPmax & " ; weiterer Dauerton, " & ZTPmax & " Sekunden lang" Print #2, " i103 0.00 " & ZTPmax & " ; weiterer Dauerton, " & ZTPmax & " Sekunden lang" Print #2, " i104 0.00 " & ZTPmax & " ; weiterer Dauerton, " & ZTPmax & " Sekunden lang" Print #2, " i105 0.00 " & ZTPmax & " ; weiterer Dauerton, " & ZTPmax & " Sekunden lang" Print #2, "" Print #2, "" ' 'Glissandozahlen berechnen: For a = 1 To azp GD(a) = Val(ZP(a + 1)) - Val(ZP(a)) GD(a) = Int((GD(a) * Rundu) + 0.5) / Rundu Next a GD(0) = GLnull ' für den Start Print #2, " ;"; Tab(9); "ZTP"; Tab(19); "DT"; Tab(24); "HT"; Tab(36); "LT"; Tab(58); "GD (Gliss.-Dauer)" Print #2, "" & "i01"; Tab(8); ZTP; Tab(19); "-1"; Tab(24); HT(1); Tab(36); "0.000"; Tab(46); "pp4"; Tab(51); "pp5"; Tab(58); GD(0); Tab(67); " ; 1" ZPW = ZPW - GLnull For a = 2 To azp ZTP = Val(ZP(a - 1)) - ZPW: ZTP = Int((ZTP * Rundu) + 0.5) / Rundu Print #2, " " & "i01"; Tab(8); ZTP; Tab(19); "-1"; Tab(24); HT(a); Tab(36); LT(a); Tab(46); "pp4"; Tab(51); "pp5"; Tab(57); GD(a - 1); Tab(67); " ;"; a Next a '--------------------------------------------------------- Print #2, "" Print #2, "" 'Print #2, " ;[C:\Arbeit\cs06a.bat]" Print #2, " ;[C:\Arbeit\cs06b.bat]" Print #2, " e" '--------------------------------------------------------- End Sub Private Sub ScoDatei1() ' für FOF ZPW = ZP(1) ' wird auf 0 umgerechnet ZTP = 0 ' ZTPmax = Val(ZP(azp)) - ZPW: ZTPmax = Int(ZTPmax + 1) ' Delay berücksichtigen: ZTPmax = ZTPmax + (delayfakt * 6): ZTPmax = Int((ZTPmax * 10) + 1) / 10 '--------------------------------------------------------- 'Print #2, " ;" & Zurdatei1 & " (FOF-Generator)" 'Print #2, " ;Geschrieben am "; Date & ", " & Time 'Print #2, " ;Genauere Infos siehe Clip 'Resonanz' im NoteTab-Editor!" ' Print #2, " ;" & Date & ", " & Time & " - " & Zurdatei1 & " (FOF- Sample- und Percussion-Generator)" Print #2, " ;Hergestellt mit " & frmda1 Print #2, " ;" & frmda2 'Print #2, " ;Hergestellt mit " & frmDatei.Caption 'Print #2, " ;Geschrieben am "; Date & ", " & Time Print #2, " ;Weitere Infos siehe Clip 'Resonanz' im NoteTab-Editor!" Print #2, "" Print #2, "" Print #2, ";SCOMODUL-EINZELTON:" Print #2, "" Print #2, "" Print #2, "" Print #2, " f1 0 4096 9" If fun1 = 0 Then Print #2, " 1 1 0" Else Print #2, " " & Val(fun1) & " 1 0" End If ' Print #2, "" Print #2, " f2 0 4096 9" If fun2 = 0 Then Print #2, " 2 1 0" Else Print #2, " " & Val(fun2) & " 1 0" End If ' Print #2, "" Print #2, ";SCOMODUL-DAUERTON:" ' Print #2, "" Print #2, " i96 0.00 " & ZTPmax & " ; FOF - Dauerton, " & ZTPmax & " Sekunden lang" Print #2, " i97 0.00 " & ZTPmax & " ; SAMPLE - Dauerton, " & ZTPmax & " Sekunden lang" Print #2, " i98 0.00 " & ZTPmax & " ; weiterer Dauerton, " & ZTPmax & " Sekunden lang" Print #2, " i99 0.00 " & ZTPmax & " ; weiterer Dauerton, " & ZTPmax & " Sekunden lang" Print #2, " i100 0.00 " & ZTPmax & " ; weiterer Dauerton, " & ZTPmax & " Sekunden lang" Print #2, " i101 0.00 " & ZTPmax & " ; weiterer Dauerton, " & ZTPmax & " Sekunden lang" Print #2, " i102 0.00 " & ZTPmax & " ; weiterer Dauerton, " & ZTPmax & " Sekunden lang" Print #2, " i103 0.00 " & ZTPmax & " ; weiterer Dauerton, " & ZTPmax & " Sekunden lang" Print #2, " i104 0.00 " & ZTPmax & " ; weiterer Dauerton, " & ZTPmax & " Sekunden lang" Print #2, " i105 0.00 " & ZTPmax & " ; weiterer Dauerton, " & ZTPmax & " Sekunden lang" Print #2, "" Print #2, "" ' '--------------------------------------------------------- 'Glissandozahlen berechnen: For a = 1 To azp GD(a) = Val(ZP(a + 1)) - Val(ZP(a)) GD(a) = Int((GD(a) * Rundu) + 0.5) / Rundu Next a ' GD(0) = GLnull ' für den Start Print #2, " ;"; Tab(9); "ZTP"; Tab(19); "DT"; Tab(24); "HT"; Tab(36); "LT"; Tab(58); "GD"; Tab(68); "KL (Reso.-Frq.)" Print #2, " " & "i01"; Tab(8); ZTP; Tab(19); "-1"; Tab(24); HT(1); Tab(36); "0.000"; Tab(46); "pp4"; Tab(51); "pp5"; Tab(58); GD(0); Tab(68); Kl(1); Tab(80); "pp9"; Tab(87); "; 1" ' ZPW = ZPW - GLnull For a = 2 To azp ZTP = Val(ZP(a - 1)) - ZPW: ZTP = Int((ZTP * Rundu) + 0.5) / Rundu Print #2, " " & "i01"; Tab(8); ZTP; Tab(19); "-1"; Tab(24); HT(a); Tab(36); LT(a); Tab(46); "pp4"; Tab(51); "pp5"; Tab(57); GD(a - 1); Tab(68); Kl(a); Tab(80); "pp9"; Tab(87); ";"; a Next a '--------------------------------------------------------- ' Print #2, "" Print #2, "" 'Print #2, " ;[C:\Arbeit\cs06a.bat]" Print #2, " ;[C:\Arbeit\cs06b.bat]" Print #2, " e" '--------------------------------------------------------- End Sub Private Sub OrcDatei() ' für SINUS, oder eine andere einfache Welle ' Print #3, " ;" & Zurdatei2 ' Print #3, " ;Geschrieben am "; Date & ", " & Time ' Print #3, " ;Genauere Infos siehe Clip 'Resonanz' im NoteTab-Editor!" ' Print #3, " ;" & Date & ", " & Time & " - " & Zurdatei2 & " (einfacher Generator)" Print #3, " ;Hergestellt mit " & frmda1 Print #3, " ;" & frmda2 'Print #3, " ;Hergestellt mit " & frmDatei.Caption Print #3, "" Print #3, " ;Einstimmiger Glissando-Synthesizer" Print #3, " ;nach VIOLE10.orc (Viole04.orc und Viole99.orc)." Print #3, " ;Instrument 96 versorgt Instrument 1." Print #3, " ;Weitere Infos siehe Clip 'Resonanz' im NoteTab-Editor!" Print #3, "" Print #3, "" ' Print #3, " sr = 44100" Print #3, " kr = 44100" Print #3, " ksmps = 1" Print #3, " nchnls = 2" Print #3, "" Print #3, " " Print #3, " ;Konstanten:" Print #3, " gitdf = 1.000 ; Tondauernfaktor (0.999)" Print #3, "" Print #3, "" Print #3, "" Print #3, "" Print #3, "" Print #3, " instr 1" Print #3, "" Print #3, " iltfakt = "; Val(0.07 * foffakt); " ; Lautstärkefaktor für FOF (z.B. 0.07) <---- änderbar" Print #3, " iltfakts = "; Val(0.07 * sampfakt); " ; Lautstärkefaktor fürs Sample (z.B. 0.07) <---- änderbar" ' SAMPLE Print #3, " gifreqfakts = "; Val(sampfrq); " ; Frequenzfaktor fürs Sample" ' SAMPLE Print #3, " idur = (abs(p3) * gitdf)" Print #3, " kfrq = p4 ; Tonhöhe" Print #3, " iamp = p5 ; Lautstärke" Print #3, " iampv = p7 ; V-Lautstärke" Print #3, " iGli = p8 ; Amplituden- und Frequenz-Schwelldauer" Print #3, " iia = 0.001 ; Einschwingdauer in Sek. (früher p9)" Print #3, " iie = 0.001 ; Ausklingdauer in Sek. (früher p10)" Print #3, "" Print #3, " if p3 < 0 goto an_mir_ist_was_drangebunden" Print #3, " ir tival" Print #3, " if ir == 1 goto ich_bin_angebunden" Print #3, "" Print #3, " Einzelnote:" Print #3, " kamp linseg 0, iia, iamp, idur-iia-iie, iamp, iie, 0" Print #3, " kfrq = kfrq" Print #3, " goto ende1" Print #3, "" Print #3, " an_mir_ist_was_drangebunden:" Print #3, " ir tival" Print #3, " if ir == 1 goto ich_bin_eingebunden" Print #3, " kamp linseg 0, iia, iamp, idur-iia, iamp" Print #3, " kfrq = kfrq" Print #3, " goto ende1" Print #3, "" Print #3, " ich_bin_angebunden:" Print #3, " kamp linseg iampv, p8, iamp, idur-p8-iie, iamp, iie, 0" Print #3, " kfrq linseg p6, p8, p4, idur-p8, p4" Print #3, " goto ende1" Print #3, "" Print #3, " ich_bin_eingebunden:" Print #3, " kamp linseg iampv, p8, iamp, idur-p8, iamp" Print #3, " kfrq linseg p6, p8, p4, idur-p8, p4" Print #3, "" Print #3, " ende1:" Print #3, " gkfrq1 = kfrq" Print #3, " gkfoq1 = kfrq ; neu hier" ' 16.10.2007 Print #3, " gkamp1 = kamp*iltfakt/0.07 ; Sinus-Lautstärke ; neu hier" ' 16.10.2007 Print #3, " gksamp1 = kamp*iltfakts ; Sample-Lautstärke ; neu hier" ' 16.10.2007 Print #3, "" Print #3, "" Print #3, "" Print #3, "" Print #3, ";ORCMODUL-EINZELTON:" Print #3, "" Print #3, "" Print #3, "" Print #3, "" Print #3, " endin" Print #3, "" Print #3, "" Print #3, "" Print #3, "" Print #3, "" Print #3, "" Print #3, " ;Ein Dauerinstrument, von instr 1 in Frequenz und Amplitude gesteuert:" Print #3, "" Print #3, " ;---------------------------------------------------------" Print #3, " instr 96 ; Dauerton 1" Print #3, " ipan = p4 ; Panorama" Print #3, " ifun = p5 ; Funktion (Welle)" Print #3, " a10 oscil3 gkamp1, gkfrq1, ifun ; ifun für Funktion" Print #3, " outs (a10 * ipan), (a10 * (1 - ipan))" Print #3, " endin" Print #3, " ;---------------------------------------------------------" Print #3, "" Print #3, "" Print #3, "" Print #3, "" Print #3, "" Print #3, ";ORCMODUL-DAUERTON:" Print #3, "" Print #3, "" Print #3, "" End Sub Private Sub OrcDatei1() ' für FOF ' Print #3, " ;" & Zurdatei2 & " FOF-Generator)" ' Print #3, " ;Geschrieben am "; Date & ", " & Time ' Print #3, "" ' Print #3, " ;Einstimmiger Glissando-Synthesizer" ' Print #3, " ;nach VIOLE10.orc (Viole04.orc und Viole99.orc)." ' Print #3, " ;Instrument 96 versorgt Instrument 1." ' Print #3, " ;Genauere Infos siehe Clip 'Resonanz' im NoteTab-Editor!" ' Print #3, "" ' Print #3, "" ' Print #3, " ;" & Date & ", " & Time & " - " & Zurdatei2 & " (FOF-Generator mit SAMPLE-Option)" Print #3, " ;Hergestellt mit " & frmda1 Print #3, " ;" & frmda2 'Print #3, " ;Hergestellt mit " & frmDatei.Caption Print #3, "" Print #3, " ;Einstimmiger Glissando-Synthesizer" Print #3, " ;nach VIOLE10.orc (Viole04.orc und Viole99.orc)." Print #3, " ;Instrument 96 versorgt Instrument 1." Print #3, " ;Weitere Infos siehe Clip 'Resonanz' im NoteTab-Editor!" Print #3, "" Print #3, "" ' Print #3, " sr = 44100" Print #3, " kr = 44100" Print #3, " ksmps = 1" Print #3, " nchnls = 2" Print #3, "" Print #3, " " Print #3, " ;Konstanten:" Print #3, " gitdf = 1.000 ; Tondauernfaktor (0.999)" Print #3, "" Print #3, "" Print #3, "" Print #3, "" Print #3, "" Print #3, " instr 1" Print #3, "" Print #3, " iltfakt = "; Val(0.07 * foffakt); " ; Lautstärkefaktor für FOF (z.B. 0.07) <---- änderbar" Print #3, " iltfakts = "; Val(0.07 * sampfakt); " ; Lautstärkefaktor fürs Sample (z.B. 0.07) <---- änderbar" ' SAMPLE ' If formantfakt = 0 Then Print #3, " iformfakt = 50 ; FOM = Formantfaktor (50) <---- änderbar" Else Print #3, " iformfakt = "; Val(formantfakt); " ; FOM = Formantfaktor (50) <---- änderbar" End If ' If frequenzverviel = 0 Then Print #3, " ifreqfakt = 0 ; FRV = Frequenzvervielfachung (0) <---- änderbar" Else Print #3, " ifreqfakt = "; Val(frequenzverviel); " ; - FRV - Frequenzvervielfachung (0) <---- änderbar" End If ' Print #3, " gifreqfakts = "; Val(sampfrq); " ; Frequenzfaktor fürs Sample" ' SAMPLE ' Print #3, "" Print #3, " idur = (abs(p3) * gitdf)" Print #3, " kfrq = p4 ; Tonhöhe" Print #3, " kfoq = p9 ; Formantfrequenz" Print #3, " iamp = p5 ; Lautstärke" Print #3, " iampv = p7 ; V-Lautstärke" ' neu am 31.10.2007 Print #3, " iGli = p8 ; Amplituden- und Frequenz-Schwelldauer" Print #3, " iia = 0.001 ; Einschwingdauer in Sek. (früher p9) <---- änderbar" Print #3, " iie = 0.001 ; Ausklingdauer in Sek. (früher p10) <---- änderbar" Print #3, "" Print #3, " if p3 < 0 goto an_mir_ist_was_drangebunden" Print #3, " ir tival" Print #3, " if ir == 1 goto ich_bin_angebunden" Print #3, "" Print #3, " Einzelnote:" Print #3, " kamp linseg 0, iia, iamp, idur-iia-iie, iamp, iie, 0" Print #3, " kfrq = kfrq" Print #3, " kfoq = kfoq" Print #3, " goto ende1" Print #3, "" Print #3, " an_mir_ist_was_drangebunden:" Print #3, " ir tival" Print #3, " if ir == 1 goto ich_bin_eingebunden" Print #3, " kamp linseg 0, iia, iamp, idur-iia, iamp" Print #3, " kfrq = kfrq" Print #3, " kfoq = kfoq" Print #3, " goto ende1" Print #3, "" Print #3, " ich_bin_angebunden:" Print #3, " kamp linseg iampv, p8, iamp, idur-p8-iie, iamp, iie, 0" Print #3, " kfrq linseg p6, p8, p4, idur-p8, p4" Print #3, " kfoq linseg p10, p8, p9, idur-p8, p9" Print #3, " goto ende1" Print #3, "" Print #3, " ich_bin_eingebunden:" Print #3, " kamp linseg iampv, p8, iamp, idur-p8, iamp" Print #3, " kfrq linseg p6, p8, p4, idur-p8, p4" Print #3, " kfoq linseg p10, p8, p9, idur-p8, p9" Print #3, "" Print #3, " ende1:" Print #3, " gkamp1 = kamp*iltfakt ; FOF-Lautstärke" Print #3, " gksamp1 = kamp*iltfakts ; Sample-Lautstärke" Print #3, " gkfrq1 = kfrq" Print #3, " gkfoq1 = kfoq" Print #3, " ;--------------------" Print #3, " gkamp2 = kamp*iltfakt" Print #3, " gkfrq2 = kfrq+(ifreqfakt*1) ; <<<<< (ifreqfakt*n, n ist änderbar)" Print #3, " gkfoq2 = kfoq+(iformfakt*1) ; <<<<< (iformfakt*n, n ist änderbar)" Print #3, " ;--------------------" Print #3, " gkamp3 = kamp*iltfakt" Print #3, " gkfrq3 = kfrq+(ifreqfakt*2) ; <<<<<" Print #3, " gkfoq3 = kfoq+(iformfakt*1.7) ; <<<<<" Print #3, " ;--------------------" Print #3, " gkamp4 = kamp*iltfakt" Print #3, " gkfrq4 = kfrq+(ifreqfakt*3) ; <<<<<" Print #3, " gkfoq4 = kfoq+(iformfakt*3.3) ; <<<<<" Print #3, " ;--------------------" Print #3, " gkamp5 = kamp*iltfakt" Print #3, " gkfrq5 = kfrq+(ifreqfakt*4) ; <<<<<" Print #3, " gkfoq5 = kfoq+(iformfakt*5.6) ; <<<<<" Print #3, "" Print #3, "" Print #3, "" Print #3, "" Print #3, ";ORCMODUL-EINZELTON:" Print #3, "" Print #3, "" Print #3, "" Print #3, "" Print #3, " endin" Print #3, "" Print #3, "" Print #3, "" Print #3, "" Print #3, "" Print #3, "" Print #3, " ;Ein FOF-Dauerinstrument, von instr 1 in Frequenz, Amplitude und weiteren Parametern gesteuert:" Print #3, "" Print #3, " ;---------------------------------------------------------" Print #3, " instr 96 ; Dauerton" Print #3, " ;Fast alles ist veränderbar:" Print #3, " ;----------------------------" ' If entenmult = 0 Then Print #3, " ioktfakt = 0 ; - ENTE - Enteneffekt (0 = keine Ente) <<<<< änderbar" Else Print #3, " ioktfakt = "; Val(entenmult); " ; - ENTE - Enteneffekt (0 = keine Ente) <<<<< änderbar" End If ' If delayfakt = 0 Then Print #3, " idelfakt = 0.010 ; - DEL - Delay, z.B. 0.01 <<<<< änderbar" Else Print #3, " idelfakt = "; Val(delayfakt); " ; - DEL - Delay, z.B. 0.01 <<<<< änderbar" End If ' Print #3, " ipan1 = 0.5 ; <<<<< Panorama änderbar" Print #3, " ipan2 = 0.6 ; <<<<<" Print #3, " ipan3 = 0.4 ; <<<<<" Print #3, " ipan4 = 0.7 ; <<<<<" Print #3, " ipan5 = 0.3 ; <<<<<" Print #3, " ;--------------------" Print #3, " koct1 = ioktfakt*0.92 ; <<<<< Entenmultiplikator änderbar" Print #3, " kband1 = 30" Print #3, " kris1 = 0.0250 ; <<<<< Anstiegszeit änderbar" Print #3, " kdur1 = 0.01" Print #3, " kdec1 = 0.007" Print #3, " ;--------------------" Print #3, " koct2 = ioktfakt*1.83 ; <<<<<" Print #3, " kband2 = 30" Print #3, " kris2 = 0.0195 ; <<<<< " Print #3, " kdur2 = 0.01" Print #3, " kdec2 = 0.007" Print #3, " idelfakt2 = idelfakt*1.13 ; <<<<< Delayfaktor änderbar" Print #3, " ;--------------------" Print #3, " koct3 = ioktfakt*2.77 ; <<<<<" Print #3, " kband3 = 30" Print #3, " kris3 = 0.0140 ; <<<<<" Print #3, " kdur3 = 0.01" Print #3, " kdec3 = 0.007" Print #3, " idelfakt3 = idelfakt*2.47 ; <<<<<" Print #3, " ;--------------------" Print #3, " koct4 = ioktfakt*3.45 ; <<<<<" Print #3, " kband4 = 30" Print #3, " kris4 = 0.0085 ; <<<<<" Print #3, " kdur4 = 0.01" Print #3, " kdec4 = 0.07" Print #3, " idelfakt4 = idelfakt*3.78 ; <<<<<" Print #3, " ;--------------------" Print #3, " koct5 = ioktfakt*4.31 ; <<<<<" Print #3, " kband5 = 30" Print #3, " kris5 = 0.0030 ; <<<<< " Print #3, " kdur5 = 0.01" Print #3, " kdec5 = 0.07" Print #3, " idelfakt5 = idelfakt*5.12 ; <<<<<" Print #3, " ;--------------------" Print #3, "" Print #3, "" Print #3, " a01 fof gkamp1, gkfrq1, gkfoq1, koct1, kband1, kris1, kdur1, kdec1, 25, 1, 2, p3" Print #3, " a02 fof gkamp2, gkfrq2, gkfoq2, koct2, kband2, kris2, kdur2, kdec2, 25, 1, 2, p3" Print #3, " a03 fof gkamp3, gkfrq3, gkfoq3, koct3, kband3, kris3, kdur3, kdec3, 25, 1, 2, p3" Print #3, " a04 fof gkamp4, gkfrq4, gkfoq4, koct4, kband4, kris4, kdur4, kdec4, 25, 1, 2, p3" Print #3, " a05 fof gkamp5, gkfrq5, gkfoq5, koct5, kband5, kris5, kdur5, kdec5, 25, 1, 2, p3" Print #3, " ; | | | | | | | | | | | |" Print #3, " ; Amplitude | | Formant-Bandbreite | Überlappungen | |" Print #3, " ; | Basisfrequenz | | Anstiegszeit (Sek.) | Funktionstabelle 1" Print #3, " ; | | Formantfrequenz| | Dauer (Sek.) | | Funktionstabelle 2" Print #3, " ; | | | Oktavierungskoeffizient Abklingzeit (Sek.) | | Granulationszeit" Print #3, " ; | | | | | | | | | | | |" Print #3, " ;a00 fof xamp, xfund, xform, koct, kband, kris, kdur, kdec, iolaps, ifna, ifnb, itotdur [, iphs] [, ifmode]" Print #3, "" Print #3, " outs (a01*ipan1), (a01*(1-ipan1))" Print #3, " a02a delay a02, idelfakt2, 0 " Print #3, " outs (a02a*ipan2), (a02a*(1-ipan2))" Print #3, " a03a delay a03, idelfakt3, 0 " Print #3, " outs (a03a*ipan3), (a03a*(1-ipan3))" Print #3, " a04a delay a04, idelfakt4, 0 " Print #3, " outs (a04a*ipan4), (a04a*(1-ipan4))" Print #3, " a05a delay a05, idelfakt5, 0 " Print #3, " outs (a05a*ipan5), (a05a*(1-ipan5))" Print #3, " endin" Print #3, " ;---------------------------------------------------------" Print #3, "" Print #3, "" Print #3, "" Print #3, "" Print #3, "" Print #3, ";ORCMODUL-DAUERTON:" Print #3, "" Print #3, "" Print #3, "" End Sub ' neu am 11.02.2011: Ohne Bandpassfilter Print #3, " instr 97" Print #3, " afrq = (gkfrq1 / 440) * gifreqfakts * 4 * 15" Print #3, " gkfoq = gkfoq1*gifreqfakts*4 ; 4 entspricht der Originaltonhöhe" Print #3, " aw1v,aw2v loscil gksamp1*14, afrq, 98 ; Sampleplayer" Print #3, "; aw1v = aw1v * 0.005 ; skalieren" Print #3, "; aw2v = aw2v * 0.005 ; skalieren" Print #3, "; aw1 reson aw1v, gkfoq, 90 ; Bandpaßfilter, letzter Wert: Breite" Print #3, "; aw2 reson aw2v, gkfoq, 90 ; Bandpaßfilter" Print #3, "; outs aw1, aw2" Print #3, " aw1v = aw1v * 5 ; skalieren" Print #3, " aw2v = aw2v * 5 ; skalieren" Print #3, " outs aw1v, aw2v" Print #3, " endin" Print #3, ";---------------------------------------------------------" Print #3, "" Print #3, "" Print #3, "" ------------------------------------------------------------------------------------------------ Problem: instr 98 statt 97 in Resonanz.orc Lösung des Problems: SIEHE ZEILE 2374 <---------------- ! 12:45 11.10.2013 Bei Druck von PLG in Hukumu sollen bestimmte Felder und Knöpfe (die Samples betreffenden) aus gehen und instr 97 ausgeschaltet werden (wie?). NEIN .... 13:51 11.10.2013 Das Einschreiben von Lautstärken und weiteren Daten muss VON HAND in Resonanz.orc und Resonanz.sco gemacht werden!! Die soll im PLUG-Info näher erläutert werden! 10:08 07.11.2014 -------------------------------------------------- Tempoänderungen einbauen! In HUKUMU eine Möglichkeit einbauen, die Zeitpunkte zu skalieren! 11:39 07.11.2014 ZP() Analyse: ["C:\Programme\IrfanView\i_view32.exe" "D:\Scan\Huku-Analyse-01.jpg"] 23:39 07.11.2014 Private Sub Z_Enter1_Click() ' neu am 05.09.2013 - 16.09.2013 If na1 > 1 Then ..... was ist na1? - der erste markierte Kurvenpunkt. Der Knopf 'Variation' wird etwas dunkler Variation.BackColor = &HFF9F9F HIER: Randomize For n = na1 To ne1 r = (Int(Rnd * 100) + 1) - 50 ' Wert = 1 + r * ZWert ' ZWert kommt vom Schieberegler - 1 weg ist neu am 24.09.2013 Wert = r * ZWert ' ZWert kommt vom Schieberegler ' neu am 15.10.2013: ' ---------------------------------------------------------------------- ZtPnorm = ZP(n) - ZP(na1) ' auf Normzeitpunkt umrechnen (normalisieren) ZtP = ZtPnorm + Wert ' If ZtP <= 0 Then ZtP = ZtPnorm ZP(n) = ZtP + ZP(na1) ' zurückrechnen If ZP(n) <= ZP(n - 1) Then ZP(n) = ZP(n - 1) + 0.001 ' oder + 0.0001? ' ---------------------------------------------------------------------- ' ZP(n) = ZP(n) + Wert ' '+' ist neu! <-- 15.09.2013 Next n . . . Call ZeitwerteLautstärkenTonhöhenZeigen ... Call StartStopPunkte_check ' na1 und ne1 ermitteln na1 ist der erste markierte Kurvenpunkt! NEU: Private Sub Tempo_Change() 13:20 09.11.2014 Beispiel für Einschreiben in ein Textfeld: Text12.Text = GesamtLTv auslesen: GesamtLT = Val(Text12.Text) Test: Line Input #1, GesamtLTv: Text12.Text = 999 ' Master - Lautstärke Nur wenn '1' im nebenstehenden Textfeld steht: Zeitpunkte mit der Zufallsfunktion verändern - mit dem Schieberegler stellt man die Stärke der Variationen ein Eingabebestätigung für Zeitpunkte, die mit der Zeitpunkteskalierung berechnet wurden (linkes Textfeld <> 1), oder für Zufallszeitpunkte (Variationsstärke vorher mit dem Schieberegler einstellen) 00:22 10.11.2014 neu: Private Sub Z_Enter1_Click() ' neu am 05.09.2013 - 16.09.2013 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Private Sub Z_Enter1_Click() ' neu am 05.09.2013 - 16.09.2013 - 10.11.2014 ' Das Drücken dieses Knopfes bewirkt folgendes: ' Zeitpunkte verändern. ' ' Die einzelnen Werte von ZP(n) lesen und mit dem eingestellten ' Wirkungsgrad einer Zufallsfunktion übergeben. Der Wirkungsgrad ' sollte schon zuvor mit dem Schieberegler eingestellt worden sein. ' Werte anzeigen (Sub ZeitwerteLautstärkenTonhöhenZeigen aufrufen) ' ' Regeln für die Zeitpunkte: ' Der erste Wert soll nicht verändert werden. ' Werte von 0 bis 0.1 - noch testen! ' Ein Wert muss immer größer sein als der vorangegangene Wert <------ ! ' Sollte ein Wert nicht dieser letzteren Regel entsprechen, soll einfach ' nochmal die Zufallsfunktion durchlaufen werden. Dim Wert As Double Dim r As Integer Dim ZtP, ZtPnorm As Variant ' neu am 15.10.2013 ' NEU am 14.09.2013: If na1 > 1 Then ' > 1 statt > 0 ist neu am 24.09.2013 gedru = True Command3.BackColor = &HFFE1DD ' neu am 29.09.2013 Variation.BackColor = &HFF9F9F ' neu am 29.09.2013 Randomize For n = na1 To ne1 If Tempo.Text <> 1 Then ZtPnorm = ZP(n) - ZP(na1) ' auf Normzeitpunkt umrechnen (normalisieren) ZtP = ZtPnorm * Val(Tempo.Text) ' TEST ZP(n) = ZtP + ZP(na1) ' zurückrechnen Else r = (Int(Rnd * 100) + 1) - 50 ' Wert = 1 + r * ZWert ' ZWert kommt vom Schieberegler - 1 weg ist neu am 24.09.2013 Wert = r * ZWert ' ZWert kommt vom Schieberegler ' neu am 15.10.2013: ' ---------------------------------------------------------------------- ZtPnorm = ZP(n) - ZP(na1) ' auf Normzeitpunkt umrechnen (normalisieren) ZtP = ZtPnorm + Wert ' If ZtP <= 0 Then ZtP = ZtPnorm ZP(n) = ZtP + ZP(na1) ' zurückrechnen If ZP(n) <= ZP(n - 1) Then ZP(n) = ZP(n - 1) + 0.001 ' oder + 0.0001? ' ---------------------------------------------------------------------- ' ZP(n) = ZP(n) + Wert ' '+' ist neu! <-- 15.09.2013 End If Next n End If ' End If hier ist neu am 24.09.2013 Call ZeitwerteLautstärkenTonhöhenZeigen End Sub Private Sub Z_Enter2_Click() ' NEU am 14.09.2013 ' Die Tondauern reduzieren! <---------------- ' Das Drücken dieses Knopfes bewirkt folgendes: ' Tondauern verkürzen Dim Wert As Double Dim r As Integer If na1 > 0 Then gedru = True Command3.BackColor = &HFFE1DD ' neu am 29.09.2013 Variation.BackColor = &HFF9F9F ' neu am 29.09.2013 For n = na1 To ne1 If LT(n) <> 0 And LT(n + 1) = 0 Then ' Tonende ZP(n) = ZP(n) - (ZP(n) - ZP(n - 1)) / 10 ' 10 ist ein Versuchswert ZP(n + 1) = ZP(n + 1) - (ZP(n) - ZP(n - 1)) / 10 ' 10 ist ein Versuchswert End If If ZP(n) <= ZP(n - 1) Then ZP(n) = ZP(n - 1) + 0.001 ' oder besser + 0.0001? Next n Call ZeitwerteLautstärkenTonhöhenZeigen End If End Sub Private Sub Z_Enter1_Click() ' neu am 05.09.2013 - 16.09.2013 alt: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Private Sub Z_Enter1_Click() ' neu am 05.09.2013 - 16.09.2013 ' Das Drücken dieses Knopfes bewirkt folgendes: ' Zeitpunkte verändern. ' ' Die einzelnen Werte von ZP(n) lesen und mit dem eingestellten ' Wirkungsgrad einer Zufallsfunktion übergeben. Der Wirkungsgrad ' sollte schon zuvor mit dem Schieberegler eingestellt worden sein. ' Werte anzeigen (Sub ZeitwerteLautstärkenTonhöhenZeigen aufrufen) ' ' Regeln für die Zeitpunkte: ' Der erste Wert soll nicht verändert werden. ' Werte von 0 bis 0.1 - noch testen! ' Ein Wert muss immer größer sein als der vorangegangene Wert <------ ! ' Sollte ein Wert nicht dieser letzteren Regel entsprechen, soll einfach ' nochmal die Zufallsfunktion durchlaufen werden. Dim Wert As Double Dim r As Integer Dim ZtP, ZtPnorm As Variant ' neu am 15.10.2013 ' NEU am 14.09.2013: If na1 > 1 Then ' > 1 statt > 0 ist neu am 24.09.2013 gedru = True Command3.BackColor = &HFFE1DD ' neu am 29.09.2013 Variation.BackColor = &HFF9F9F ' neu am 29.09.2013 Randomize For n = na1 To ne1 r = (Int(Rnd * 100) + 1) - 50 ' Wert = 1 + r * ZWert ' ZWert kommt vom Schieberegler - 1 weg ist neu am 24.09.2013 Wert = r * ZWert ' ZWert kommt vom Schieberegler ' neu am 15.10.2013: ' ---------------------------------------------------------------------- ZtPnorm = ZP(n) - ZP(na1) ' auf Normzeitpunkt umrechnen (normalisieren) ZtP = ZtPnorm + Wert ' If ZtP <= 0 Then ZtP = ZtPnorm ZP(n) = ZtP + ZP(na1) ' zurückrechnen If ZP(n) <= ZP(n - 1) Then ZP(n) = ZP(n - 1) + 0.001 ' oder + 0.0001? ' ---------------------------------------------------------------------- ' ZP(n) = ZP(n) + Wert ' '+' ist neu! <-- 15.09.2013 Next n End If ' End If hier ist neu am 24.09.2013 Call ZeitwerteLautstärkenTonhöhenZeigen End Sub 09:55 23.04.2015 Hukumu Ergänzungen - Erweiterungen ------------------------------------------------------------------ o Knopf 'Cs' größer. Besser: Aus den zwei Knöpfen sollen drei entstehen. Siehe das Folgende. <------ ok * Einen speziellen CSO-Knopf einbauen, der bewirkt, dass nur die Score-Datei Resonanz.sco, nicht aber die Orchesterdatei Resonanz.orc geschrieben wird. In Resonanz.sco sollte auch nur der Eintrag ab der Zeile ; ZTP DT HT LT GD KL (Reso.-Frq.) verändert werden. Achtung! Die Csound-Dateien werden im aufgerufenen Programm C:\Arbeit\VB\Huku01\ResoneHu.exe bzw. C:\Arbeit\VB\Huku01\ResoneHu2.exe geschrieben. Eines dieser Programme wird im Unterprogramm SubroutinenAufrufen aufgerufen: If OhneCoolEdit = False Then Shell "C:\Arbeit\VB\Huku01\ResoneHu.exe" End If If OhneCoolEdit = True Then Shell "C:\Arbeit\VB\Huku01\ResoneHu2.exe" End If Es wird wohl ein ResoneHu3.exe geben müssen. Das ist das Einfachste o Nachdem 'PLG' gedrückt wurde, sollen die Knöpfe Cso, Cs und Cso-Vari blass erscheinen, der Knopf 'CSO' dagegen lila (oder rot?) ------------------ vorhanden: command4, 5, 13, 14, Variation dazu: command3, 18, 19 -------------------------------- 13:03 24.04.2015 Schalter Private Sub Command7_Click() If pse = False Then PunkteStartEndTestAus = True Command7.BackColor = &HDFDFDF ' vbRed früher, jetzt hellgrau pse = True Else PunkteStartEndTestAus = False Command7.BackColor = &H696969 ' &HC0C0C0 ' dunkelgrau pse = False End If End Sub 19:19 24.04.2015 Private Sub Cool_Click() If CoolEdi = False Then cole = True Cool.BackColor = &HFF00& ' grün CoolEdi = True Else cole = False Cool.BackColor = &HDFDFDF 'hellgrau CoolEdi = False End If End Sub wenn cole wahr ist, wird Cool Edit verwendet <--------- ! 19:21 25.04.2015 ResoneHu.exe - ResoneHu3.exe ------------------------------------------------------------------ Private Sub Command5_Click() Call GBF1 ' visible usw. Call GBF2 ' Grund-Textfarben ' Testliste.Clear ' <------- voila Call ShowSCO ' Die Sco-Datei darstellen Call ShowORC ' Die Sco-Datei darstellen <-- wieder dazugekommen Shell "C:\Arbeit\cs06b.bat" 'Csound starten End Sub ResoneHu.exe ruft auf: cs06b.bat <----------------- ResoneHu2.exe ruft auf: cs06b2.bat <----------------- neu: ResoneHu3.exe ruft auf: cs06b3.bat <----------------- ResoneHu4.exe ruft auf: cs06b4.bat <----------------- schreibt C:\Arbeit\cs06b.bat: Private Sub BatDatei() Print #4, " REM " & Zurdatei3 Print #4, " REM Geschrieben am "; Date & ", " & Time Print #4, " REM Genauere Infos siehe Clip 'Resonanz' im NoteTab-Editor!" Print #4, "" Print #4, "" Print #4, " set PATH=%PATH%;C:\CSOUND\bin" Print #4, " set SFDIR=C:\Arbeit" Print #4, "" Print #4, " csound -o " & Arbeitsordner & Csoundname; ".wav -W -g "; Arbeitsordner & Csoundname; ".orc "; Arbeitsordner & Csoundname; ".sco" Print #4, " """ & "c:\cool\COOL96.exe" & """" & " " & """" & Arbeitsordner & Csoundname & ".wav" & """" Print #4, "" Print #4, " [c:\arbeit\cs06b.bat]" End Sub Zurdatei0 = Arbeitsordner & "Viole" & ".rsz" Zurdatei1 = Arbeitsordner & Csoundname & ".sco" Zurdatei2 = Arbeitsordner & Csoundname & ".orc" Zurdatei3 = Arbeitsordner & "cs06b.bat" Zufallsdatei = Arbeitsordner & "Zufall.rsz" ORC schreiben: Open Zurdatei2 For Output As #3 If FOF = True Then Call OrcDatei1 Else Call OrcDatei ' FOF oder SINUS Close #3 ' SCO schreiben: Open Zurdatei1 For Output As #2 If FOF = True Then Call ScoDatei1 Else Call ScoDatei ' FOF oder SINUS Close #2 ------------------------------- neu in ResoneHu2: Zurdatei3 = Arbeitsordner & "cs06b2.bat" ' NEU am 25.04.2015 Private Sub BatDatei() Print #4, " REM " & Zurdatei3 Print #4, " REM Geschrieben am "; Date & ", " & Time Print #4, " REM Genauere Infos siehe Clip 'Resonanz' im NoteTab-Editor!" Print #4, "" Print #4, "" Print #4, " set PATH=%PATH%;C:\CSOUND\bin" Print #4, " set SFDIR=C:\Arbeit" Print #4, "" Print #4, " csound -o " & Arbeitsordner & Csoundname; ".wav -W -g "; Arbeitsordner & Csoundname; ".orc "; Arbeitsordner & Csoundname; ".sco" Print #4, " REM c:\cool\COOL96.exe" & """" & " " & """" & Arbeitsordner & Csoundname & ".wav" & """" Print #4, "" Print #4, " [c:\arbeit\cs06b2.bat]" Print #4, " TEST" End Sub Shell "C:\Arbeit\cs06b2.bat" ' Csound starten <---- cs06b2.bat statt cs06b.bat ' 30.03.2015 22:49 25.04.2015 Sub scodatei1 ' für fof Sub scodatei ' für Sinus Sub orcdatei1 ' für fof Sub orcdatei ' für Sinus Open Zurdatei1 For Output As #2 If FOF = True Then Call ScoDatei1 Else Call ScoDatei ' FOF oder SINUS Close #2 Arbeitsschritte für C:\Arbeit\VB\Huku01\Resone-Spez\03-Resone-Hu3 und C:\Arbeit\VB\Huku01\Resone-Spez\03-Resone-Hu4: --§§--§§--§§--§§--§§--§§--§§--§§--§§--§§--§§--§§--§§--§§--§§--§§--§§--§§--§§--§§--§§--§§--§§--§§--§§--§§--§§--§§ Sub orcdatei1 löschen Sub orcdatei löschen Löschen: Open Zurdatei2 For Output As #3 If FOF = True Then Call OrcDatei1 Else Call OrcDatei ' FOF oder SINUS Close #3 Versetzen in die Sub ScoDatei1() und auch in die Sub ScoDatei(): Open Zurdatei1 For Output As #2 ...... Close #2 In Sub ScoDatei1() und Sub ScoDatei(): Erst die Datei komplett lesen, dann einen Teil wieder schreiben, dann den Rest schreiben (das, was bisher auch geschrieben wurde). Für Sub ScoDatei1() und Sub ScoDatei(): Vorne im Programm Dim ScoZlen(1000) ' Sco-Zeilen - neu am 25.04.2015 --"--"--"--"--"--"--"--"--"--"--"--"--"--"--"--"--"--"--"--"--"--"--"--"--"--"--"--"--"--" Private Sub ScoDatei1() ' für FOF ' ' NEU am 26.04.2015: ' ------------------------------------------------- Dim ScoZlen(1000) ' Sco-Zeilen Dim m, n As Integer Dim ttxt As String Open Zurdatei1 For Input As #2 ' INPUT Erase ScoZlen n = 0 Do While Not EOF(2) n = n + 1 Line Input #2, ScoZlen(n) Loop Close #2 ' Open Zurdatei1 For Output As #2 ' OUTPUT Print #2, " ;" & Date & ", " & Time & " - zweiten Teil der Partitur neu geschrieben." ' ttxt = "" n = 0 Do n = n + 1 m = 0 Do m = m + 1 ttxt = Mid(ScoZlen(n), m, 3) Loop Until ttxt = "ZTP" Or m > 120 If ttxt <> "ZTP" Then Print #2, ScoZlen(n) Loop Until ttxt = "ZTP" ' ------------------------------------------------- ' ' ' ' ZPW = ZP(1) ' wird auf 0 umgerechnet ZTP = 0 ' ZTPmax = Val(ZP(azp)) - ZPW: ZTPmax = Int(ZTPmax + 1) ' Delay berücksichtigen: ZTPmax = ZTPmax + (delayfakt * 6): ZTPmax = Int((ZTPmax * 10) + 1) / 10 '--------------------------------------------------------- ' Print #2, " ;" & Date & ", " & Time & " - " & Zurdatei1 & " (FOF- Sample- und Percussion-Generator)" ' Print #2, " ;Hergestellt mit " & frmda1 ' Print #2, " ;" & frmda2 ' Print #2, " ;Weitere Infos siehe Clip 'Resonanz' im NoteTab-Editor!" ' Print #2, "" ' Print #2, "" ' Print #2, ";SCOMODUL-EINZELTON:" ' Print #2, "" ' Print #2, "" ' Print #2, "" ' Print #2, " f1 0 4096 9" ' If fun1 = 0 Then ' Print #2, " 1 1 0" ' Else ' Print #2, " " & Val(fun1) & " 1 0" ' End If ' ' ' Print #2, "" ' Print #2, " f2 0 4096 9" ' If fun2 = 0 Then ' Print #2, " 2 1 0" ' Else ' Print #2, " " & Val(fun2) & " 1 0" ' End If ' ' ' Print #2, "" ' Print #2, "" ' Print #2, ";SCOMODUL-DAUERTON:" ' Geändert am 10.10.2013: ' Print #2, ";A-Scodatei2" ' Print #2, " f98 0.00 0 1 " & """" & HukuSample & """" & " 0 0 0 ; <----- Stereo ok." ' Print #2, ";E-Scodatei2" ' Print #2, "" ' Print #2, " i96 0.00 " & ZTPmax & " ; FOF - Dauerton, " & ZTPmax & " Sekunden lang" ' Print #2, " i97 0.00 " & ZTPmax & " ; SAMPLE - Dauerton, " & ZTPmax & " Sekunden lang" ' Print #2, " i98 0.00 " & ZTPmax & " ; weiterer Dauerton, " & ZTPmax & " Sekunden lang" ' Print #2, " i99 0.00 " & ZTPmax & " ; weiterer Dauerton, " & ZTPmax & " Sekunden lang" ' Print #2, " i100 0.00 " & ZTPmax & " ; weiterer Dauerton, " & ZTPmax & " Sekunden lang" ' Print #2, " i101 0.00 " & ZTPmax & " ; weiterer Dauerton, " & ZTPmax & " Sekunden lang" ' Print #2, " i102 0.00 " & ZTPmax & " ; weiterer Dauerton, " & ZTPmax & " Sekunden lang" ' Print #2, " i103 0.00 " & ZTPmax & " ; weiterer Dauerton, " & ZTPmax & " Sekunden lang" ' Print #2, " i104 0.00 " & ZTPmax & " ; weiterer Dauerton, " & ZTPmax & " Sekunden lang" ' Print #2, " i105 0.00 " & ZTPmax & " ; weiterer Dauerton, " & ZTPmax & " Sekunden lang" ' Print #2, "" ' Print #2, "" '' ''--------------------------------------------------------- 'Glissandozahlen berechnen: For a = 1 To azp GD(a) = Val(ZP(a + 1)) - Val(ZP(a)) GD(a) = Int((GD(a) * Rundu) + 0.5) / Rundu Next a ' ' ' ' ' ' ' ' ' Folgendes bleibt - 26.04.2015: --"--"--"--"--"--"--"--"--"--"--"--"--"--"--"--"--"--"--"--"--"--"--"--"--"--"--"--"--"--" --§§--§§--§§--§§--§§--§§--§§--§§--§§--§§--§§--§§--§§--§§--§§--§§--§§--§§--§§--§§--§§--§§--§§--§§--§§--§§--§§--§§ Open Arbeitsordner & "Huku.ini" For Input As #1 Line Input #1, Reaperfilev: Text1.Text = Reaperfilev Line Input #1, Tracknamev: Text2.Text = Tracknamev Arbeitsordner = "C:\Arbeit\" Private Sub ScoDatei1() ' für FOF 09:41 26.04.2015 Do While Not EOF(1) Line Input #1, Zeile Testliste.AddItem Zeile Loop 09:29:56 08.05.2015 <--- Geplante Hukumu-Erweiterungen 08.05.2015 - 15.05.2015 --*----*----*----*----*----*----*----*----*----*----*----*----*----*----*----*-- Der Cso1-Knopf soll manuell (kleiner Zusatzknopf) gesperrt werden können. Er soll dann auch hell werden. Entsperrung soll dann auch manuell erfolgen. OK Wenn der Cso1-Knopf hell wird, soll er auch gesperrt werden. Erledigt. Zusatz-Ini-Datei verwenden, die z.B. den Zustand des Cso1-Knopfes speichert. Sie soll heißen: Huku2.ini (die Haupt-Inidatei heißt Huku.ini). ähnlich: OK 09:30 08.05.2015 Erweiterung - vielleicht nicht nötig: Ein neues Editierprogramm für Resonanz.orc erstellen. Aber eigentlich habe ich ja schon die Möglichkeit, Plugins herzustellen. Vieleicht also ein Plugin-Editierprogramm, d.h. eine graphische Oberfläche zur Herstellung von Plugins. 16:55 12.05.2015 Verbesserung: Die zuletzt markierten Punkte soll sich das Programm merken, Sie sollen auf Knopfdruck wieder markiert werden. Das wird nicht so einfach sein .. Auch das könnte in einer Datei huku2.ini gespeichert werden. ähnlich: OK Weitere Verbesserung: Reihenfolge der Parameter-Einstellfelder und -Beschriftungen so ändern, dass sie der Reihenfolge in Huku.....inv entspricht. OK Verbesserung: Vielleicht sollten auch bei jeder Speicherung (Knopf Snapshot) Resonanz.orc und Resonanz.sco mit passendem Auto-Name gespeichert werden. So können sie wieder hervorgeholt werden! ---> Private Sub Command4_Click() Ist schon (so ähnlich) vorhanden (Knöpfe S und L)! 13:04 14.05.2015 Erweiterung: Marker- und Punkte-Copy. Die vorhandenen Marker und auch die vorhandenen Punkte kopieren, um einen bestimmten Betrag (einen Zeitwert addieren) erhöhen und dazuschreiben. !!!!! wäre gut. OK (19.05.2015) --*----*----*----*----*----*----*----*----*----*----*----*----*----*----*----*-- 10:15:00 17.05.2015 <--- 10:11:50 17.05.2015 <--- Arbeit (12.05.2015 bis 21.05.2015) ---&----&----&----&----&----&----&----&----&----&----&----&----&----&----&----&-- 23:47 12.05.2015 11:30 13.05.2015 Wie wird ein markierter Punkt festgestellt? ---> Private Sub StartStopPunkte_check() Schreiben: in Private Sub Form_Load() und in Private Sub Command4_Click() als nnn3 = "c:\Arbeit\Huku" & dnz & ".inv" ' Huku.ini sichern! - neu: als .inv! Lesen: in Private Sub SchreibIni() On Error GoTo rrrr Open Arbeitsordner & "Huku.ini" For Input As #1 Line Input #1, Reaperfilev: Text1.Text = Reaperfilev Line Input #1, Tracknamev: Text2.Text = Tracknamev Line Input #1, Sinusv If Sinusv <> "j" Then Text3.Text = "n" Else Text3.Text = Sinusv End If Line Input #1, fuav: Text4.Text = fuav Line Input #1, fubv: Text5.Text = fubv Line Input #1, entev: Text6.Text = entev Line Input #1, delv: Text7.Text = delv Line Input #1, fomv: Text8.Text = fomv Line Input #1, ltfv: Text9.Text = ltfv ' neu am 7.2.2011 Line Input #1, ltsv: Text10.Text = ltsv ' neu am 7.2.2011 Line Input #1, htsv: Text11.Text = htsv ' neu am 7.2.2011 Line Input #1, GesamtLTv: Text12.Text = GesamtLTv ' Master - Lautstärke Line Input #1, GesamtHTv: Text13.Text = GesamtHTv ' Gesamt - Tonhöhenverschiebung Line Input #1, GesamtKLv: Text14.Text = GesamtKLv ' Gesamt - Klangfrequenzverschiebung Line Input #1, MasterHTv: Text15.Text = MasterHTv ' eine Tonhöhe gilt für alle Töne Line Input #1, MasterKLv: Text16.Text = MasterKLv ' Master-Klangfrequenz - 1 Klangfrequenz gilt für alle Töne Line Input #1, Dateiname FileCopy Dateiname, "c:\Arbeit\Samp100.wav" ' soll immer so heißen, ' wegen der Dateinamenlängenbegrenzung in Csound HukuDatei = "c:\Arbeit\Samp100.wav" Text17.Text = Dateiname ' Wav-Datei für die Sampling-Option - neu am 11.02.2011 Line Input #1, zeile: dnz = Val(zeile) Reaperfile = Reaperfilev Trackname = Tracknamev Sinus = Sinusv Call SinusAn ' <---- neu am 12.02.2011 fua = fuav fub = fubv ente = entev del = delv fom = fomv ltf = ltfv ' neu am 7.2.2011 lts = ltsv ' neu am 7.2.2011 hts = htsv ' neu am 7.2.2011 Call SampleAn GesamtLT = GesamtLTv GesamtHT = GesamtHTv GesamtKL = GesamtKLv MasterHT = MasterHTv MasterKL = MasterKLv dnz = dnz Vondatei = Arbeitsordner & Reaperfile & ".rpp" Variationsdatei = Arbeitsordner & Reaperfile & "-Z" & ".rpp" ' <-------- Variationsdatei neu am 04.09.2013 ' frmDatei.Caption = "Huku " & Version & " - Reaper-Datei: " & Vondatei & " - Spurname: " & Trackname frmDatei.Caption = "Hukumu" & " " & Version & " " & "Gelesene Datei:" & " " & Reaperfile & ".rpp" & " " & "Spur:" & " " & Trackname ' neu am 04.09.2013 rrrr: Close #1 13:18 13.05.2015 Private Sub StartStoppFix_Click() ' neu am 13.05.2015: Open Arbeitsordner & "Huku.ini" For Output As #1 Print #1, na Print #1, ne ' ' bald noch mehr Close #1 End Sub '''''''''''''''''''''''''''''''''''''''' ' NEU am 13.05.2015 ' Inhalt von Huku2.ini (bald kommt noch mehr dazu): ' ' na (Startpunkt) ' ne (Endepunkt) ' Open Arbeitsordner & "Huku2.ini" For Input As #1 Line Input #1, nax ' für na, Startpunkt Line Input #1, nex ' für ne, Endepunkt Close #1 '''''''''''''''''''''''''''''''''''''''' Private Sub StartStopPunkte_check() If nax = 0 Or nex = 0 Then ' neu am 13.05.2015 . . . Else na1 = nax: ne1 = nex End If in Sub SubroutinenAufrufen If nax = 0 Or nex = 0 Then ' neu am 13.05.2015 Call StartStopPunkte_check ' na1 und ne1 ermitteln Else na1 = nax: ne1 = nex End If Jetzt neu: If ErstesVorkommen = False Then ' Markierung ist bisher noch nicht vorgekommen If nax = 0 Then ' neu am 13.05.2015 na1 = n ' <---------- Anfangszeitpunkt! Else na1 = nax End If Call ZeitpunktHerausfinden 'zpa ermitteln! <-------------------- zpa = zpv ' Vorsicht, zpv ist ein String! - UMWANDELN! ErstesVorkommen = True Else If ZweitesVorkommen = False Then ' Markierung ist bisher einmal vorgekommen If nex = 0 Then ' neu am 13.05.2015 ne1 = n ' < ---------- Endezeitpunkt! Else ne1 = nex End If Call ZeitpunktHerausfinden 'zpe ermitteln! <-------------------- zpe = zpv ' Vorsicht, zpv ist ein String! - UMWANDELN! ZweitesVorkommen = True 14:33 13.05.2015 Private Sub StartStopPunkte_check() <----------- ! Private Sub StartStopPunkte_check() irgendwie ist der Wuem drin ... call StartStopPunkte_check NEU: Private Sub StartStopPunkte_check_StorePoint() zpe = zpv ' Vorsicht, zpv ist ein String! - UMWANDELN! stürzt ab in AuswertungLKURVE AuswertungKurve Private Sub AuswertungLKURVE() n = na1 - 1 Do n = n + 1 zeile = Zl(n) Call ExtraktVolkurvenZeitpunkte If PTnichtgefunden = False Then Call ExtraktVolkurvenLautstarken End If Loop Until n = Val(ne1) ' <-------------------------------!!!!!!! so geht es! ' ' ZP(n) enthält jetzt die relevanten Zeitwerte und ' LT(n) enthält die dazugehörigen Lautstärkewerte. 'fv End Sub Loop Until n = Val(ne1) ' <-------------------------------!!!!!!! so geht es! Jetzt noch C:\Arbeit\Huku2.ini an den richtigen Stellen lesen (beim Drücken des Knopfes 'Cso1' usw.!) '''''''''''''''''''''''''''''''''''''''' ' NEU am 13.05.2015 Open Arbeitsordner & "Huku2.ini" For Input As #1 ' Inhalt von Huku2.ini (bald kommt noch mehr dazu): Line Input #1, nax ' für na1, Startpunkt Line Input #1, nex ' für ne1, Endepunkt Close #1 '''''''''''''''''''''''''''''''''''''''' StartStoppFix StartStoppLos Command5.Visible StartStoppFix = True StartStoppLos.Visible = True StartStoppLos StartStoppFix = False StartStoppLos.Visible = False '''''''''''''''''''''''''''''''''''''''''''''''''''' ' 14.05.2015 Start- und Stoppunkt automatisch speichern Open Arbeitsordner & "Huku2.ini" For Output As #1 Print #1, na1 Print #1, ne1 ' ' bald noch mehr?? Close #1 '''''''''''''''''''''''''''''''''''''''''''''''''''' Private Sub StartStoppLos_Click() StartStoppLos.BackColor = &FFC0C0 = &HDFDFDF 12:25 14.05.2015 nicht so ganz in Ordnung: Private Sub Variation_Click() ' neu am 04.09.2013 - Knopf Cso-Vari ' Resonefile schreiben (Sub ResonefileSchreiben aufrufen) ' ResoneHu aufrufen - dort wird u.a. Csound gestartet (mit Shell) If gestartet = True Then Call ResonefileSchreiben Call KillApp("Resonanz.wav - Cool Edit") ' Titel des zu schließenden Fensters Shell "C:\Arbeit\VB\Huku01\ResoneHu.exe" ' Resonanz.wav erzeugen und abspielen End If '''''''''''''''''''''''''''''''''''''''''''''''''''' ' 14.05.2015 Start- und Stoppunkt automatisch speichern Open Arbeitsordner & "Huku2.ini" For Output As #1 Print #1, na1 Print #1, ne1 ' ' bald noch mehr?? Close #1 StartStoppLos.BackColor = &HB3B3FF ' ziegelrot '''''''''''''''''''''''''''''''''''''''''''''''''''' End Sub gut: Private Sub Command3_Click() ' Knopf Cso1 '''''''''''''''''''''''''''''''''''''''' ' NEU am 13.05.2015 Open Arbeitsordner & "Huku2.ini" For Input As #1 ' Inhalt von Huku2.ini (bald kommt noch mehr dazu): Line Input #1, nax ' für na1, Startpunkt Line Input #1, nex ' für ne1, Endepunkt Close #1 '''''''''''''''''''''''''''''''''''''''' gestartet = True gedru = False ' 28.09.2013 Command3.BackColor = &HFFC0C0 ' neu am 29.09.2013 Variation.BackColor = &HFFC0C0 ' neu am 29.09.2013 Text17.Visible = True Command11.Visible = True Command12.Visible = True Testliste(1).Visible = True Testliste(2).Visible = True Testliste(3).Visible = True Testliste(4).Visible = True Testlist.Height = 1365 ' Änderung am 27.09.2013 wiederhol = True ErsterDurchlauf = False NeueKurve = False ResoneHuSelect = 0 ' Schalter für Sub SubroutinenAufrufen Call SubroutinenAufrufen Infotaste = 0 '''''''''''''''''''''''''''''''''''''''''''''''''''' ' 14.05.2015 Start- und Stoppunkt automatisch speichern Open Arbeitsordner & "Huku2.ini" For Output As #1 Print #1, na1 Print #1, ne1 ' ' bald noch mehr?? Close #1 StartStoppLos.BackColor = &HB3B3FF ' ziegelrot &H8080FF ' kräftigeres ziegelrot '''''''''''''''''''''''''''''''''''''''''''''''''''' End Sub StartStoppLos.BackColor = &HB3B3FF ' ziegelrot &H8080FF ' kräftigeres ziegelrot StartStoppFix.BackColor = &HB3B3FF ' ziegelrot ' hier neu am 14.05.2015: ' Call StartStoppLos_Click ' Reset Start-Stoppunkte - neu am 14.05.2015 Private Sub Text1_Change() Reaperfile = Text1.Text Reaperfilevorher = Reaperfile Vondatei = Arbeitsordner & Reaperfile & ".rpp" Call SchreibIni frmDatei.Caption = "Hukumu " & Version & " - Reaper-Datei: " & Vondatei & " - Spurname: " & Trackname ' hier neu am 14.05.2015: ' Call StartStoppLos_Click ' Reset Start-Stoppunkte - neu am 14.05.2015 End Sub Private Sub Command3_Click() 15:04 14.05.2015 Call SchreibIni 15:20 14.05.2015 Open Arbeitsordner & "Huku.ini" For Input As #1 Line Input #1, Reaperfilev: Text1.Text = Reaperfilev Line Input #1, Tracknamev: Text2.Text = Tracknamev Line Input #1, Sinusv If Sinusv <> "j" Then Text3.Text = "n" Else Text3.Text = Sinusv End If Line Input #1, fuav: Text4.Text = fuav ' FUA Line Input #1, fubv: Text5.Text = fubv ' FUB Line Input #1, entev: Text6.Text = entev ' ENTE Line Input #1, delv: Text7.Text = delv ' DEL Line Input #1, fomv: Text8.Text = fomv ' FOM ' neu am 7.2.2011: Line Input #1, ltfv: Text9.Text = ltfv ' FOF-Lautstärkefaktor Line Input #1, ltsv: Text10.Text = ltsv ' Sample-Lautstärkefaktor Line Input #1, htsv: Text11.Text = htsv ' Sample-Frequenzfaktor Line Input #1, MasterHTv: Text15.Text = MasterHTv ' eine feste Tonhöhe Line Input #1, MasterKLv: Text16.Text = MasterKLv ' eine feste Klangfrequenz Line Input #1, GesamtHTv: Text13.Text = GesamtHTv ' Tonhöhenmultiplikator Line Input #1, GesamtKLv: Text14.Text = GesamtKLv ' Klangfrequenzmultiplikator Line Input #1, GesamtLTv: Text12.Text = GesamtLTv ' Gesamtlautstärke Line Input #1, Dateiname FileCopy Dateiname, "c:\Arbeit\Samp100.wav" ' soll immer so heißen, wegen der ' Dateinamenlängenbegrenzung in Csound HukuDatei = "c:\Arbeit\Samp100.wav" Text17.Text = Dateiname ' Wav-Datei für die Sampling-Option - neu am 11.02.2011 Line Input #1, zeile: dnz = Val(zeile) 15:56 14.05.2015 Command3.BackColor = &HF3F3F3 ' hellgrau - neu am 27.04.2015 - HFFFFFF weiß StartStoppFix.BackColor = &HE0E0E0 ' grau Cool.BackColor = &HFF00& ' grün Orcknopf.backcolor = &HE0E0E0 ' grau Scoknopf.backcolor = &HE0E0E0 ' grau Orcknopf.backcolor = &HFF00& ' grün Scoknopf.backcolor = &HFF00& ' grün Orcknopf.BackColor = &HE0E0E0 ' grau Scoknopf.BackColor = &HE0E0E0 ' grau Variation.BackColor = &HFFC0C0 ' neu am 29.09.2013 Cool.BackColor = &HDFDFDF 'hellgrau Command3.BackColor = &HFFC0C0 ' neu am 29.09.2013 22:04 14.05.2015 Shell "C:\Arbeit\VB\Huku01\ResoneHu3.exe" ' verkürztes Csound mit Cool Edit (orc bleibt unverändert) Shell "C:\Arbeit\VB\Huku01\ResoneHu4.exe" ' verkürztes Csound ohne Cool Edit (orc bleibt unverändert) 10:24 15.05.2015 Was genau wird denn in Huku2.ini abgespeichert? (na1, ne1) Das sind die Zeilennummern in der Reaperdatei, an denen ein Punkt markiert ist. Sie ändern sich, sobald Kurvenpunkte oder Marker hinzugefügt oder gelöscht werden! Was geben die Variablen na und ne an? Andere Variablen: ny enthält die Zeilennr für nax ... nax = nax + 1 <---- braucht mein Programm .. *) ' Zeilennumer für zweites Vorkommen von "PT " ermitteln ---> nex *) Print #1, " PT " & "0.5" & " " & RLT & " 0" ' einen Punkt davor zeichnen! Print #1, na1 Print #1, ne1 ' ' bald noch mehr?? Close #1 StartStoppLos.BackColor = &HB3B3FF ' ziegelrot &H8080FF ' kräftigeres ziegelrot '''''''''''''''''''''''''''''''''''''''''''''''''''' Es sollten vorher DIE RICHTIGEN Punkte ermittelt werden! Private Sub StartStopPunkte_check_StorePoint() MsgBox zpv ' Test am 15.05.2015 IN Private Sub StartStopPunkte_check_StorePoint(): na1 = nax ' <---------- Anfangszeitpunkt! <------------- NEU am 13.05.2015 zeile = Zl(na1) Call ZeitpunktHerausfinden 'zpa ermitteln (aus 'zeile' herausfiltern!!!) zpa = zpv ' Vorsicht, zpv ist ein String! - UMWANDELN! ErstesVorkommen = True ne1 = nex ' <---------- Endezeitpunkt! <------------- NEU am 13.05.2015 zeile = Zl(ne1) Call ZeitpunktHerausfinden 'zpe ermitteln (aus 'zeile' herausfiltern!!!) Zeilennumer für erstes Vorkommen von "PT " ermitteln ---> nax ... nax = nax + 1 <---- braucht mein Programm .. Zeilennumer für zweites Vorkommen von "PT " ermitteln ---> nex wo wird sowas schon gemacht? in Private Sub AnfangEnde_check() 12:20 15.05.2015 Noch ein Knopf, um die ganze Automatik außer Betrieb setzen zu können, bzw. besser, um sie einzuschalten! Private Sub Command3_Click() ' Knopf Cso1 ---> Private Sub SubroutinenAufrufen() ---> Private Sub StartStopPunkte_check_StorePoint() in Sub SubroutinenAufrufen(): MsgBox nax & " " & nex '''''''''''''''''''''''''''''''''''''''' ' NEU am 13.05.2015 Open Arbeitsordner & "Huku2.ini" For Input As #1 ' Inhalt von Huku2.ini (bald kommt noch mehr dazu): Line Input #1, nax ' für na1, Startpunkt Line Input #1, nex ' für ne1, Endepunkt Close #1 '''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''''''''' ' 14.05.2015 Start- und Stoppunkt automatisch speichern <--------- hier ist WAS FALSCH ' Zeilennumer für erstes Vorkommen von "PT " ermitteln ---> nax ... nax = nax + 1 <---- braucht mein Programm .. ' Zeilennumer für zweites Vorkommen von "PT " ermitteln ---> nex Call AnfangEnde_check ' na und ne ermitteln nax = na + 1 ' immer der zweite Punkt soll als markiert gelten nex = ne Open Arbeitsordner & "Huku2.ini" For Output As #1 Print #1, nax Print #1, nex ' bald noch mehr?? Close #1 StartStoppLos.BackColor = &HB3B3FF ' ziegelrot &H8080FF ' kräftigeres ziegelrot '''''''''''''''''''''''''''''''''''''''''''''''''''' 18:57 15.05.2015 in Cso1 '''''''''''''''''''''''''''''''''''''''' ' NEU am 13.05.2015 Open Arbeitsordner & "Huku2.ini" For Input As #1 ' Inhalt von Huku2.ini (bald kommt noch mehr dazu): Line Input #1, nax ' für na1, Startpunkt Line Input #1, nex ' für ne1, Endepunkt Close #1 '''''''''''''''''''''''''''''''''''''''' nach Call SubroutinenAufrufen Infotaste = 0 ''''''''''''''''''''''''''''''''''''''''''''''''''' ' 14.05.2015 Start- und Stoppunkt automatisch speichern ' Zeilennumer für erstes Vorkommen von "PT " (na) und ' Zeilennumer für zweites Vorkommen von "PT " (ne) ermitteln: Call AnfangEnde_check nax = na + 1 ' immer der zweite Punkt soll als markiert gelten nex = ne Open Arbeitsordner & "Huku2.ini" For Output As #1 Print #1, nax Print #1, nex ' bald noch mehr?? Close #1 StartStoppLos.BackColor = &HB3B3FF ' ziegelrot &H8080FF ' kräftigeres ziegelrot '''''''''''''''''''''''''''''''''''''''''''''''''''' 20:02 15.05.2015 Neu: Knopf PRFix ähnlich StartStoppFix StartStoppFix.Backco Private Sub StartStoppFix_Click() Private Sub StartStoppLos_Click() Call StartStoppLos_Click ' setzt 0 0 in Huku2.ini ist das richtig?: If nax > 0 And Punktefehler = False And Punkteautomatik = True Then ' Punktefehler neu am 15.05.2015 StartStoppLos.backcolor StartStoppLos.BackColor = &HDFDFDF ' grau Punkteautomatik If Punkteautomatik = True Then StartStoppLos.BackColor = &HB3B3FF ' ziegelrot &H8080FF ' kräftigeres ziegelrot End If StartStoppLos.BackColor = &HDFDFDF ' grau Private Sub PRFix_Click() .BackColor = &HBFFA8F ' grün 10:07 16.05.2015 StartStoppLos.BackColor = &HBFFA8F ' grün - &HB3B3FF = ziegelrot - &H8080FF ' kräftigeres ziegelrot Variation.Enabled = True gestartet ... andere Farbe für den Reaper-Knopf? ...: PRFix.Visible = ... bei Info ausblenden! wie Command5. Command5.Visible = Private Sub Info() 19:31:25 17.05.2015 <--- 10:18 17.05.2015 Noch eine Programmerweiterung: Marker- und Punkte-Copy. ---c------c------c------c------c------c------c------c------c------c------c--- Nur 1 Knopf mit Namen 'Kopieren'. Er hat die Aufschrift 'Copy'. Programm. Bei Knopfdruck 'Copy' soll folgendes passieren: ---c------c------c------c------c------c------c------c------c------c------c--- * aktuelle Markerdaten einlesen (wenn nicht schon geschehen) * aktuelle Lautstärkehüllkurvendaten einlesen (wenn nicht schon geschehen) * Zeitwert des ersten Markers ansehen ---> Zap * Zeitwert des letzten Punktes ansehen ---> Zep * Distanzwert Dst berechnen: Dst = Zep - Zap + Ofs * Ofs ist ein Offset, z.B. 0.5 Sekunden. * Dieser Distanzwert Dst soll nun zu jedem Markerzeitpunkt (MARKER...) und zu jedem Kurvenkunktenzeitpunkt (PT ...) hinzuaddiert werden. * Reaperdatei neu schreiben und dabei die neu berechneten Marker- und Hüllkurvenwerte dazuschreiben. ---c------c------c------c------c------c------c------c------c------c------c--- In Subroutinenaufrufen: ---------------------------------------------------------------------------- Call MarkerFinden ' Ergebnis: mz (Markerzähler) ---------------------------------------------------------------------------- Call AuswertungLKURVE In Private Sub AuswertungLKURVE() -----> ZP(n) = Zeitwert !! (Call ExtraktVolkurvenZeitpunkte) zwischen na1 und ne1 ...... ---------------------------------------------------------------------------- ---------------------------------------------------------------------------- Call AuswertungMARKER In Private Sub AuswertungMARKER() -----> Markerzeiten(n) = ZPm !! (Call ExtraktMarkerZeitpunkte) (Call ExtraktMarkerFrequenzwerte) ---------------------------------------------------------------------------- Call AuswertungFRQ Call ZeitwerteLautstärkenTonhöhenZeigen Call ResonefileSchreiben ' <------------ ! ! ! Call KillApp("Resonanz.wav - Cool Edit") ' Titel des zu schließenden Fensters Shell "C:\Arbeit\VB\Huku01\ResoneHu.exe" ' das ursprüngliche Csound-Aufrufen mit Cool Edit oder Shell "C:\Arbeit\VB\Huku01\ResoneHu2.exe" ' Csound ohne Cool Edit oder Shell "C:\Arbeit\VB\Huku01\ResoneHu3.exe" ' verkürztes Csound mit Cool Edit (orc bleibt unverändert) - 26.04.2015 oder Shell "C:\Arbeit\VB\Huku01\ResoneHu4.exe" ' verkürztes Csound ohne Cool Edit (orc bleibt unverändert) - 26.04.2015 zeile = Markerfeld(n) * aktuelle Markerdaten einlesen (wenn nicht schon geschehen) sie sind im Feld ---> ZP(n) * aktuelle Lautstärkehüllkurvendaten einlesen (wenn nicht schon geschehen) sie sind im Feld ---> Markerzeiten(n) * Zeitwert des ersten Markers ansehen ---> Zap * Zeitwert des letzten Punktes ansehen ---> Zep * Distanzwert Dst berechnen: Dst = Zep - Zap + Ofs * Ofs ist ein Offset, z.B. 0.5 Sekunden. * Dieser Distanzwert Dst soll nun zu jedem Markerzeitpunkt (MARKER...) und zu jedem Kurvenkunktenzeitpunkt (PT ...) hinzuaddiert werden. * Reaperdatei neu schreiben und dabei die neu berechneten Marker- und Hüllkurvenwerte dazuschreiben. 21:14 17.05.2015 Storepoints = True ' neu am 17.95.2015 kopieren.Enabled = True 21:55 17.05.2015 If Infotaste = False Then ... Bei Infotaste = True wird kein ResoneHu aufgerufen, also wird kein Resonanz.Orc und Resonanz.Sco überschrieben !! nnn4 = "c:\Arbeit\Huku" & dnz & ".rpp" ' Name für eine zu schreibende Reaperdatei ------------->>>>>>>> Private Sub Reaperdateischreiben() 23:39 17.05.2015 Wir machen ein weiteres Unterprogramm: Private Sub Reaperdateischreiben_Copy() Es wird eine neue Reaperdatei mit dem Originalmaterial sowie mit dem kopierten Material geschrieben. Die alte Datei wird dabei überschrieben. Private Sub Reaperdateischreiben_Copy() Call Reaperdateischreiben_Copy nnn4 = "c:\Arbeit\Huku" & dnz & ".rpp" ' Name für eine zu schreibende Reaperdatei If gestartet = True Then 09:09 18.05.2015 Wünsche: ------------------------------ * Kopieren sollte sofort zur Verfügung stehen ... * Offset einstellbar * keine Msgbox wegen neuem Dateinamen. Besser: ......... OK * Anfangs- und Endpunkt beim kopierten Reaperfile richtig setzen 13:25 18.05.2015 In ResoneHu ----------------------------------------- alle Felddimensionen verzehnfacht alle 'single' zu 'double gemacht. ABER Private Sub Picture2_MouseMove(Button As Integer, Shift As Integer, x As Double, y As Double) ist falsch! RICHTIG: Private Sub Picture2_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single) 13:58 18.05.2015 in ResoneHu aufgehoben: frmDatei.Visible = False ' <------------------------------------- Picture2.Visible = False 13:58 18.05.2015 in ResoneHu aufgehoben: On Error GoTo weiter3 On Error GoTo weiter2 On Error GoTo capraus On Error GoTo dirbat3craus On Error GoTo dirbat3braus On Error GoTo ua100raus On Error GoTo Sampliraus On Error GoTo Sonarraus On Error GoTo Vglraus On Error GoTo weiter1 On Error GoTo plgraus On Error Resume Next On Error GoTo weiter4 On Error Resume Next On Error GoTo weiter5 ' Testliste.Visible = True frmDatei.Visible = False ' <------------------------------------- ' Form1.Show ' <----------- weg? .... (ist nur ein Schild 'Csound') 06.02.2011 ' frmDatei.Show 18:53 18.05.2015 Alles wieder in den ursprünglichen Zustand (bei ResoneHu) versetzt. 19:09 18.05.2015 StartStoppFix.BackColor = &HB3B3FF ' ziegelrot StartStoppLos.BackColor = &HB3B3FF s = False ' <------ ?? s = true ' <------ ?? für dwn StartStopfix-Knopf (ein-aus) ... steht kein Frequenzmarker StartStopPunkte_check_StorePoint Call Reaperdateischreiben_Copy Private Sub Reaperdateischreiben_Copy() Private Sub Reaperdateischreiben() Print #1, " PT " & "0.5" & " " & RLT & " 0" ' einen Punkt davor zeichnen! Huku1478c 0.74787 + 0.74787 = 1.49574 20:34 18.05.2015 Jetzt noch: Offset - Eingabe ermöglichen .... nicht wichtig. Wenn kopiert wurde, sollte der neue Dateiname (der mit dem 'C') im Clipboard stehen. NEIN. 10:58 19.05.2015 Ofs = 0.1 ' Offset (0.5) Clipboard.Clear Clipboard.SetText "Huku" & dnz & ".wav" ' <--- diese Zeile ins Clipboard tun! Der Zustand soll immer gleich sein: Command5.Visible = False Command5.Visible = True kopieren.Visible = False Abstandstext.Visible = False kopieren.Visible = True Abstandstext.Visible = True Private Sub kopieren_Click() Private Sub Abstandstext_Change() End Sub Tempo.Text Abstandstext.Text Private Sub kopieren_Click() Private Sub Command3_Click Line Input #1, Reaperfilev: Text1.Text = Reaperfilev Reaperfile = Text1.Text Private Sub Reaperdateischreiben_Copy() Wo wird der Zeitpunkt zurückgerechnet? ... das muss auch in Sub Reaperdateischreiben_Copy() verwendet werden! in Reaperdateischreiben_Copy minus Zap? <---- 23:46 20.05.2015 mmm4 = "c:\Arbeit\" & Text1.Text & "c" & ".rpp" ' kopierte Reaperdatei Testlist.Clear Testlist.AddItem mmm4 & " wurde geschrieben." Testlist.AddItem "" so ähnlich auch in ... ? Private Sub Variation_Click() ' neu am 04.09.2013 - Knopf Cso-Vari 10:46 21.05.2015 Private Sub Command5_Click() ' Knopf 'Reaper' Dim s As String s = "C:\Programme\REAPER\reaper.exe" & " c:\arbeit\" & Reaperfile & ".rpp" Shell s End Sub entfernt: Private Sub Command13_Click() ' <------- Knopf 'Reaper' für Variation ... ' NEU am 16.09.2013: ' wenn Knopf Vari gedrückt wurde, nicht Reaperfile verwenden, sondern den Namen ' Hukunnn.rpp, der generiert wurde. Dim s As String If nnn4 <> "" Then s = "C:\Programme\REAPER\reaper.exe " & nnn4 Shell s End If End Sub Text1 und Text2, alte Farbe: &H00000091& 12:32 21.05.2015 in Csofm: Call KillApp("NoteTab Light - C:\Arbeit\Csofm-Instrument.txt") ' Titel des zu schließenden Fensters eintragen! Private Sub SchreibIni() On Error GoTo ssss Open Arbeitsordner & "Huku.ini" For Output As #1 Print #1, Reaperfile Reaperfilev = Reaperfile Print #1, Trackname Tracknamev = Trackname Print #1, Sinus ' NEU (heute ist Sonntag, der 30.01.2011) Print #1, fua Print #1, fub Print #1, ente Print #1, del Print #1, fom Print #1, ltf ' neu am 7.2.2011 Print #1, lts ' neu am 7.2.2011 Print #1, hts ' neu am 7.2.2011 Print #1, GesamtLT Print #1, GesamtHT Print #1, GesamtKL Print #1, MasterHT Print #1, MasterKL Print #1, Dateiname Print #1, dnz 'Dateinamenzähler Close #1 ssss: End Sub Reaperfile ...... Private Sub AnfangEnde_check() If Punktefehler = False and tracknot and DateiNichtDa = false Then 18:01 21.05.2015 furchtbar: in Private Sub StartStopPunkte_check() na = ne ....... (274) passiert bei Datei Huku1500.rpp gesichert als Huku1500v.rpp Call StartStopPunkte_check Vielleicht liegt es an den irren Nachkommastellen in den Frequenz- und Klangangaben, die die Vari-Funktion erzeugt. Das müssen wir ändern! dim Htn as Double 16:09 22.05.2015 in Sub kopieren: Clipboard.Clear Clipboard.SetText Text1.Text & "c" ' ins Clipboard (?) in Sub Csoundstore: Clipboard.Clear Clipboard.SetText "Huku" & dnz & ".wav" ' <--- ins Clipboard in Sub Command4 soll sein: Call Reaperdateischreiben Clipboard.Clear Clipboard.SetText "Huku" & dnz & ".wav" ' <--- diese Zeile ins Clipboard tun! Testlist.Clear 23:07 22.05.2015 Private Sub Command3_Click() ' Knopf Cso1 '''''''''''''''''''''''''''''''''''''''' ' NEU am 13.05.2015 Open Arbeitsordner & "Huku2.ini" For Input As #1 ' Inhalt von Huku2.ini (bald kommt noch mehr dazu): Line Input #1, nax ' für na1, Startpunkt Line Input #1, nex ' für ne1, Endepunkt Close #1 '''''''''''''''''''''''''''''''''''''''' gestartet = True Variation.Enabled = True gedru = False ' 28.09.2013 Command3.BackColor = &HFFC0C0 ' neu am 29.09.2013 Orcknopf.BackColor = &HE0E0E0 ' grau Scoknopf.BackColor = &HE0E0E0 ' grau Variation.BackColor = &HFFC0C0 ' neu am 29.09.2013 Text17.Visible = True Command11.Visible = True Command12.Visible = True Testliste(1).Visible = True Testliste(2).Visible = True Testliste(3).Visible = True Testliste(4).Visible = True Testlist.Height = 1365 ' Änderung am 27.09.2013 wiederhol = True ErsterDurchlauf = False NeueKurve = False ResoneHuSelect = 0 ' Schalter für Sub SubroutinenAufrufen If Reaperfile <> Reaperfilevorher Then Call StartStoppLos_Click ' Reset Start-Stoppunkte - neu am 14.05.2015 End If Call SubroutinenAufrufen Infotaste = 0 ''''''''''''''''''''''''''''''''''''''''''''''''''' ' 14.05.2015 Start- und Stoppunkt automatisch speichern ' Zeilennumer für erstes Vorkommen von "PT " (na) und ' Zeilennumer für zweites Vorkommen von "PT " (ne) ermitteln: Call AnfangEnde_check nax = na + 1 ' immer der zweite Punkt soll als markiert gelten nex = ne Open Arbeitsordner & "Huku2.ini" For Output As #1 Print #1, nax Print #1, nex ' bald noch mehr?? Close #1 If Punkteautomatik = True Then StartStoppLos.BackColor = &HBFFA8F ' grün - &HB3B3FF = ziegelrot - &H8080FF ' kräftigeres ziegelrot End If '''''''''''''''''''''''''''''''''''''''''''''''''''' Reaperfilevorher = Reaperfile End Sub Private Sub Command19_Click() ' Knopf Cso2 Command19.BackColor = &HFFC0C0 ' neu am 29.09.2013 '''''''''''''''''''''''''''''''''''''''' ' NEU am 13.05.2015 Open Arbeitsordner & "Huku2.ini" For Input As #1 ' Inhalt von Huku2.ini (bald kommt noch mehr dazu): Line Input #1, nax ' für na1, Startpunkt Line Input #1, nex ' für ne1, Endepunkt Close #1 '''''''''''''''''''''''''''''''''''''''' gestartet = True Variation.Enabled = True gedru = False ' 28.09.2013 Command19.BackColor = &HFFC0C0 ' neu am 29.09.2013 ' Variation.BackColor = &HFFC0C0 ' neu am 29.09.2013 Text17.Visible = True Command11.Visible = True Command12.Visible = True Testliste(1).Visible = True Testliste(2).Visible = True Testliste(3).Visible = True Testliste(4).Visible = True Testlist.Height = 1365 ' Änderung am 27.09.2013 wiederhol = True ErsterDurchlauf = False NeueKurve = False ResoneHuSelect = 2 ' Schalter für Sub SubroutinenAufrufen Call SubroutinenAufrufen Infotaste = 0 ''''''''''''''''''''''''''''''''''''''''''''''''''' ' 14.05.2015 Start- und Stoppunkt automatisch speichern ' Zeilennumer für erstes Vorkommen von "PT " (na) und ' Zeilennumer für zweites Vorkommen von "PT " (ne) ermitteln: Call AnfangEnde_check nax = na + 1 ' immer der zweite Punkt soll als markiert gelten nex = ne Open Arbeitsordner & "Huku2.ini" For Output As #1 Print #1, nax Print #1, nex ' bald noch mehr?? Close #1 '''''''''''''''''''''''''''''''''''''''''''''''''''' If Punkteautomatik = True Then StartStoppLos.BackColor = &HBFFA8F ' grün - &HB3B3FF = ziegelrot - &H8080FF ' kräftigeres ziegelrot End If End Sub Private Sub Variation_Click() ' neu am 04.09.2013 - Knopf Cso-Vari ' Resonefile schreiben (Sub ResonefileSchreiben aufrufen) ' ResoneHu aufrufen - dort wird u.a. Csound gestartet (mit Shell) If gestartet = True Then Call ResonefileSchreiben Call KillApp("Resonanz.wav - Cool Edit") ' Titel des zu schließenden Fensters Shell "C:\Arbeit\VB\Huku01\ResoneHu.exe" ' Resonanz.wav erzeugen und abspielen ''''''''''''''''''''''''''''''''''''''''''''''''''' ' 14.05.2015 Start- und Stoppunkt automatisch speichern ' Zeilennumer für erstes Vorkommen von "PT " (na) und ' Zeilennumer für zweites Vorkommen von "PT " (ne) ermitteln: Call AnfangEnde_check nax = na + 1 ' immer der zweite Punkt soll als markiert gelten nex = ne Open Arbeitsordner & "Huku2.ini" For Output As #1 Print #1, nax Print #1, nex ' bald noch mehr?? Close #1 '''''''''''''''''''''''''''''''''''''''''''''''''''' Variation.BackColor = &HFFC0C0 ' blau Command3.BackColor = &HFFC0C0 ' blau Command19.BackColor = &HFFC0C0 ' blau End If End Sub ---&----&----&----&----&----&----&----&----&----&----&----&----&----&----&----&-- 19:55 23.05.2015 Noch mehr Verbesserungen: * Vari - ebenso wie Cso - auch in zwei Ausführungen: einmal mit und einmal ohne .orc zu schreiben! * Der Knopf 'Cool' sollte auch bei Vari wirksam sein. * auch bei den Zufallslautstärken und den Zeitpunkten runden, so wie es bei den Tonhöhen und den Klängen gemacht wurde. * Cso1-Knopf deaktivieren, nicht nur weiß machen - bei bestimmten Anlässen - OK * Der Cso1-Deaktivierungsknopf darf keine Farbänderung beim Cso1-Knopf verursachen - OK ... einen Strukturplan für Hukumu schreiben oder zeichnen. ----------------------------------------------------------- 22:27 23.05.2015 Command3.Enabled = False StartStoppFix.BackColor = &HB3B3FF ' ziegelrot StartStoppFix.BackColor = &HFFFFFF ' weiß Htv = HT(n) * (2 ^ (Wert / 100)) ' OK! ' runden auf so viele Stellen hinter dem Komma, wie x Nullen hat: ' y = Int((Y * X) + 0.5) / x Htv = Int((Htv * 100) + 0.5) / 100 HT(n) = Htv ResoneHuSelect If ResoneHuSelect = 0 And cole = True Then ' geändert am 24.04.2015 Shell "C:\Arbeit\VB\Huku01\ResoneHu.exe" ' das ursprüngliche Csound-Aufrufen mit Cool Edit End If If ResoneHuSelect = 0 And cole = False Then ' geändert am 24.04.2015 Shell "C:\Arbeit\VB\Huku01\ResoneHu2.exe" ' Csound ohne Cool Edit End If If ResoneHuSelect = 2 And cole = True Then ' NEU am 24.04.2015 Shell "C:\Arbeit\VB\Huku01\ResoneHu3.exe" ' verkürztes Csound mit Cool Edit (orc bleibt unverändert) - 26.04.2015 End If If ResoneHuSelect = 2 And cole = False Then ' NEU am 24.04.2015 Shell "C:\Arbeit\VB\Huku01\ResoneHu4.exe" ' verkürztes Csound ohne Cool Edit (orc bleibt unverändert) - 26.04.2015 End If Command3.BackColor = &HFFFFFF ' weiß Command3.BackColor = &HFFC0C0 ' blau StartStoppFix.BackColor = &HB3B3FF ' ziegelrot StartStoppFix.BackColor = &HE0E0E0 ' grau 10:00 24.05.2015 in Sub Private Sub Command2_Click(): Select Case Infotaste Case 0 Call Info Case 1 Call IniInfo Case 2 Call LtHt Case 3 Testlist.Clear Call Command3_Click in Sub Pluginfo: Open "C:\Arbeit-jms\Eigene Dateien 2\Texte\Bedienungsanleitungen\PLUG.txt" For Input As #8 Do While Not EOF(8) Line Input #8, zeile Testlist.AddItem zeile Loop Close #8 neu: Open "C:\Arbeit-jms\Eigene Dateien 2\Texte\Bedienungsanleitungen\Csofm\Huku-Startseite.txt" For Input As #8 call infoStartseite Testlist.BackColor = a Testlist.Clear Testlist.BackColor = &HFFFFFF ' weiß Testlist.AddItem "" Private Sub Info unten: Infotaste = 1 Testlist.Clear Testlist.BackColor = &HE0E0E0 ' grau Testlist.AddItem "" Private Sub InfoStartseite ' NEU unten: Infotaste = 2 Testlist.Clear Testlist.BackColor = &HFFFFFF ' weiß Testlist.AddItem "" Private Sub IniInfo unten: Infotaste = 3 ' neu Testlist.Clear Testlist.BackColor = &HFFFFFF ' weiß Testlist.AddItem "" Private Sub LtHt() unten: Infotaste = 4 ' neu D7F4E3