MainStage 사용 설명서
- 환영합니다
-
- 편집 모드 개요
- 센드 이펙트를 통해 오디오 라우팅하기
- 그래프 사용하기
- 컨트롤러 트랜스폼 생성하기
- 콘서트 프로젝트 간에 패치 및 세트 공유하기
- 콘서트 프로젝트의 오디오 출력 녹음
-
-
- MIDI 플러그인 사용하기
- 보조 키 컨트롤
- Note Repeater 파라미터
- Randomizer 컨트롤
-
- Scripter 사용하기
- Script Editor 사용하기
- Scripter API 개요
- MIDI 프로세싱 함수 개요
- HandleMIDI 함수
- ProcessMIDI 함수
- GetParameter 함수
- SetParameter 함수
- ParameterChanged 함수
- Reset 함수
- JavaScript 객체 개요
- JavaScript Event 객체 사용하기
- JavaScript TimingInfo 객체 사용하기
- Trace 객체 사용하기
- MIDI 이벤트 beatPos 속성 사용하기
- JavaScript MIDI 객체 사용하기
- Scripter 컨트롤 생성하기
- Transposer 컨트롤
-
- Copyright
MainStage에서 Scripter MIDI 플러그인 컨트롤 생성하기
다음 섹션에는 Scripter 플러그인에 쓰이는, 슬라이더 및 메뉴와 같은 일반적인 인터페이스 컨트롤러를 생성하기 위해 Script Editor를 사용하는 방법이 요약되어 있습니다. 새 파라미터에 규정해야 하는 유일한 의무적인 속성은 ‘이름’입니다. 이는 기본 슬라이더의 기본 설정 값이 됩니다. 이 외에, 추가 속성을 사용하여 컨트롤의 종류와 동작을 변경할 수 있습니다.
해당하는 튜토리얼 설정을 로드하여 Script Editor에서 스크립트를 읽어보십시오. 코드와 주석의 문법 구조와 레이아웃을 이해하는 데 도움이 될 것입니다. Script Editor 사용하기를 참조하십시오.
선택 속성
type: 다음 문자열 중 하나를 값으로 입력하십시오.
‘lin’: 리니어 페이더를 생성합니다.
‘log’: 대수형 페이더를 생성합니다.
‘momentary’: 일시적으로 작용하는 버튼을 생성합니다.
‘menu’: 메뉴를 생성합니다.
메뉴의 종류는 추가적인 valueStrings 속성을 필요로 하며, 메뉴에 보여질 문자열의 정렬입니다. 튜토리얼 스크립트 13를 참조하십시오.
defaultValue: 정수 또는 부동 소수점 수를 입력하여 기본 값을 설정합니다. 값이 입력되지 않았다면, 기본 값은 0.0입니다.
minValue: 정수 또는 부동 소수점 수를 입력하여 최소 값을 설정합니다. 값이 입력되지 않았다면, 기본 값은 0.0입니다.
maxValue: 정수 또는 부동 소수점 수를 입력하여 최대 값을 설정합니다. 값이 입력되지 않았다면, 기본 값은 1.0입니다.
numberOfSteps: 정수를 입력하여 스텝의 개수를 규정합니다.
unit: 문자열을 입력하여 플러그인 컨트롤의 단위에 대한 설명을 제시합니다. 값이 입력되지 않았다면, 기본 설정 동작이 단위를 표시하지 않습니다.
text: 텍스트를 입력하여 플러그인 UI의 디바이더/헤더를 생성합니다.
튜토리얼 스크립트 11: 슬라이더 생성
MainStage에서 다음을 Script Editor 윈도우에 입력하여, 이름은 ‘Parameter x’ 이고, 기본 설정 범위가 0부터 1인 슬라이더를 생성하십시오. 중점 값은 0.5로 설정됩니다.
var PluginParameters = [{name:"Parameter x", defaultValue:0.5}];
튜토리얼 스크립트 12: 슬라이더 범위
MainStage에서 다음을 Script Editor 윈도우에 입력하여, 5개의 가능한 위치(스텝)를 가지며, 범위가 0에서 5인 직선 슬라이더 종류를 만드십시오.
var PluginParameters = [{name:"Octaves", defaultValue:3, minValue:0, maxValue:5,
numberOfSteps:5, unit:"octaves", type:"lin"}];
튜토리얼 스크립트 13: 메뉴 생성
MainStage에서 다음을 Script Editor 윈도우에 입력하여, 이름은 ‘Range’ 이고, ‘Low’, ‘Mid’, ‘High’ 옵션이 있는 메뉴를 생성하십시오.
var PluginParameters = [{name:"Range", type:"menu", valueStrings:["Low", "Mid", "High"]}];
기동적으로 MIDI 플러그인 컨트롤을 가리거나 보기
복잡한 MainStage 스크립트에서 기동적으로 파라미터 컨트롤을 가리거나 보이도록 하는 것이 유용할 것이며, 예를 들면 메뉴 항목에서 컨트롤의 어떤 그룹을 표시할지 선택하도록 만들 수 있습니다. 다음을 Script Editor 윈도우에 입력하여 이러한 컨트롤러 종류를 생성하십시오.
var PluginParameters = [{name:'uno'}, {name:'dos', hidden:true}];
UpdatePluginParameters()
를 호출하여 이를 기동적으로 변경합니다.
플러그인 파라미터 값 되찾기
GetParameter()를 파라미터 이름과 함께 호출하여, 현재 파라미터의 값(객체 수)을 반환하도록 합니다. GetParameter()는 주로 HandleMIDI 함수 또는 ProcessMIDI 함수에서 사용됩니다.
MainStage에서 이 코드 예시는 모듈레이션 이벤트를 노트 이벤트로 전환하며, 슬라이더가 노트의 길이를 결정하는 결과를 가져옵니다.
/* 뒤의 텍스트는 JavaScript 코드를 설명하는 주석을 나타냅니다.
var PluginParameters = [{name:"Note Length", minValue:0, maxValue: 100, unit:"%"}]; /* create a slider (default range 0 - 100) */
function HandleMIDI(event) {
if(event instanceof ControlChange && event.number == 1) { /* if event is MIDI cc1 (modwheel) */
var note = new NoteOn; /* create a NoteOn object */
if(event.value == 0)
/* because modwheel range is 0-127 and pitch range is 1-127, convert a modwheel value of 0 to 1 */
event.value = 1;
note.pitch = event.value; /* use cc value as note pitch */
note.velocity = 100; /* use velocity 100 */
note.send(); /* send note on */
var off = new NoteOff(note); /* create a NoteOff object that inherits the NoteOn pitch and velocity values */
var delayInBeats = GetParameter("Note Length")/100 + 0.1; /* retrieve the parameter value of the slider you created (add 0.1 to guarantee note on and off are not simultaneous) */
off.sendAfterBeats(delayInBeats); /* send note off after the length in beats is set via the slider */
}
}