diff --git a/src/components/sound-editor/sound-editor.jsx b/src/components/sound-editor/sound-editor.jsx index 84f56d08b..32a018a56 100644 --- a/src/components/sound-editor/sound-editor.jsx +++ b/src/components/sound-editor/sound-editor.jsx @@ -265,6 +265,7 @@ const SoundEditor = props => ( onClick={props.onSlower} /> } @@ -340,6 +341,7 @@ SoundEditor.propTypes = { onUndo: PropTypes.func.isRequired, playhead: PropTypes.number, setRef: PropTypes.func, + tooLoud: PropTypes.bool.isRequired, trimEnd: PropTypes.number, trimStart: PropTypes.number }; diff --git a/src/containers/sound-editor.jsx b/src/containers/sound-editor.jsx index a2b19719f..94fca9524 100644 --- a/src/containers/sound-editor.jsx +++ b/src/containers/sound-editor.jsx @@ -14,6 +14,8 @@ import log from '../lib/log.js'; const UNDO_STACK_SIZE = 99; +const MAX_RMS = 1.2; + class SoundEditor extends React.Component { constructor (props) { super(props); @@ -265,6 +267,15 @@ class SoundEditor extends React.Component { } }); } + tooLoud () { + const numChunks = this.state.chunkLevels.length; + const startIndex = this.state.trimStart === null ? + 0 : Math.floor(this.state.trimStart * numChunks); + const endIndex = this.state.trimEnd === null ? + numChunks - 1 : Math.ceil(this.state.trimEnd * numChunks); + const trimChunks = this.state.chunkLevels.slice(startIndex, endIndex); + return Math.max(...trimChunks) > MAX_RMS; + } getUndoItem () { return { ...this.copyCurrentBuffer(), @@ -399,6 +410,7 @@ class SoundEditor extends React.Component { name={this.props.name} playhead={this.state.playhead} setRef={this.setRef} + tooLoud={this.tooLoud()} trimEnd={this.state.trimEnd} trimStart={this.state.trimStart} onChangeName={this.handleChangeName}