Skip to content

asmr-hex/loopchat-client

Repository files navigation

LoopChat Client

freaky friend beats 🎼

Build Status Coverage Status GitBook Trello

What is LoopChat?

LoopChat is a real-time music collaboration application. Think Google Docs, but for making beats, noise loops, etc. with your friends!

Functional Requirements

  1. Real-Time Music Generation: players shall be able to generate sounds and apply treatments in real-time with session-mates.
  2. MIDI Generation: players shall be able to generate MIDI data from their browsers.
  3. MIDI Editor: players shall be able to edit midi sequences in real time.
  4. Record Audio: players shall be able to record audio from the computer microphone.
  5. Save/Export: players shall be able to save drafts and export to a variety of audio formats.
  6. Create Samples: players shall be able to upload audio snippets to create samples.
  7. Create MIDI Sequences: players shall be able to generate midi sequences similar to samples.
  8. Create Timelines: players shall be able to create multiple timelines of audio. Time lines can be converted into loops/samples.
  9. Create Tracks: players shall be able to create multiple tracks of audio using any input source (including loops/samples). Tracks can be converted to loops/samples.
  10. Create Loops: players shall be able to create loops composed of a number of tracks or other loops.
  11. Playback: players shall be able to Play, Pause, Stop, FF, RW, Reverse, Scrub timelines/samples.
  12. Track Edit: players shall be able to Cut, Copy, Move, Paste, Crop, Mute, Edit Volume of tracks.
  13. Tempo: players shall be able to edit the tempo and signature of individual timelines. This way, multiple timelines can be composed to generate polyrhythms. Additionally, players shall have fine grained control over quantizing MIDI, samples, and granularity of the visual tempo grid.
  14. Instruments: players shall be able to choose a variety of instruments to play including Sampler, Synths, Drums, Sequencer.
  15. Players: players can join sessions, projects, groups. Players can make a profile to show what groups/projects they work on. Players in a session can chat in real-time.
  16. Publish: players or groups can publish selected works, snippets, or sessions.

Ontology

  • Collaboration Context: Since collaboration is a primary focus of this application, it is important for each component to keep of the players which are currently operating on it. The collaboration context is a basic way for describe player interactions at varying levels of granularity.
  • Timeline: Playback of all audio must take place in a timeline. Timelines have their own specified duration, tempo, and time signature. Timelines have their own collaboration contexts.
  • Sample: Every snippet of audio is a sample. A sample can be edited, treated with effects, and looped. A sample can be created by importing pre-existing audio, or by converting a timeline/track into a sample. Each sample has its own timeline.
  • MIDI Sequence: Similar to samples, MIDI Sequences have independent timelines and are the basic chunk MIDI data. Each MIDI Sequence has an instrument that it uses to translate the midi data to audio.
  • Track: A track is a linear sequence of audio coming from an input source. Samples can be dragged onto tracks. A track can co-exist with parallel tracks on the same timeline. A single track or a collection of tracks on the same timeline can be converted to samples. Midi can be directly input on a track or a MIDI Sequence can be dragged onto a track.
  • Instrument: For MIDI data (generated by MIDI sequences), an instrument must be assigned to convert the midi data into audio. The most important instruments are
    1. Sample Sequencer: Sequences a bank of audio samples. Generates a MIDI Sequence which is translated to playing the supplied audio samples. The interface for the drum machine will allow players to generate MIDI Sequences using their specified sample bank.
    2. Synth Sequencer: Sequences MIDI data to play synths. (Could be in same interface as Drum Sequencer)
    3. Mic/Line In: directly record from a mic or line in.
  • Effects: all audio can be treated with a daisy chain of effects.

UX

  • Active Context: There can only be one active timeline context that a given player can edit/playback. This timeline can be either a Sequence, Sample, or Track Collection (called a Timeline in UI). Since the active context can be comprised of other timelines which can be simultaneously edited by other players, when a context is active for a given user, all sub-timelines will be frozen at time of opening the context. Players should be able to see when sub-contexts have been edited by their collaborators and either choose to merge the changes or maintain a separate branch of the sub-contexts. Additionally, each active context will have access to effects and be able to apply an effects daisy chain.
  • Timelines: this is a collection of Track Collections.
  • Samples: this is a collection of samples.
  • Sequences: this is a collection of sequences.
  • Current Session: List the collaborators (online/offline) and session details.
  • Chat: chat interface for player communication.

Wireframes

alt text alt text alt text alt text alt text

Resources