Example #1
0
const mapDispatchToProps = (dispatch, {block, song}) => ({

  onClickAdd() {
    const index = song.blocks.indexOf(block.id)
    dispatch(songs.actions.createBlockAt(song.id, index + 1))
  },

  onClickDupe() {
    const index = song.blocks.indexOf(block.id)
    const blockId = dispatch(blocks.actions.deepCopy(block.id)).payload.copy.id
    dispatch(songs.actions.addBlockAt(song.id, blockId, index + 1))
  },

  onClickDestroy() {
    if (!song.blocks.includes(block.id))
      return
    const prevBlock = before(song.blocks, block.id)
    const nextBlock = after(song.blocks, block.id)
    if (!isNil(prevBlock)) {
      dispatch(url.actions.setBrowserUrl(
        '/blocks/' + prevBlock , {replaceState: true}
      ))
    } else if (!isNil(nextBlock)) {
      dispatch(url.actions.setBrowserUrl(
        '/blocks/' + nextBlock, {replaceState: true}
      ))
    } else {
      dispatch(url.actions.setBrowserUrl(
        '/songs/' + song.id, {replaceState: true}
      ))
    }
    dispatch(blocks.actions.destroy(block.id))
  },

})
Example #2
0
  tickSong() {

    this.store.dispatch(songPlayer.actions.tick())

    const state = this.store.getState()
    const {beats, currentBeat, loop} = state.songPlayer
    const song = songPlayer.selectors.getCurrentSong(state)
    const totalBeats = song.blocks.length * beats
    const nBlock = Math.floor(currentBeat / beats)
    const nBlip = currentBeat % beats

    if (!isNil(song.blocks[nBlock])) {
      const block = blocks.selectors.getById(song.blocks[nBlock])(state)
      const channels = blocks.selectors.getEnabledChannels(block.id)(state)
      channels.forEach((channel) => {
        this.playBlip(state, channel.blips[nBlip])
      })
    }

    if (currentBeat >= totalBeats - 1) {
      if (loop) {
        this.store.dispatch(songPlayer.actions.restart())
      } else {
        this.stopSong()
      }
    }

  }
Example #3
0
 playBlip(state, blipId, stateTransform=identity) {
   if (isNil(blipId))
     return
   const blip = blips.selectors.getById(blipId)(state)
   const mixable = mixables.selectors.getById(blip.mixable)(state)
   this.audioService.play(
     stateTransform({...blip, ...mixable})
   )
 }
Example #4
0
 tick() {
   this.store.dispatch(player.actions.tick())
   const state = this.store.getState()
   const block = player.selectors.getCurrentBlock(state)
   if (isNil(block))
     return
   blocks.selectors.getEnabledChannels(block.id)(state).forEach((channel) => {
     this.playBlip(state, channel.blips[state.player.currentBeat])
   })
 }
Example #5
0
File: index.js Project: quxbaz/qux
 it("Checks if a value is undefined.", () => {
   expect(isNil(undefined)).toBe(true)
   let a
   expect(isNil(a)).toBe(true)
   let d = {}
   expect(isNil(d.foo)).toBe(true)
   expect(isNil(d)).toBe(false)
   expect(isNil(1)).toBe(false)
   expect(isNil('a')).toBe(false)
   expect(isNil('undefined')).toBe(false)
   expect(isNil(0)).toBe(false)
 })
Example #6
0
const create = (state) => (dispatch) => {

  let mixableId = state.mixable

  // Creates a new mixable if one isn't provided
  if (isNil(mixableId)) {
    mixableId = dispatch(id.actions.gen())
    dispatch(mixables.actions.create({
      id: mixableId,
      sample: state.sample,
    }))
  }

  return dispatch({
    type: actionTypes.CREATE,
    payload: {
      id: dispatch(id.actions.gen(state)),
      mixable: mixableId,
      ...state,
    }
  })

}
Example #7
0
 {channel.blips.filter(id => !isNil(id)).map((id) => (
Example #8
0
File: index.js Project: quxbaz/qux
 it("Checks if a value is null.", () => {
   expect(isNil(null)).toBe(true)
 })