Introdução ao Scripting no Kontakt, Parte 2

In this 5 Part MPVHub Series, Toby Pitman explores the wonderful world of scripting in Native Instruments' Kontakt sampler. In Part 2 you'll build a note trigger FX script!  

Então última vez que olhei para algumas callbacks básicos, ou seja, "na inicialização", "na nota" e "sobre a libertação". Vimos como colocar um código simples entre estes callbacks impressos algumas mensagens deixando-nos saber o nosso código estava funcionando.

Desta vez, estavam indo para construir alguma coisa! Im certeza youve visto todos Danos Heavyocitys e Evolve instrumentos. Uma das coisas legais que eles têm são nota desencadeada FX. Bem eu estou indo mostrar-lhe como criar um script simples de fazer isso, como eu acho que é algo que os usuários gostariam de fazer. Vamos lá!


O Plano!

Veja o que queriam. Você carrega um monte de efeitos de inserção e ignorá-los. Você, então, mapear o parâmetro Bypass para cada efeito a uma nota. Quando você atinge uma nota, o efeito correspondente a essa nota está ativa, quando você soltar a nota o efeito é ignorada!

Para conseguir isso, primeiro precisa aprender sobre declarações.


Demonstrações

Então, quais são as declarações? Bem, esses deixe Kontakt tomar decisões sobre o que vai acontecer quando você faz algo.

A declaração se ... o resto é encontrado em todas as linguagens de script. Ele permite que o script para ser executado somente se algo muito específico acontece. Vamos dar a nossa mensagem simples da última vez como um exemplo.


em nota

mensagem ("Você está tocando uma nota")

terminará em


Isso vai aparecer se você bater qualquer nota, é uma nota sobre a chamada de retorno depois de tudo. Vamos dizer que nós só queremos isso para mostrar-se em C3 embora. A declaração se é perfeito para isso.


Se

Aqui está a estrutura da declaração se.


if (definir alguns parâmetros aqui como algo igual a alguma coisa)


{Fazer algo inteligente, se algo é igual alguma coisa!}


fim se


Então, isso é muito simples! Mas o que é algo igual a alguma coisa? Bem que poderia ser qualquer coisa. No nosso caso, nós precisamos dizer a declaração se sobre C3. Podemos fazer isso usando uma variável built-in chamada $ EVENT_NOTE (Há também $ EVENT_VELOCITY também!). Isto mantém o valor da nota actualmente realizada (s) como um número de nota MIDI e só pode ser usado dentro de uma nota de chamada de retorno ou de libertação.

Assim, poderíamos dizer, se $ EVENT_NOTE é igual a 60 (C3), em seguida, executar o script!. Então, como vamos escrever isso. Bem, como este!

If statement


Se eu tocar notas que C3 Arent, eu não vou ver nada como esse script é específico para C3. Mas, se eu faço!

You're Playing C3!


Então o que dizer de todas as outras notas? Bem, podemos expandir esse número para um se ... else.


Se ... Else

A parte mais pertence a qualquer coisa que não está na lista. Você pode pensar nisso como um porteiro de um clube!


if (a pessoa é atraente)


Deixe-os em!


outro


Mandá-los embora!


fim se


Apenas brincando (Ou sou eu?), Mas que faz resumir! Nós poderíamos usar isso.

If...Else Statement


As notas erradas agora tem uma mensagem também!

Try again Bozo!


Então, o que se queremos uma carga de mensagens diferentes em notas diferentes? Nós não queremos ter que continuar escrevendo um monte de if para cada um. Há, porém, uma outra declaração útil chamada select ().


Selecionar

Selecione é como uma versão mais versátil de se ... outra coisa. Desta vez, o é se um caso, como em uma base caso a caso. Veja como ele funciona.

Em vez de dizer $ EVENT_NOTE = 60 dentro dos colchetes da EVENT_NOTE declaração se, agora basta inserir $ dentro dos colchetes selecione gosto assim.


selecionar ($ EVENT_NOTE)


End Select


O valor de número de nota de $ EVENT_NOTE é passado para o caso.

Select

Isso vai fazer exatamente a mesma coisa como se o nosso primeiro exemplo. Você pode indicar como muitos casos, como você gosta.

Select


Você também pode definir um intervalo para o caso assim.

You can also set a range for the case like so.


Quando você joga dentro das faixas você verá isso.

You're Playing Between C4 and B4!


Claro que você precisa para emparelhar a nota com um lançamento assim.


Quando você soltar qualquer nota.


Agora que sabemos como isso funciona, iriam usar select () para acionar os nossos efeitos.


Alguns efeitos carregar!

Eu estou indo para carregar três efeitos sobre os efeitos do instrumento slots de inserção. Eu tenho uma distorção, uma Lo-Fi e um Phaser. Im indo agora para contornar estes efeitos.

Bypass Effects


Alvo Os Efeitos

Qualquer coisa que pode ser automatizado em Kontakt pode ser acessado pelo KSP. Há uma função built-in no KSP chamado set_engine_par () que permite que você manipule os parâmetros dentro do motor Kontakt. Youll usar muito isso!

Precisamos passar algumas informações para os suportes desta função. Isto é como se segue:

set_engine_par (,,,,


Deixa quebrar isso:

  • O parâmetro que queremos efetuar ENGINE_PAR_DRIVE $ por exemplo, em nosso Distortion. ( Você encontrará uma lista de todos os parâmetros disponíveis no KSP Kontakt referência no final).
  • O valor para o parâmetro. Isso pode ser passado por um controle de interface do usuário ou você pode definir um valor.
  • O número do Grupo (se aplicável). Isto corresponde ao grupo de FX. Configure para -1 se você deseja alcançar efeitos a nível do instrumento.


    Definir alguns parâmetros

    Portanto, o parâmetro que eu quero efeito é Bypass. Esta é direcionado usando $ ENGINE_PAR_EFFECT_BYPASS. Vamos colocar isso dentro

    set_engine_par ($ ENGINE_PAR_EFFECT_BYPASS, , , , )


    Os valores de desvio são 0 e está na 1 é ignorada. Quero ativar o efeito tão mal colocar 0 para o Valor.

    set_engine_par ($ ENGINE_PAR_EFFECT_BYPASS, 0, , , )


    Meus slots estão no nível Instrumento tão mal colocar -1 em grupo.

    set_engine_par ($ ENGINE_PAR_EFFECT_BYPASS, 0, -1, , )


    Meu distorção é na Slot 1 tão mal colocado em 0 Slot.

    set_engine_par ($ ENGINE_PAR_EFFECT_BYPASS, 0, -1, 0, )


    Minha efeito é um efeito de Inserção tão mal colocar 1 no genérico.

    set_engine_par ($ ENGINE_PAR_EFFECT_BYPASS, 0, -1, 0, 1)


    Agora eu tenho uma linha acabado de código que pode deixar cair isto em minha declaração select ().


    Code Example



    Quando eu bati o slot C3 primeiro efeito (o Distortion) ficará ativo.

    Distortion becomes active


    Eu preciso reverter isso em um retorno de chamada de liberação, então quando eu levar o meu dedo da chave, o efeito é ignorado novamente. Eu fazer isso colocando um 1 em valor assim.

    Code Example



    Agora posso configurar isso para chaves diferentes, utilizando um caso diferente para cada um. Tudo o que tenho a fazer é aumentar o número de slot.

    Code Example


    Heres o resultado de bater D3.

    Phaser becomes active


    E em seguida, usando para o lançamento ignorar o efeito quando eu solte a tecla, colocando um em valor.

    Code example


    I pode disparar mais de um efeito, ao mesmo tempo, também, que é um bónus!

    Trigger more than one effect at the same time


    Aqui está um exemplo do meu script no trabalho.

    [Audio id = "12954"]


    Posso, então, definir um título para o meu script como nós coberto pela última vez.

    Script Title


    Posso, então, ir e guardá-lo como uma predefinição para uso posterior!

    Save script as a preset


    Sucesso! Tente isso por si mesmo. Ive incluiu os trechos de código em um

    Portanto, você tem isso. Um script simples com um resultado legal. Da próxima vez bem ter um olhar para alguns design de interface.


    Quick Links


    Introduction To Scripting in Kontakt, Part 2 (you're reading it!)

    Introduction To Scripting in Kontakt, Part 3

    Introduction To Scripting in Kontakt, Part 4

    Introduction To Scripting in Kontakt, Part 5

For the past 20 years Toby has worked as a professional guitarist, programmer and producer. Clients include Sir Paul McCartney, George Michael, Shirley Bassey, Yusuf Islam, Giles Martin as well as the London 2012 Olympic Ceremonies. He has also worked extensively in TV, Advertising and Film. As well as composing himself he has also ... Read More

Discussion

Want to join the discussion?

Create an account or login to get started!