Old 01-09-2010, 06:08 PM   #1
typewriter
Human being with feelings
 
Join Date: Jun 2007
Posts: 528
Default JS Programmierung

Kennt sich hier jemand mit JS Programmierung aus?
typewriter is offline   Reply With Quote
Old 01-09-2010, 06:53 PM   #2
Blechi
Human being with feelings
 
Blechi's Avatar
 
Join Date: Apr 2008
Location: Saarlänner
Posts: 1,141
Default

Was willste denn wissen?
Blechi is offline   Reply With Quote
Old 01-10-2010, 03:56 AM   #3
typewriter
Human being with feelings
 
Join Date: Jun 2007
Posts: 528
Default

Ich habe neulich die Midieffekte ausprobiert, war ganz angetan und habe mir überlegt, dass es eigentlich funktionieren müsste, damit das Performance Tool von der alten Vienna Library zu ersetzen.

Das Tool war (ist) eine Art Midifilter, der zwischen Midikeyboard und Sequencer gehängt wurde. Letztlich macht das Ding nicht anderes als automatisch Keyswitches einzufügen. Dadurch ist es beispielsweise möglich perfekte Legatos zu spielen, weil das Tool - je nachdem was man spielt - den Keyswitch einfügt, der zum richtigen Sample führt.

Das Tool hatte einige echte Nachteile:

- es war immer ausserhalb des Sequencers, d.h. man brauche Maple midi, Loopback Tool oder ähnliches
- für den Mac gab es das Tool nur in eingeschränkter Form
- die Zahl der Midi Ports war beschränkt
- wenn man damit aufgenommen hat, dann hatte man immer auch die Keyswitches im Sequencer aufgenommen, was editieren eigentlich unmöglich macht

Mit JS kann man alles diese Nachteile komplett aufheben. Wenn man damit beispielsweise ein Legato-Tool realisieren würde, dann wäre es sowohl auf dem Mac als auch auf dem PC zu nutzen und direkt in den Sequencertrack integrierbar - keine wilde undurchsichtige Midiverkabelung mehr. Und das ganze wäre automatisierbar. D.h. ich konnte einfach eine Notenpassage einspielen und den Legatoeffekt erzielen, indem ich das JS plugin an der relevanten Stelle auf "wet" schalte. Ich habe das mit einem JS arpeggiator probiert und das ist ziemlich genial, da der JS Effekt quasi zwischen Miditrack und VST Plugin hängt, habe ich die Keyswitches auch nicht im Miditrack gespeichert und kann vernünftig editieren.

Ich würde so etwas gerne realisieren, habe aber nur dürftige Programmierkenntnisse und würde gerne jemanden finden, den ich mit Fragen löchern kann, da sich die JS Doku zum Thema Midi auf wenige Zeilen beschränkt.

Vielleicht hat ja auch jemand Lust mitzumachen. Ich würde mir dann die elendige Arbeit machen, die Millionen Keyswitches herauszuschreiben.
typewriter is offline   Reply With Quote
Old 01-10-2010, 06:23 AM   #4
Blechi
Human being with feelings
 
Blechi's Avatar
 
Join Date: Apr 2008
Location: Saarlänner
Posts: 1,141
Default

Ich bin zwar kein waschechter MIDIot, aber dein Problem klingt beherrschbar.
Mal sehen ob ich das richtig verstanden habe:
Das Performance Tool ist eine Art Übersetzer, der nach dem Prinzip
'wenn Bedingung 1 erfüllt ist, dann füge Keyswitch Nr. 1 ein,
wenn Bedingung 2 erfüllt ist, dann füge Keyswitch Nr. 2 ein,
usw.'
arbeitet.
Das sollte (abhängig von der Komplexität der Bedingungen) eigentlich zu meistern sein.

Da das Tool im Track sitzt, hat es Zugriff auf genau einen MIDI Port. Es ist nicht möglich von mehreren MIDI Ports zu empfangen oder an mehrere MIDI Ports verschiedene Daten zu senden.

Mit 'record input' landen die Keyswitch Daten nicht in der aufgenommenen Spur.

Die MIDI Funktionen in JS beschränken sich auf den Empfang und das Senden von MIDI Daten. Mehr ist auch nicht notwendig, da die Manipulation der Daten mit den normalen Standardfunktionen geschieht.

Kannst du mal ein paar (unterschiedlich komplexe) Beispiele für zu sendende Keyswitches und den dazugehörigen Bedingungen posten?
Blechi is offline   Reply With Quote
Old 01-10-2010, 06:51 AM   #5
typewriter
Human being with feelings
 
Join Date: Jun 2007
Posts: 528
Default

Quote:
Originally Posted by Blechi View Post
Ich bin zwar kein waschechter MIDIot, aber dein Problem klingt beherrschbar.
Mal sehen ob ich das richtig verstanden habe:
Das Performance Tool ist eine Art Übersetzer, der nach dem Prinzip
'wenn Bedingung 1 erfüllt ist, dann füge Keyswitch Nr. 1 ein,
wenn Bedingung 2 erfüllt ist, dann füge Keyswitch Nr. 2 ein,
usw.'
arbeitet.
Korrekt.
Quote:
Originally Posted by Blechi View Post
Das sollte (abhängig von der Komplexität der Bedingungen) eigentlich zu meistern sein.
Es gibt da noch ein paar Schalter, an denen man drehen kann, aber ich denke an sich auch, dass es an sich machbar sein müsste.

Quote:
Originally Posted by Blechi View Post
Da das Tool im Track sitzt, hat es Zugriff auf genau einen MIDI Port. Es ist nicht möglich von mehreren MIDI Ports zu empfangen oder an mehrere MIDI Ports verschiedene Daten zu senden.
Das macht nichts, da der Track ja ohnehin nur 16 midichannel hat. Das Original hat 4 Ports pro Rechner. Eine JS-Variante hätte unendlich viele Ports, da man ja in jeden Track eine einfügen könnte. Es kommt also weniger auf die Zahl der Ports an, als auf die Zahl der ansprechbaren Tracks. Da ist eben beim Original bei 4+16 Schluss.

Quote:
Originally Posted by Blechi View Post
Mit 'record input' landen die Keyswitch Daten nicht in der aufgenommenen Spur.
Das wäre gerade das Highlight - dass man den Midieffekt mit der Automation ein und ausschalten kann.

Quote:
Originally Posted by Blechi View Post
Die MIDI Funktionen in JS beschränken sich auf den Empfang und das Senden von MIDI Daten. Mehr ist auch nicht notwendig, da die Manipulation der Daten mit den normalen Standardfunktionen geschieht.
Genau.

Quote:
Originally Posted by Blechi View Post
Kannst du mal ein paar (unterschiedlich komplexe) Beispiele für zu sendende Keyswitches und den dazugehörigen Bedingungen posten?
Kann ich. Schaffe ich aber erst Ende der Woche (Endsemesterstress). Es gibt ein Videotutorial zu dem Tool, dass Du Dir vielleicht vorher einmal anschauen solltest.
typewriter is offline   Reply With Quote
Old 01-10-2010, 07:26 AM   #6
Blechi
Human being with feelings
 
Blechi's Avatar
 
Join Date: Apr 2008
Location: Saarlänner
Posts: 1,141
Default

Quote:
Originally Posted by typewriter View Post
Es gibt da noch ein paar Schalter, an denen man drehen kann, aber ich denke an sich auch, dass es an sich machbar sein müsste.
Wenn das Grundgerüst funktioniert, dann lassen sich auch die Zusatzfunktionen ergänzen.

Quote:
Originally Posted by typewriter View Post
Das macht nichts, da der Track ja ohnehin nur 16 midichannel hat. Das Original hat 4 Ports pro Rechner. Eine JS-Variante hätte unendlich viele Ports, da man ja in jeden Track eine einfügen könnte. Es kommt also weniger auf die Zahl der Ports an, als auf die Zahl der ansprechbaren Tracks. Da ist eben beim Original bei 4+16 Schluss.
Obacht, REAPER hat auch eine Beschränkung bezüglich der maximal möglichen Anzahl an MIDI Ports. Da ich allerdings so gut wie nie mit MIDI arbeite, habe ich keine Ahnung wo die Grenze ist. Es gab hier im Forum mal irgendwann einen Thread dazu. Vielleicht findest du den ja.

Quote:
Originally Posted by typewriter View Post
Es gibt ein Videotutorial zu dem Tool, dass Du Dir vielleicht vorher einmal anschauen solltest.
Hast du da einen Link?
Blechi is offline   Reply With Quote
Old 01-10-2010, 07:35 AM   #7
typewriter
Human being with feelings
 
Join Date: Jun 2007
Posts: 528
Default

Quote:
Originally Posted by Blechi View Post
Hast du da einen Link?
Siehe PM.
typewriter is offline   Reply With Quote
Old 01-10-2010, 07:02 PM   #8
Blechi
Human being with feelings
 
Blechi's Avatar
 
Join Date: Apr 2008
Location: Saarlänner
Posts: 1,141
Default

Quote:
Im Prinzip gibt es 3 Modi:
Legato
Repetition
Alternation

Bei Legato scheint das Tool die Zeit des Übergangs zwischen zwei Noten und die Zielnote beim Spielen zu messen und gibt dann aber nicht die normale Endnote, sondern eine andere aus, die den korrekten Legatoübergang bereitstellt. Du kannst Dir das so vorstellen, dass die Samples im Sampler in mehreren Regionen über das Keyboard gruppiert sind und der Midifilter dafür sorgt, dass immer in die richtige Tastaturzone auf den richtigen Tonübergang gesprungen wird.

Bei Repetition wird der Maschinengewehreffekt vermieden, wenn man dieselbe Note am Sampler schnell wieder triggert. Heute läuft das über Round-Robin. Für das Tool hat man dagegen ganze Sequenzen gesamplet, deren Übergänge man über das Tool triggert.

Alternation hilft bei Keyswitch Instrumenten. Man gibt eine Abfolge von Artikulationen vor und egal was man spiel, gibt das Tool die dazugehörigen Keyswitches aus. Das halte ich an sich für nicht relevant nachzubauen, da man das mit Reabanks und Program changes genauso gut hinbekommt. Man muss dafür nur seine Samples organisieren

Wenn man Legato und Repetition nachbauen könnte, wäre das schon einmal wirklich Klasse.
Uiuiui, das wird Arbeit.
Nach kurzem Überfliegen der Manuals bin ich mir nicht mehr so sicher, ob das mit JS so ohne Weiteres lösbar ist. Schau mer mal.
Bleibt wohl nix Anderes übrig, als das Ganze Schritt für Schritt aufzudröseln.
Blechi is offline   Reply With Quote
Old 01-10-2010, 07:49 PM   #9
typewriter
Human being with feelings
 
Join Date: Jun 2007
Posts: 528
Default

Nach nochmaligem Nachlesen scheinen es tatsächlich immer nur (...) Keyswitches zu sein, die "on the Fly" gesetzt werden.

Man darf nicht vergessen, dass das Ganze wahnsinnig aufgepluster wurde, weil es seinerzeit ein irres Geld gekostet hat. Jetzt kann man die Samples aber auf Ebay günstig schiessen.

Ich vermute dass es jeweils eine feste Regel gibt, wie umgeschaltet wird (z.B. bei Legato) und die Textfiles, die man lädt das Mapping des jeweiligen Soundprogramms enthalten, auf das dann zugegriffen wird. Das müsste man ja nicht zwangsläufig so machen. Man hat bei Reaper ja keine Beschränkung was die Zahl der Effekte angeht. Es muss also nicht ein Effekt mit 16 Kanälen werden. Man kann ja auch einen Effekt pro Performance Programm fix coden. Midi through braucht man auch nicht, da man den Effekt nur da setzt, wo man ihn benötigt und über die Automation an- und ausschaltet.

Soll ich einmal die Keyswitches einer Datei aufdröseln?
typewriter is offline   Reply With Quote
Old 01-11-2010, 03:24 AM   #10
Blechi
Human being with feelings
 
Blechi's Avatar
 
Join Date: Apr 2008
Location: Saarlänner
Posts: 1,141
Default

Ich sehe die Schwierigkeit eher darin z.B. 'legato' gespielte Noten zuverlässig aus dem MIDI Strom zu fischen. Mal sehen wie das zu lösen ist.
Es wäre schon von Vorteil das Mapping der einzelnen Programme aus Textfiles nachzuladen und die verschiedenen Programme im JS Effekt per Slider/Klappmenü auszuwählen.
Das Mapping hart in den Programmcode einzubauen bläht den Effekt nur unnötig auf und ist zu unflexibel. Ggf. müssten die vorhandenen Textfiles in ein für Reaper verständliches Format konvertiert werden.
Kannst du mir mal so ein Textfeile schicken?
Möglicherweise sind die ja einigermassen lesbar.
Blechi is offline   Reply With Quote
Old 01-11-2010, 07:41 AM   #11
typewriter
Human being with feelings
 
Join Date: Jun 2007
Posts: 528
Default

Quote:
Originally Posted by Blechi View Post
Ich sehe die Schwierigkeit eher darin z.B. 'legato' gespielte Noten zuverlässig aus dem MIDI Strom zu fischen.
Das muss man gar nicht. Wenn man nicht auf ein Livespielen abzieht, sondern nur darauf, dass man per Automation mit dem Effekt die Keyswitches "on the fly" erzeugen kann. Das Script muss gar nicht erkennen, wo Legato gespielt wird, weil man das ja quasi durch die Automation vorgibt bzw. den Effekt immer anlassen kann.

Das wäre meine Idee: Du hast einen Reper Track mit den VSL Samples.

Midichannel 1: ein normaler Streichersound.

Midichannel 2: das speziell gemappte Legato-Programm + der JS Legato Effekt.

Du würdest jetzt ganz normal Deinen Track mit dem Sound auf Midichannel 1 einspielen - auch die Passagen, die Legato gespielt werden. Auf Midichannel 2 und mit dem Legato-Sound passiert momentan noch absolut gar nichts.

Danach markierest Du im Reaper Midieditor einfach die Noten, die Legato gespielt wurden (und mit dem speziellem Mapping perfekt klingen sollen) und verschiebst sie mit dem Kontextmenue einfach auf Note Channel 2 (den 2. Midichannel). D.h die Passage erklingt jetzt mit dem speziellen Mapping und perfekt erzeugten Keyswitches des JS Effektes. Die Ghostnote könnte man auch manuell setzen. Meine Vermutung wäre, dass dieser Keyswitch ohenhin immer gleich ist.

Verstehst Du, was ich meine? Durch die Integration in Reaper könnte man das Legato Tool im Vergleich zum Original wesentlich vereinfachen - bei gleichem Ergebnis.

Im Prinzip bräuchte man nicht einmal die Automation - der Effekt könnte immer "an" sein und zwar auf einer Midispur, die eben nur diesem einen Spezialsound zugewiesen ist. Erzielen würde man den Legatoeffekt dann einfach, indem man Noten auf diesen Kanal "schiebt" - Fertig.

Das hätte einen enormen Charme gegenüber dem fummeligen Performance Tool.
typewriter is offline   Reply With Quote
Old 01-11-2010, 08:17 AM   #12
Blechi
Human being with feelings
 
Blechi's Avatar
 
Join Date: Apr 2008
Location: Saarlänner
Posts: 1,141
Default

Aha, nicht live. Das vereinfacht die Sache erheblich.
Man müsste also nur einen CC68(?) auswerten und dann die Noten entsprechend mappen. Na, das sollte doch machbar sein.
Dann müsste man nur noch die Mapping Textfiles 'übersetzen' und Legato wäre erledigt.

Die Sache mit der Repetition habe ich noch nicht ganz verstanden.
Werden da genau so viele einzelne Noten gemappt ausgegeben wie MIDI Noten eintreffen oder werden da Loops getriggert???
Blechi is offline   Reply With Quote
Old 01-11-2010, 08:26 AM   #13
typewriter
Human being with feelings
 
Join Date: Jun 2007
Posts: 528
Default

Quote:
Originally Posted by Blechi View Post
Die Sache mit der Repetition habe ich noch nicht ganz verstanden.
Werden da genau so viele einzelne Noten gemappt ausgegeben wie MIDI Noten eintreffen oder werden da Loops getriggert???
Das muss ich mir noch einmal genauer ansehen. Die Tutorials sind hochgeladen. Links morgen per PM.
typewriter is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -7. The time now is 02:25 AM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.