Vienna Symphonic Library Forum
Forum Statistics

186,759 users have contributed to 42,477 threads and 255,921 posts.

In the past 24 hours, we have 2 new thread(s), 12 new post(s) and 36 new user(s).

  • API for VSL?

    I was wondering in what capacity I might be able to sequence articulations and VSL specific parameters with a scripting language like python. Do you expose an API to any degree? Is there a way for me to do this with a little work (if you don't already)? As long as there is some way for me to know the "language" that the VSL synthesizer expects (how it interprets a midi file), that should fit the bill. Any other advice about going in this direction? Thanks, Pat

  •  Articulations in VSL are controlled by MIDI commands, you just need to learn how to communicate via the MIDI protocol and that is all that is needed.

    Why would you even want to think about using a programming language?  you have to play the notes of VSL with MIDI, so that is what you would use to select articulations.  The type of MIDI command required is set within the player (VI Pro).


  • MIDI of course is a programming language.  But the main controls used within VSL instruments are:

    1 selection of articulations usually by means of keyswitches

    2 note velocity for loudness and timbre

    3 continous controllers accessible through mod wheel or other controls for volume and expression, and 

    4 crossfading of layers.

    There are many other controls, but one normally uses these the most.  All of them are very easily programmed by the combinatiuon of MIDI within a sequencer program, and the VSL software including Vienna Instruments and/or Vienna Ensemble.  Notation programs add another layer of programming, though none of those are very effective for a really musical performance.  So using a sequencer with MIDI and VSL software is the easiest way to control all the parameters needed since the software is designed specifically to be used with MIDI commands, making a scripting program redundant.


  • last edited
    last edited

    @William said:

    MIDI of course is a programming language.  But the main controls used within VSL instruments are:

    MIDI IS NOT A PROGRAMMING LANGUAGE, IT IS A PROTOCOL !!!!!!

    A Protocol is a way to define how 2 or more machines are going to talk to each other


    MacBook Pro M3 MAX 128 GB 8TB - 2 x 48" - 1 x 27" screen --- Logic Pro --- Mir Pro 3D Dolby Atmos --- Most of the VI libs, a few Synch... libs --- Quite a few Kontakt libs --- CS80 fanatic --- Studio equipped in Dolby Atmos 7.1.2
  • As a former software developer, I gotta say, with no disrespect intended, the -last- thing VSL needs is to get more 'programmery'.

    If anything, I'd prefer that VSL heads in the direction of being more like a violin... in that it gets fewer and fewer 'options' over time and becomes more -playable-... in real time. ie. it will 'see' the notes and with only one or two controllers figure out your -intention- and then generate the proper performance for you. It's already a long way there, but it certainly can and will go -much- further.

    I foresee a day not too far off when there will be nothing like patches/matrices/keyswitches/xfades... except for people who want to make -un-realistic (obviously electronic) sounds. People will laugh out loud at all the MIDI contortions we had to go through to get a 'realistic' performance. I believe it will take as much skill to 'play' VSL as it does a violin (as it does now) but that skill will have less to do with 'programming' and be more like the skills one uses to play a real violin.

    Today, you use a zillion primitive controllers, switches, presets, etc. to emulate a violin. It just takes patience to build something--like a castle of toothpicks.  Tomorrow: it will be like a violin: only a few interface elements but you'll spend a good while learning to manipulate them expressively. But once you master it? You'll make music---real music--as effortlessly as a good violinist.

    That's -my- dream. Real time expression.

    But hey... you are welcome to your fantasy as I am to mine. :D VSL has made it clear they're fully booked so it's all blue skyin' anyhoo.

    I'm still tryin' to figure out slurs and legato... hint, hint. :D

    ---JC


  • last edited
    last edited

    @William said:

    MIDI of course is a programming language.  But the main controls used within VSL instruments are:

    MIDI IS NOT A PROGRAMMING LANGUAGE, IT IS A PROTOCOL !!!!!!

    A Protocol is a way to define how 2 or more machines are going to talk to each other

    MIDI is obviously a language for musical expressions and for controlling complex sequences  of digital commands  - i.e., programming.  If you want to split hairs  then go ahead. 

    By the way - what do you DO with all your  powerful computer equipment, Cyril? I've never heard any music you do.  I am curious as to what you actually do with all this expertise and equipment of yours besides flame people. 


  • sorry, midi is not a programming language, and that distinction is not splitting hairs. At least not to a programmer :)

  • Hi William,

    You are sinking !

    Note of the author :

    I have simplify the whole thing not to make it too complicated so Willian could understand the difference of a programming language and a protocol.

    VSL SE is wrote in a programming language, the most use at this time C or C ++ but thers is also Java, Algol, Cobol, Basic, RPG II.......

    SE will receive Midi messages from your DAW (Logic Cubase...)

    A programming language will look like this (this is inside SE) ;

    define variables :
         type = 1 bit
         note = 1bit
        velocity = 1bit

    Begin:

    read message from midi else on error wait 1 ms then go to Begin

    MidiChannel = message [1,1]                          ;* I extract the midi channel, the type of message, the value of the note, and the velocity

    type = message [2,1]   

    note = message [3,1]

    velocity = message [4,1]

    If type = CTRL the gosub ctrl                                               ;* if it is not a note I will go to the subroutine that is taking care of controlers

    IF note >= c1  and  <= B1 then do                                    ;* i check if it is not an articulation change

           If note = c1 then

           read staccato sample from file

       else 

           if not is c#1 then read legato sample from file

       end

    else

    .........

    If I simplify the Midi protocol it looks like this ;

    midi01noteA066,midi01noteB044,midi01endnoteA0,midi01endnoteB0,

    Explication :

    on midi channel 1 I send the a0 with velocity = 66, I send B0 with velocity = 44, I send end note of A0, I send end note 0f 0

    So dont speak of things you dont know about !

    If my memory is good Midi is a very bad protocol language because the sender just send and the receiver just receive, it is not possible to say in midi "please resend message xxx I have not understand "

    With protocol like BSC it is much more complicate, it looks like this : 

    beggining of a xx bit message,......(my xx bits)....., end of message, control checksum

    so when the receiver read the message it extract the 64 bit , to the calculation of the checksum, compare with the checksum send by the sender.

    If the difference of the checksums is different than zero it sends a message back to the sender so it sends the block again !!!

    Best

    Cyril

    P.S. I have been programming for 30 years, made a lot of teletransmitions between small and VERY big computer, I have also created a language for talking between host and printers over Postscript


    MacBook Pro M3 MAX 128 GB 8TB - 2 x 48" - 1 x 27" screen --- Logic Pro --- Mir Pro 3D Dolby Atmos --- Most of the VI libs, a few Synch... libs --- Quite a few Kontakt libs --- CS80 fanatic --- Studio equipped in Dolby Atmos 7.1.2
  • Hi William,

    You are sinking !

    Note of the author :

    I have simplify the whole thing not to make it too complicated so Willian could understand the difference of a programming language and a protocol.

    VSL SE is wrote in a programming language, the most use at this time C or C ++ but thers is also Java, Algol, Cobol, Basic, RPG II.......

    SE will receive Midi messages from your DAW (Logic Cubase...)

    A programming language will look like this (this is inside SE) ;

    define variables :
         midichannel = 1bit
         type = 1 bit
         note = 1bit
        velocity = 1bit

    Begin:

    read message from midi else on error wait 1 ms then go to Begin

    MidiChannel = message [1,1]                          ;* I extract the midi channel, the type of message, the value of the note, and the velocity

    type = message [2,1]   

    note = message [3,1]

    velocity = message [4,1]

    If type = CTRL the gosub ctrl                                               ;* if it is not a note I will go to the subroutine that is taking care of controlers

    IF note >= c1  and  <= B1 then do                                    ;* i check if it is not an articulation change

           If note = c1 then

           read staccato sample from file

       else 

           if not is c#1 then read legato sample from file

       end

    else

    .........

    If I simplify the Midi protocol it looks like this ;

    midi01noteA066,midi01noteB044,midi01endnoteA0,midi01endnoteB0,

    Explication :

    on midi channel 1 I send the a0 with velocity = 66, I send B0 with velocity = 44, I send end note of A0, I send end note 0f 0

    So dont speak of things you dont know about !

    If my memory is good Midi is a very bad protocol language because the sender just send and the receiver just receive, it is not possible to say in midi "please resend message xxx I have not understand "

    With protocol like BSC it is much more complicate, it looks like this : 

    beggining of a xx bit message,......(my xx bits)....., end of message, control checksum

    so when the receiver read the message it extract the 64 bit , to the calculation of the checksum, compare with the checksum send by the sender.

    If the difference of the checksums is different than zero it sends a message back to the sender so it sends the block again !!!

    Best

    Cyril

    P.S. I have been programming for 30 years, made a lot of teletransmitions between small and VERY big computer, I have also created a language for talking between host and printers over Postscript


    MacBook Pro M3 MAX 128 GB 8TB - 2 x 48" - 1 x 27" screen --- Logic Pro --- Mir Pro 3D Dolby Atmos --- Most of the VI libs, a few Synch... libs --- Quite a few Kontakt libs --- CS80 fanatic --- Studio equipped in Dolby Atmos 7.1.2
  • .


  • last edited
    last edited

    @pat brooks said:

    sorry, midi is not a programming language, and that distinction is not splitting hairs. At least not to a programmer :)
     

    O.K., I stand corrected. 


  • I had better not post anything more here.  I'll leave it to Cyril and the experts.  What do I know?  I'm only a musician.  I know some scales. 


  • +1

    'Only' a musician? I'd put the skills it takes to make good music right up there with brain surgeon and nuclear physicist. But I sure as heck don't want to  -think- like a scientist. Being creative takes up all the brain space I got.

    So if you could listen to my demo (in the post on slurs) I'd hold ya in even -higher- esteem than I already do. [:D] (Until this forum allows me to send ya an e-drink, flattery's all I got for incentives.)

    ---JC


  • [quote=William]

    One other thing Cyril, that last post of yours is not impressive, it is simply stultifying.  I assume your purpose is to bore people so intensely that they simply give up arguing?  If so, you can congratulate yourself on a job well done. 

    William,

    I have spend a lot of time to write the previous mail to explain to you the difference between a programming language and a protocol so you don't die idiot, and instead of thanking me you are insulting me !!!

    Many thanks !

    Cyril


    MacBook Pro M3 MAX 128 GB 8TB - 2 x 48" - 1 x 27" screen --- Logic Pro --- Mir Pro 3D Dolby Atmos --- Most of the VI libs, a few Synch... libs --- Quite a few Kontakt libs --- CS80 fanatic --- Studio equipped in Dolby Atmos 7.1.2
  •  Cyril,  maybe it is a language thing,  but you do come across rather egotistical, I think that is why you get a hard time sometimes.

     I have a notice up on the wall in  my studio, which many read and reconsider what they are about to say:-

    Those people who think they know everything
    Are annoying to those of us that do.

    [:D]


  • last edited
    last edited

    @andyjh said:

    Those people who think they know everything

    Are annoying to those of us that do.

    I keep my mouth shut on subject I dont know.

    I help only on subject I know.

    A lot of people are saying "thanks" for my help

    I have quite a few people speaking directly to me by mail or by phone, lately I have send a Logic template to help to understand Event edit and IAC !

    I was trying help William to understand !  Too bad ! I have spend my time for nothing !


    MacBook Pro M3 MAX 128 GB 8TB - 2 x 48" - 1 x 27" screen --- Logic Pro --- Mir Pro 3D Dolby Atmos --- Most of the VI libs, a few Synch... libs --- Quite a few Kontakt libs --- CS80 fanatic --- Studio equipped in Dolby Atmos 7.1.2
  • Cyril I thought you were trying to be a smart aleck. I got rid of that post by the way but you put it back on.  Anyway I realize you are correct about the nomenclature.


  • last edited
    last edited

    @William said:

    Cyril I thought you were trying to be a smart aleck. I got rid of that post by the way but you put it back on.  Anyway I realize you are correct about the nomenclature.

    you deleted too late, so it was sent to everybody that have subscribe to this tread


    MacBook Pro M3 MAX 128 GB 8TB - 2 x 48" - 1 x 27" screen --- Logic Pro --- Mir Pro 3D Dolby Atmos --- Most of the VI libs, a few Synch... libs --- Quite a few Kontakt libs --- CS80 fanatic --- Studio equipped in Dolby Atmos 7.1.2
  •  Well you could easily edit that out but you don't want to, which is fine with me.  It is all trivia.