Liking cljdoc? Tell your friends :D

Data Model

User:

  • name, UUID, profile, email, url
  • friends
  • projects
  • instruments
  • effects
  • players
  • modifiers

Friend:

A bookmarked user with increased privileges, possible caching, etc.

  • user info
  • link to a peer proxy node

Project:

A configuration of instruments, effects, players, and modifiers. It represents a musical piece.

  • instruments
  • effects
  • players
  • modifiers
  • configuration data for all of the above
  • project history, contributors, timestamps

Instrument:

Represents a playable object that accepts note on/off triggers and control value updates.

  • synth definition (ugen processing graph)
  • sample
  • audio file
  • midi output configuration

Effect:

An realtime audio processor.

  • synth definition

Player:

A source of musical note on/off triggers and control value updates.

  • sequencers
  • procedural note generators
  • random notes, markov models, sample & hold, etc...
  • midi input configuration

Modifier:

A musical note and/or control value modifier, which takes a stream of notes as its input, and outputs a new stream of notes.

  • arpeggiators
  • harmonizers
  • midi chorus effects

Capabilities:

Social:

  • add/remove friends
  • list friends (online, offline, both)

Networking:

  • start with a centralized, well-known peer that acts as a jump off point for finding friends, open sessions, browsing for instruments and effects, etc.

  • use either a BubbleStorm or one of the more recent DHT designs such as FuzzyNet

Relevant Queries

online friends:

(select [f.name f.id] (where [f ROOT/social/friend] (= f/peer.alive? true)))

  • assumes a .alive? property on each root node that is always true, but won't be available when the peer is not online.

peers of my peers:

(select [p] (where [p /net/peer/net/peer]))

friends of my friends:

(select [f] (where [f /social/friend/peer/social/friend]))

random walk to a peer:

(iterate 15 (select [p.uuid] (choose 1 p) (where [p /net/peer])))

Can you improve this documentation?Edit on GitHub

cljdoc is a website building & hosting documentation for Clojure/Script libraries

× close