Start ::= SampleBlock <EOF>
SampleBlock ::= Init Sources
Init ::= "Init" "{" InitParams "}"
InitParams ::= FileName ( InitChannels )? ( InitSRate )?
FileName ::= "Name" "=" <V_NAME> ";"
InitChannels ::= "Channels" "=" <V_CHANNELS> ";"
InitSRate ::= "Samplerate" "=" <V_NUMBER> ";"
Sources ::= "Sources" "{" ( SourceDescriptor )+ "}"
SourceDescriptor ::= Source | WavFile
Source ::= "Source" <V_NAME> "[" ( OscillatorParamList )+ "]"
OscillatorParamList ::= OscillatorSettings | OscillatorModifiers
OscillatorSettings ::= Waveform | Volume
OscillatorModifiers ::= Amplitude | Frequency | Pan | Loop
Waveform ::= "Waveform" "=" <V_WAVEFORM> ";"
Volume ::= "Volume" "=" <V_NUMBER> ";"
Amplitude ::= "Amplitude" "(" AmplitudeParamList ")"
Frequency ::= "Frequency" "(" FrequencyParamList ")"
Pan ::= “Pan” "(" PanParams ")"
Loop ::= “Loop” "(" LoopParams ")"
AmplitudeParamList ::= ( AmplitudeParameter )+
AmplitudeParameter ::= Delay | Attack | Decay | Sustain |
Release | Amp | SusAmp | EnvType
Delay ::= "Delay" "=" <V_NUMBER> ";"
Attack ::= "Attack" "=" <V_NUMBER> ";"
Decay ::= "Decay" "=" <V_NUMBER> ";"
Sustain ::= "Sustain" "=" <V_NUMBER> ";"
Release ::= "Release" "=" <V_NUMBER> ";"
Amp ::= "Amp" "=" <V_NUMBER> ";"
SusAmp ::= "SusAmp" "=" <V_NUMBER> ";"
EnvType ::= "EnvType" "=" <V_NUMBER> ";"
FrequencyParamList ::= ( FrequencyParameter )+
FrequencyParameter ::= StartF | EndF | FreqEnvType
StartFrequency ::= "StartFrequency" "=" FreqValue ";"
EndFrequency ::= "EndFrequency" "=" FreqValue ";"
FreqEnvType ::= “EnvType” "=" <V_ENVTYPE> ";"
FreqValue ::= Note | <V_NUMBER>
Note ::= "Note" "(" <V_NOTE> ")"
LoopParams ::= ( LoopParameter )+
LoopParameter ::= Times | Every | GlobalDelay
Times ::= "Times" "=" <V_NUMBER> ";"
Every ::= "Every" "=" <V_NUMBER> ";"
GlobalDelay ::= "GlobalDelay" "=" <V_NUMBER> ";"
PanParams ::= PanParameter
PanParameter ::= PanPosition | PanLfoParamList
PanPosition ::= “Position” "=" <V_NUMBER> ";"
PanLfoParamList ::= ( PanLfoParameter )+
PanLfoParameter ::= LfoFrequency | LfoWaveform
LfoFrequency ::= "LfoFrequency" "="<V_NUMBER> ";"
LfoWaveform ::= "Waveform" "=" <V_WAVEFORM> ";"
WavFile ::= "WaveFile" <V_NAME> "[" ( WavFileParamList )+ "]"
WavFileParamList ::= WavFileSettings | WavFileModifiers
WavFileSettings ::= Path | Volume | Length | Offset | Delay
WavFileModifiers ::= Pan | Loop
Path ::= "Path" "=" <V_PATH> ";"
Length ::= "Length" "=" <V_NUMBER> ";"
Offset ::= "Offset" "=" <V_NUMBER> ";"