Skip to content
This repository was archived by the owner on Feb 18, 2022. It is now read-only.

Added Phaser effect. Changed bypass PropTypes to be boolean #55

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions src/components/chorus.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import PropTypes from 'prop-types'
import Tuna from 'tunajs';

type Props = {
bypass?: number;
bypass?: bool;
children?: any;
delay?: number;
feedback?: number;
Expand All @@ -22,14 +22,14 @@ export default class Chorus extends Component {
context: Context;
props: Props;
static propTypes = {
bypass: PropTypes.number,
bypass: PropTypes.bool,
children: PropTypes.node,
delay: PropTypes.number,
feedback: PropTypes.number,
rate: PropTypes.number,
};
static defaultProps = {
bypass: 0,
bypass: false,
delay: 0.0045,
feedback: 0.2,
rate: 1.5,
Expand Down
6 changes: 3 additions & 3 deletions src/components/delay.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import PropTypes from 'prop-types'
import Tuna from 'tunajs';

type Props = {
bypass?: number;
bypass?: bool;
children?: any;
cutoff?: number;
delayTime?: number;
Expand All @@ -24,7 +24,7 @@ export default class Delay extends Component {
context: Context;
props: Props;
static propTypes = {
bypass: PropTypes.number,
bypass: PropTypes.bool,
children: PropTypes.node,
cutoff: PropTypes.number,
delayTime: PropTypes.number,
Expand All @@ -33,7 +33,7 @@ export default class Delay extends Component {
wetLevel: PropTypes.number,
};
static defaultProps = {
bypass: 0,
bypass: false,
cutoff: 2000,
delayTime: 150,
dryLevel: 1,
Expand Down
6 changes: 3 additions & 3 deletions src/components/overdrive.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import Tuna from 'tunajs';

type Props = {
algorithmIndex?: number;
bypass?: number;
bypass?: bool;
children?: any;
curveAmount?: number;
drive?: number;
Expand All @@ -24,15 +24,15 @@ export default class Overdrive extends Component {
props: Props;
static propTypes = {
algorithmIndex: PropTypes.number,
bypass: PropTypes.number,
bypass: PropTypes.bool,
children: PropTypes.node,
curveAmount: PropTypes.number,
drive: PropTypes.number,
outputGain: PropTypes.number,
};
static defaultProps = {
algorithmIndex: 0,
bypass: 0,
bypass: false,
curveAmount: 1,
drive: 0.7,
outputGain: 0.5,
Expand Down
86 changes: 86 additions & 0 deletions src/components/phaser.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
// @flow
/* eslint-disable no-restricted-syntax */
import React, { Component } from 'react';
import PropTypes from 'prop-types'
import Tuna from 'tunajs';

type Props = {
bypass?: bool;
children?: any;
baseModulationFrequency?: number,
stereoPhase?: number,
depth?: number,
feedback?: number,
rate?: number,
};

type Context = {
audioContext: Object;
connectNode: Object;
};

export default class Phaser extends Component {
connectNode: Object;
context: Context;
props: Props;
static propTypes = {
bypass: PropTypes.bool,
children: PropTypes.node,
baseModulationFrequency: PropTypes.number,
stereoPhase: Proptypes.number,
depth: PropTypes.number,
feedback: PropTypes.number,
rate: PropTypes.number,
};
static defaultProps = {
rate: 0.1,
depth: 0.6,
feedback: 0.7,
stereoPhase: 40,
baseModulationFrequency: 700,
bypass: false
};
static contextTypes = {
audioContext: PropTypes.object,
connectNode: PropTypes.object,
};
static childContextTypes = {
audioContext: PropTypes.object,
connectNode: PropTypes.object,
};
constructor(props: Props, context: Context) {
super(props);

const tuna = new Tuna(context.audioContext);

this.connectNode = phaser = new tuna.Phaser({
rate: props.rate,
depth: props.depth,
feedback: props.feedback,
stereoPhase: props.stereoPhase,
baseModulationFrequency: props.baseModulationFrequency,
bypass: props.bypass
});

this.connectNode.connect(context.connectNode);
}
getChildContext(): Object {
return {
...this.context,
connectNode: this.connectNode,
};
}
componentWillReceiveProps(nextProps: Props) {
for (const prop in nextProps) {
if (this.connectNode[prop]) {
this.connectNode[prop] = nextProps[prop];
}
}
}
componentWillUnmount() {
this.connectNode.disconnect();
}
render(): React.Element<any> {
return <span>{this.props.children}</span>;
}
}
6 changes: 3 additions & 3 deletions src/components/reverb.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import PropTypes from 'prop-types'
import Tuna from 'tunajs';

type Props = {
bypass?: number;
bypass?: bool;
children?: any;
dryLevel?: number;
highCut?: number;
Expand All @@ -25,7 +25,7 @@ export default class Reverb extends Component {
context: Context;
props: Props;
static propTypes = {
bypass: PropTypes.number,
bypass: PropTypes.bool,
children: PropTypes.node,
dryLevel: PropTypes.number,
highCut: PropTypes.number,
Expand All @@ -35,7 +35,7 @@ export default class Reverb extends Component {
wetLevel: PropTypes.number,
};
static defaultProps = {
bypass: 0,
bypass: false,
dryLevel: 0.5,
highCut: 22050,
impulse: 'reverb/room.wav',
Expand Down
2 changes: 2 additions & 0 deletions src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import Analyser from './components/analyser.js';
import Bitcrusher from './components/bitcrusher.js';
import Bus from './components/bus.js';
import Chorus from './components/chorus.js';
import Phaser from './components/phaser.js';
import Compressor from './components/compressor.js';
import Delay from './components/delay.js';
import Filter from './components/filter.js';
Expand All @@ -22,6 +23,7 @@ export {
Bus,
Bitcrusher,
Chorus,
Phaser,
Compressor,
Delay,
Filter,
Expand Down