Example #1
0
module.exports = function renderDipper(node){
  var data = node()

  return h('ProcessorNode -dipper', [

    Header(node, h('span', 'Dipper')),

    h('ParamList', [

      Select(node.mode, {
        defaultValue: 'modulate',
        options: modeChoices 
      }),

      ModRange(node.ratio, {
        title: 'ratio',
        defaultValue: 1,
        format: 'ratio',
        flex: true
      })

    ])

  ])
}
Example #2
0
module.exports = function renderReverb (node) {
  return h('ProcessorNode -reverb', {
    hooks: [ AcceptSampleHook(node) ]
  }, [
    Header(node, h('span', [
      h('strong', 'Reverb:'), ' ',
      h('span', computed(node.buffer, getSampleName))
    ])),
    h('ParamList', [
      Select(QueryParam(node, 'node'), {
        defaultValue: 'processor/convolution-reverb',
        options: nodeChoices
      }),
      SampleChooser(node),
      ModRange(node.low, {
        title: 'low',
        defaultValue: 0,
        format: 'dBn',
        flex: 'small'
      }),
      ModRange(node.mid, {
        title: 'mid',
        defaultValue: 0,
        format: 'dBn',
        flex: 'small'
      }),
      ModRange(node.high, {
        title: 'high',
        defaultValue: 0,
        format: 'dBn',
        flex: 'small'
      }),
      ModRange(node.highcut, {
        title: 'highcut',
        format: 'arfo',
        flex: 'small',
        defaultValue: 20000
      }),
      ModRange(node.lowcut, {
        title: 'lowcut',
        format: 'arfo',
        flex: 'small',
        defaultValue: 0
      }),
      ModRange(node.wet, {
        title: 'wet',
        defaultValue: 1,
        format: 'dB',
        flex: true
      }),
      ModRange(node.dry, {
        title: 'dry',
        defaultValue: 1,
        format: 'dB',
        flex: true
      })
    ])
  ])
}
Example #3
0
module.exports = function renderOscillator (node) {
  var shape = Value('pulse')
  shape(value => {
    if (value !== 'pulse') {
      node.set(extend(node(), {
        node: 'source/oscillator',
        shape: value
      }))
    }
  })

  return h('SourceNode -oscillatorPulse', [
    Header(node, h('span', [
      h('strong', 'Oscillator:'), ' ',
      h('span', 'Pulse')
    ])),
    h('ParamList', [
      Select(shape, {
        options: shapeChoices
      }),
      ModRange(node.amp, {
        title: 'amp',
        defaultValue: 1,
        format: 'dB',
        flex: true
      }),
      ModRange(node.detune, {
        title: 'detune',
        format: 'cents',
        flex: true,
        defaultValue: 0
      }),
      ModRange(node.pulseWidth, {
        title: 'pulse width',
        format: 'offset1',
        flex: true,
        defaultValue: 0
      }),
      ModRange(node.noteOffset, {
        title: 'pitch',
        format: 'semitone',
        defaultValue: 0,
        flex: true
      }),
      ModRange(node.octave, {
        title: 'octave',
        format: 'octave',
        defaultValue: 0,
        flex: true
      })
    ])
  ])
}
Example #4
0
module.exports = function renderGain (node){
  return h('ProcessorNode -gain', [
    Header(node, h('span', 'Gain')),
    h('ParamList', [
      ModRange(node.gain, {
        defaultValue: 1,
        format: 'dB',
        flex: true
      })
    ])
  ])
}
Example #5
0
module.exports = function renderReverb (node) {
  return h('ProcessorNode -reverb', [
    Header(node, h('span', 'Reverb')),
    h('ParamList', [
      Select(QueryParam(node, 'node'), {
        defaultValue: 'processor/freeverb',
        options: nodeChoices
      }),
      ToggleButton(node.reverse, {
        title: 'Reverse'
      }),
      Range(node.time, {
        title: 'time',
        defaultValue: 3,
        format: 'ms',
        flex: true
      }),
      Range(node.decay, {
        title: 'decay',
        defaultValue: 2,
        format: 'ratioExp',
        flex: true
      }),
      Select(node.filterType, {
        defaultValue: 'lowpass',
        options: filterChoices
      }),
      ModRange(node.cutoff, {
        title: 'cutoff',
        defaultValue: 20000,
        format: 'arfo',
        flex: true
      }),
      ModRange(node.wet, {
        title: 'wet',
        defaultValue: 1,
        format: 'dB',
        flex: true
      }),
      ModRange(node.dry, {
        title: 'dry',
        defaultValue: 1,
        format: 'dB',
        flex: true
      })
    ])
  ])
}
Example #6
0
module.exports = function renderDrumSynth (node){
  var data = node()

  return h('SourceNode -drumSynth', [
    Header(node, h('span', [
      h('strong', 'Drum Synth:'), ' ',
      h('span', data.type)
    ])),
    h('ParamList', [
      Select(node.type, {
        options: types
      }),
      ModRange(node.amp, {
        title: 'amp',
        defaultValue: 1,
        format: 'dB',
        flex: true
      }),
      ModRange(node.tune, {
        title: 'tune',
        defaultValue: 0,
        format: 'cents+',
        flex: true
      }),
      ModRange(node.decay, {
        title: 'decay',
        defaultValue: 0.5,
        format: 'ms',
        flex: true
      }),
      node.type() === 'snare' ? [
        ModRange(node.tone, {
          title: 'tone',
          defaultValue: 0.5,
          format: 'ratio',
          flex: true
        }),
        ModRange(node.snappy, {
          title: 'snappy',
          defaultValue: 0.5,
          format: 'ratio',
          flex: true
        })
      ] : null
    ])
  ])
}
Example #7
0
module.exports = function renderNoise (node){
  var data = node()

  return h('SourceNode -noise', [
    Header(node, h('span', [
      h('strong', 'Noise:'), ' ',
      h('span', data.type || 'white')
    ])),
    h('ParamList', [
      Select(node.type, { 
        options: types 
      }),
      ModRange(node.amp, {
        title: 'amp',
        defaultValue: 1,
        format: 'dB',
        flex: true
      })
    ])
  ])
}
Example #8
0
module.exports = function renderFilter(node) {
  return h('ProcessorNode -filter', [
    Header(node, h('span', 'EQ')),
    h('section', [
      h('ParamList', [
        ModRange(node.low, {
          title: 'low',
          defaultValue: 0,
          format: 'dBn',
          flex: 'small'
        }),
        ModRange(node.mid, {
          title: 'mid',
          defaultValue: 0,
          format: 'dBn',
          flex: 'small'
        }),
        ModRange(node.high, {
          title: 'high',
          defaultValue: 0,
          format: 'dBn',
          flex: 'small'
        }),
        ModRange(node.highcut, {
          title: 'highcut',
          format: 'arfo',
          flex: 'small',
          defaultValue: 20000
        }),
        ModRange(node.lowcut, {
          title: 'lowcut',
          format: 'arfo',
          flex: 'small',
          defaultValue: 0
        })
      ])
    ])
  ])
}
Example #9
0
module.exports = function renderFilter (node) {
  var hasGain = computed(node.type, t => ~gainTypes.indexOf(t))
  var hasQ = computed(node.type, t => ~qTypes.indexOf(t))

  var params = [
    Select(node.type, {
      defaultValue: 'lowpass',
      options: typeChoices
    }),

    ModRange(node.frequency, {
      title: 'freq',
      defaultValue: 300,
      format: 'arfo',
      flex: true
    }),

    when(hasQ, ModRange(node.Q, {
      title: 'Q',
      defaultValue: 1,
      format: 'ratio100',
      flex: true
    })),

    when(hasGain, ModRange(node.gain, {
      title: 'gain',
      defaultValue: 1,
      format: 'dBn',
      flex: true
    }))
  ]

  return h('ProcessorNode -filter', [
    Header(node, h('span', 'Filter')),
    h('ParamList', params)
  ])
}
Example #10
0
module.exports = function renderCompressor (node){
  return h('ProcessorNode -compressor', [
    Header(node, h('span', 'Compressor')),
    h('ParamList', [
      ModRange(node.threshold, {
        title: 'threshold',
        format: 'dBn',
        flex: true
      }),
      ModRange(node.knee, {
        title: 'knee',
        format: 'dBn',
        flex: true
      }),
      ModRange(node.ratio, {
        title: 'ratio',
        format: 'compressionRatio',
        flex: true
      }),
      ModRange(node.reduction, {
        title: 'reduction',
        format: 'dBn',
        flex: true
      }),
      ModRange(node.attack, {
        title: 'attack',
        format: 'ms',
        flex: true
      }),
      ModRange(node.release, {
        title: 'release',
        format: 'ms',
        flex: true
      })
    ])
  ])
}
Example #11
0
module.exports = function renderOscillator (node) {
  return h('ProcessorNode -ringModulator', [
    Header(node, h('span', [
      'Ring Modulator'
    ])),
    h('ParamList', [
      Select(node.carrier.shape, {
        options: shapeChoices
      }),
      ModRange(node.carrier.amp, {
        title: 'amp',
        defaultValue: 1,
        format: 'dB',
        flex: true
      }),
      ModRange(node.carrier.frequency, {
        title: 'frequency',
        format: 'arfo',
        flex: true,
        defaultValue: 440
      })
    ])
  ])
}
Example #12
0
module.exports = function renderLfo (node) {
  var trigger = isTriggerable(node)

  return h('ModulatorNode -lfo', [
    Header(node, h('span', [
      h('strong', 'LFO:'), ' ',
      h('span', {
        hooks: [ EditableHook(node.id, {
          onChange: onRename,
          formatter: node.context.collection.resolveAvailable
        }) ]
      })
    ])),
    h('ParamList', [
      ToggleButton(node.sync, {
        title: 'BPM Sync'
      }),

      when(trigger, ToggleButton(node.trigger, {
        title: 'Retrigger'
      })),

      Select(node.mode, {
        options: modeOptions
      }),

      ModRange(node.value, {
        flex: true,
        title: 'centre',
        defaultValue: 0.5,
        format: 'ratio1'
      }),

      ModRange(node.amp, {
        flex: true,
        defaultValue: 0.5,
        title: 'amplitude',
        format: 'ratio1'
      }),

      when(node.sync,
        ModRange(node.rate, {
          flex: true,
          defaultValue: 1,
          title: 'rate',
          format: 'beat'
        }),
        ModRange(node.rate, {
          flex: true,
          defaultValue: 1,
          title: 'rate',
          format: 'lfo'
        })
      ),

      ModRange(node.phaseOffset, {
        defaultValue: 0,
        title: 'phase offset',
        format: 'offset1',
        flex: true
      }),

      Range(node.skew, {
        defaultValue: 0,
        title: 'skew',
        format: 'offset1',
        flex: true
      }),

      Range(node.curve, {
        defaultValue: 1,
        title: 'curve',
        format: 'ratio1',
        flex: true
      })
    ])
  ])
}
Example #13
0
module.exports = function renderDelay (node) {
  return h('ProcessorNode -delay', [

    Header(node, h('span', 'Delay')),

    h('ParamList', [

      ToggleButton(node.sync, {
        title: 'BPM Sync'
      }),

      ToggleButton(QueryParam(node, 'node'), {
        title: 'Ping Pong',
        onValue: 'processor/ping-pong-delay',
        offValue: 'processor/delay'
      }),

      when(node.sync,
        ModRange(node.time, {
          title: 'time',
          defaultValue: 0.25,
          format: 'beat',
          flex: true
        }),
        ModRange(node.time, {
          title: 'time',
          defaultValue: 0.25,
          format: 'ms',
          flex: true
        })
      ),

      ModRange(node.feedback, {
        title: 'feedback',
        defaultValue: 0.6,
        format: 'dB',
        flex: true
      }),

      Select(node.filterType, {
        defaultValue: 'lowpass',
        options: filterChoices
      }),

      ModRange(node.cutoff, {
        title: 'cutoff',
        defaultValue: 20000,
        format: 'arfo',
        flex: true
      }),

      ModRange(node.wet, {
        title: 'wet',
        defaultValue: 1,
        format: 'dB',
        flex: true
      }),

      ModRange(node.dry, {
        title: 'dry',
        defaultValue: 1,
        format: 'dB',
        flex: true
      })

    ])

  ])
}