Old 07-30-2015, 06:44 AM   #1
Mink99
Human being with feelings
 
Mink99's Avatar
 
Join Date: Jan 2011
Location: Zürich
Posts: 1,008
Default JS enhancement for Midi processing

The current jsfx api is (for stream processing) based on three callbacks:
@init
@block
@sample

While this approach offers great opportunities for audio (sample) processing, it is not the perfect approach for midi stream processing, midi modifications on the fly....

Therefore I would like to suggest the following enhancement :

Two more callbacks could be added to the jsfx api :

@tick
Will be called on the smallest midi resolution, which is 1/96 note (1 midi timecode)
@event
Will be called whenever a midi event is processed (like @sample).This code can analyze, process, or synthesize, by reading, modifying, or writing to the variables evt0, evt1, evt2.. evt63. Evt0 is the current event.Further messages from running status mode will be on the evt1...63.

The evt structure will consist of the items msg1, channel, msg2 and msg3 like in midisend(offset,msg1,msg2,msg3) , a midisend (evt) and a a midisend(offset,evt) would make sense too.

A simple example could show the use of these features :

.... Shift all notes by a defined offset

@event

Int code = evt0.msg0;
(code == NOTE_ON ) ? msg1 += slider1; //0x1001
(code == NOTE_OFF ) ? msg1 += slider1; //0x1000

... Suppress cc portamento

@event

Int code = evt0.msg0;
(code == CC) ? (msg1==65)?evt0 = null ; // suppress


This is pseudo code, don't nail me on the syntax, the concept would be clear...
Mink99 is offline   Reply With Quote
Old 08-01-2015, 11:23 AM   #2
Mink99
Human being with feelings
 
Mink99's Avatar
 
Join Date: Jan 2011
Location: Zürich
Posts: 1,008
Default

Thank you for your feedback. these enhancement are in fact aimed towards shuffling, modifying and creating midi on the fly, in a non-destructive manner.

And it should enable things like the drum mapper from cubase, where you could use a specific translation between gm drum mapping and a specific mapping for a dedicated drummie/sampler, that is not gm compatible.

Btw. I do not get the point with vangelis, vangelis is cs-80 and there is no midi...
Mink99 is offline   Reply With Quote
Old 08-01-2015, 01:36 PM   #3
ELP
Human being with feelings
 
Join Date: Apr 2014
Posts: 943
Default

http://www.therogoffs.com/cs80/MIDI/cs80midi.html

__________________
I hope you can understand me? Without german beer my written english is always very bad, with beer it becomes unbearable!.
Less is more! To much limited the own creativity.
ELP is offline   Reply With Quote
Old 08-01-2015, 01:37 PM   #4
EvilDragon
Human being with feelings
 
EvilDragon's Avatar
 
Join Date: Jun 2009
Location: Croatia
Posts: 24,594
Default

Quote:
Originally Posted by Mink99 View Post
@tick
Will be called on the smallest midi resolution, which is 1/96 note (1 midi timecode)
It should probably follow the Preferences setting for it, though...
EvilDragon is online now   Reply With Quote
Old 08-01-2015, 11:10 PM   #5
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 11,746
Default

Quote:
Originally Posted by Mink99 View Post
@event ...
I helped a friend of mine implement several JSFX plugins, that in the end create midi messages that via USB go to an USB-Midi to DMX-converter Box and then control appropriate lights.

We found that the timing with "@block" for doing smooth DMX changes sometimes is not quite fast enough.

-Michael
mschnell is offline   Reply With Quote
Old 08-02-2015, 10:12 AM   #6
Mink99
Human being with feelings
 
Mink99's Avatar
 
Join Date: Jan 2011
Location: Zürich
Posts: 1,008
Default

Quote:
Originally Posted by TonE View Post
Your jsfx implementations are a secret however.

Please enlighten me, what is your problem ...
Mink99 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:34 AM.


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