コード例 #1
0
ファイル: Leveller.js プロジェクト: benji6/elemental
  render (containerEl) {
    const store = stores.get(this)
    const setProp = (key, val) => store.dispatch(state => Object.assign({}, state, {[key]: val}))

    ReactDOM.render(
      connect(store)(({
        attack,
        gain,
        knee,
        pan,
        ratio,
        release,
        threshold,
      }) =>
        createElement('div', {style: {textAlign: 'center'}},
          createElement('h2', null, 'Leveller'),
          createElement('div', null,
            createElement(ControlModule, {title: 'Output'},
              createElement(Range, {
                defaultValue: gain,
                label: 'Gain',
                max: 2,
                onInput: e => setProp('gain', Number(e.target.value)),
              }),
              createElement(Range, {
                defaultValue: pan,
                label: 'Pan',
                min: -1,
                onInput: e => setProp('pan', Number(e.target.value)),
              }),
            )
          ),
          createElement(ControlModule, {title: 'Compressor'},
            createElement(Range, {
              defaultValue: threshold,
              label: 'Threshold',
              max: 0,
              min: -99.99,
              onInput: e => setProp('threshold', Number(e.target.value)),
            }),
            createElement(Range, {
              defaultValue: knee,
              label: 'Knee',
              max: 40,
              onInput: e => setProp('knee', Number(e.target.value)),
            }),
            createElement(Range, {
              defaultValue: ratio,
              label: 'Ratio',
              max: 20,
              min: 1,
              onInput: e => setProp('ratio', Number(e.target.value)),
            }),
            createElement(Range, {
              defaultValue: attack,
              label: 'Attack',
              max: 1,
              onInput: e => setProp('attack', Number(e.target.value)),
            }),
            createElement(Range, {
              defaultValue: release,
              label: 'Release',
              max: 1,
              onInput: e => setProp('release', Number(e.target.value)),
            }),
          )
        )),
      containerEl
    )
  }
コード例 #2
0
ファイル: Ariadne.js プロジェクト: benji6/elemental
  render (containerEl) {
    const store = stores.get(this)
    const setPropFromRangeEvent = key => e => store.dispatch(state => Object.assign(
      {},
      state,
      {[key]: Number(e.target.value)}
    ))
    const setPropFromSelectEvent = key => e => store.dispatch(state => Object.assign(
      {},
      state,
      {[key]: e.target.value}
    ))

    ReactDOM.render(connect(store)(({
      carrierDetune,
      carrierOscType,
      masterGain,
      masterPan,
      modulatorDetune,
      modulatorOscType,
      modulatorRatio,
    }) => createElement('div', {style: {textAlign: 'center'}},
      createElement('h2', null, 'Ariadne'),
      createElement(ControlModule, null,
        createElement(Range, {
          defaultValue: masterGain,
          label: 'Gain',
          max: 1.25,
          onInput: setPropFromRangeEvent('masterGain'),
        }),
        createElement(Range, {
          defaultValue: masterPan,
          label: 'Pan',
          min: -1,
          onInput: setPropFromRangeEvent('masterPan'),
        }),
        createElement(
          Select,
          {
            defaultValue: carrierOscType,
            label: 'Carrier wave',
            onInput: setPropFromSelectEvent('carrierOscType'),
          },
          createElement('option', {value: 'sawtooth'}, 'Sawtooth'),
          createElement('option', {value: 'sine'}, 'Sine'),
          createElement('option', {value: 'square'}, 'Square'),
          createElement('option', {value: 'triangle'}, 'Triangle')
        ),
        createElement(
          Select,
          {
            defaultValue: modulatorOscType,
            label: 'Modulator wave',
            onInput: setPropFromSelectEvent('modulatorOscType'),
          },
          createElement('option', {value: 'sawtooth'}, 'Sawtooth'),
          createElement('option', {value: 'sine'}, 'Sine'),
          createElement('option', {value: 'square'}, 'Square'),
          createElement('option', {value: 'triangle'}, 'Triangle')
        ),
        createElement(Range, {
          defaultValue: carrierDetune,
          label: 'Carrier detune',
          max: 32,
          min: -32,
          onInput: setPropFromRangeEvent('carrierDetune'),
        }),
        createElement(Range, {
          defaultValue: modulatorRatio,
          label: 'Modulator freq',
          max: 8,
          min: 0.1,
          onInput: setPropFromRangeEvent('modulatorRatio'),
        }),
        createElement(Range, {
          defaultValue: modulatorDetune,
          label: 'Modulator detune',
          max: 128,
          min: -128,
          onInput: setPropFromRangeEvent('modulatorDetune'),
        })
      )
    )), containerEl)
  }