/*
 * Copyright 2011 Google Inc.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package synthesizer_core_proto;

option java_package = "com.google.synthesizer.core.model.composite";

enum WaveformDeprecated {
  SINE = 0;
  TRIANGLE = 1;
  SQUARE = 2;
  SAWTOOTH = 3;
  NOISE = 4;
  KARPLUS_STRONG = 5;
  DRAWBAR_ORGAN = 6;
  DRUMS = 7;
  WAVEFORM_COUNT = 8;
}

enum Setting {
  TREMOLO_ATTACK = 3;
  TREMOLO_DECAY = 4;
  TREMOLO_SUSTAIN = 5;
  TREMOLO_RELEASE = 6;
  BALANCE = 9;
  ECHO_DELAY = 12;
  DELAY_MIX = 13;
  VOLUME = 14;
  VIBRATO_ATTACK = 15;
  VIBRATO_DECAY = 16;
  VIBRATO_SUSTAIN = 17;
  VIBRATO_RELEASE = 18;
  OSCILLATOR_2_COARSE = 19;
  OSCILLATOR_2_FINE = 20;
  OSCILLATOR_1_WAVEFORM_NEXT = 23;
  OSCILLATOR_2_WAVEFORM_NEXT = 24;
  TREMOLO_WAVEFORM_NEXT = 25;
  VIBRATO_WAVEFORM_NEXT = 26;
  OSCILLATOR_1_WAVEFORM = 27;
  OSCILLATOR_2_WAVEFORM = 28;
  TREMOLO_WAVEFORM = 29;
  VIBRATO_WAVEFORM = 30;
  OSCILLATOR_1_WAVEFORM_PREVIOUS = 33;
  OSCILLATOR_2_WAVEFORM_PREVIOUS = 34;
  TREMOLO_WAVEFORM_PREVIOUS = 35;
  VIBRATO_WAVEFORM_PREVIOUS = 36;
  ORGAN_DRAWBAR_1 = 42;
  ORGAN_DRAWBAR_2 = 43;
  ORGAN_DRAWBAR_3 = 50;
  ORGAN_DRAWBAR_4 = 51;
  ORGAN_DRAWBAR_5 = 52;
  ORGAN_DRAWBAR_6 = 53;
  ORGAN_DRAWBAR_7 = 54;
  ORGAN_DRAWBAR_8 = 55;
  ORGAN_DRAWBAR_9 = 56;
  OSCILLATOR_1_GLIDE = 57;
  OSCILLATOR_1_STRETCH = 58;
  OSCILLATOR_1_BLEND = 59;
  OSCILLATOR_1_EXCITEMENT = 60;
  OSCILLATOR_2_GLIDE = 61;
  OSCILLATOR_2_STRETCH = 62;
  OSCILLATOR_2_BLEND = 63;
  OSCILLATOR_2_EXCITEMENT = 65;
  FILTER_CUTOFF = 74;
  OSCILLATOR_1_COARSE = 78;
  OSCILLATOR_1_FINE = 79;
  ECHO_MIX = 94;
  FILTER_ATTACK = 105;
  FILTER_DECAY = 106;
  FILTER_SUSTAIN = 107;
  FILTER_RELEASE = 108;
  FILTER_DEPTH = 109;
  ATTACK = 110;
  DECAY = 111;
  SUSTAIN = 112;
  RELEASE = 113;
  VIBRATO_RATE = 114;
  OSCILLATOR_1_VIBRATO = 115;
  OSCILLATOR_2_VIBRATO = 116;
  TREMOLO_RATE = 117;
  TREMOLO_DEPTH = 118;
}

message InputSetting {
  optional Setting setting = 1;
  optional double value = 2;
}

message WaveformSetting {
  optional Setting setting = 1;
  optional string waveform = 2;
}

message Preset {
  optional string name = 1;
  repeated InputSetting input_setting = 2;
  repeated WaveformSetting waveform_setting = 3;
}

message PresetLibrary {
  repeated Preset preset = 1;
}