THE ELFENING
The second version of the ELF will be like a private peer2peer network, similar to waste, but designed specifically for sharing and playing music.
- when you load the app, a giant index of all the music on the network will be available, which is a highly organized and canonicalized index of all albums and artists with relevant metadata
- the index could be distributed across the peers of the p2p network, or stored on a centralized index server, or both
- all of the index-data which the client recieves will be saved to a local storage (incase the network goes down, or parts of it are unreachable)
- the giant index of music can be browsed like it's your own music collection
- there are many different views of the database
- genres
- most popular songs amongst people on the network
- most popular songs amongst people who like the same stuff as you
- your favorite songs
- your newest/unlistened songs
- songs you're likely to enjoy given what you've chosen to listen to right now (i.e. it tries to determine your mood from the music you're selecting and then suggests songs)
- stuff you like but haven't listened to in a long time
- smart playlists
- ....AND MORE!!!!!!!
- there are many different views of the database
- any music that you play will be transparently retrieved from wherever it resides (local storage, a supernode, a single peer, multiple peers, etc.)
- all songs/albums will have a status icon beside them that shows whether it's permanently saved locally, temporarily cached locally, or available on the network (in which case, its icon will change to represent how many people are sharing that file, eg. with lots of sources, it would be a really excited happy face :D:D:D)
- playing a song off the network automatically caches it to a temporary location on your machine (with options to set the maximum cache size and maximum file age, for garbage collection)
- cached songs can be made permanent by clicking their status icon (you can cycle it between available on the network, temporarily cached, and permanently stored)
online songs which haven't been listened to (and therefore cached) can be downloaded easily by simply cycling their status icon
- files stored on the hard drive can be removed by toggling the status icon to a trashcan
- trashed files won't be removed until the trash is emptied
- all entities in the system can be rated (songs, albums, artists, genres, years, people on the network, servers, etc.)
- all of these statistics will be utilized when doing "choice" operations (i.e. pick best server, pick best music, etc.)
- computations driven by magic
- when the client isn't online, or parts of the network have gone down, material that you don't have access to will be greyed out but still visible
- operations on greyed out material will be queued for when it's available
Comments:
- compatable with all standard media types (mp3, ogg, wav, wma, etc)
- ELFRADIO
"would it be easy to create some sort of frontpage radio-app, ie, even just a winamp-pasteable link like that WFMU link we had, that would stream all of dark randomly (low-fi low-bandwidth version) to whoever was listening to it? some easy m3u link that could be easily passed around? Or would there have to be a specified folder somewhere of all the "radio tracks", i.e. 24hrs worth, which is always "playing", and the stream-link somehow taps into that?" - Mike
Questions:
- peer-to-peer, or centralized server?
Both! I want to have something like Kazaa, where there's client-nodes and indexnodes.
- web-based, or GUI client? (or some mix of both.. web client would require centralized server from above ^)
It's common to have GUI clients with web interfaces built in, so maybe it could have that. Index-nodes should have a web interface too, for searching.
Alternate name: Massively Multiplayer Neural Network Mood Preference Music Analyzation Skull Scanning Music Playing Machine (or MMNNMPMASSMPM for short)
P2P Extension
- Private network with automatic clinet discovery
- Node types:
- User nodes
- Cache nodes
- Metadata nodes
- Databases (and their updates) are published to the metadata nodes via DAAP
- When listening to a song, a cache node is chosen, and the song is saved on it
- to distribute load effectively, masters should elect each other based on simple criteria (disk space and recent bandwidth usage)
to keep to keep fake masters from invading the network, clients should poll n cache nodes randomly and request a master; if one of them is different, this "rogue master" is reported (to all known masters)
- Metadata nodes should collect listening statistics from clients
- music player plugins would allow the listener to rate songs
- Can DAAP publish dynamic playlists? (yes! and since it can, the metadata server could offer automatic mixes)
More stuff: see DAAP
Fair-Use Protocol
The RIAA doesn't like people downloading music from each other -- but what if you could digitally lend things to specific people? It would be good for a few reasons.
Firstly, people's collections can be huge. In this case, it's hard to figure out what is worth listening to. If the owner of the music gets to drop files onto your profile to lend them to you, then they're likely to be good stuff. In addition, the person, if they're nice, could take your musical taste into consideration.
Secondly, it could become addictive since you'd be able to watch a person listen to the music and rate it. People could turn into recommending junkies!
Thirdly, the RIAA can't complain since you're lending albums only to specific people.
Fourthly, you could integrate a payment system that recoups the artists directly!
To stick in the page properly
22:56 <@epitato> oh CGM
22:56 <@epitato> i was thinking about ELF architecture
22:56 <@epitato> i have 3 unused servers here
22:56 <@epitato> 1TB, 100gigs, and 300gigs
22:56 <@tmrd> what
22:56 <@epitato> i think what we need is a distributed database, with a rails
web frontend
22:56 <@epitato> then the users could run as ELF nodes too
22:57 <@epitato> i'm thinking, [db]->[data server]->[metadata master]->[web
frontend]
22:57 <@thrashy> for porn
22:57 <@epitato> metadata master running on a single fast node somewhere
22:57 <@epitato> and all the dataservers connect to it and send it updates
22:57 <@epitato> does that sound good to you cgm?
22:58 <@epitato> this setup means people can use [winamp plugin] instead of
[web frontend] if they want
22:58 <@epitato> or itunes, if we write a daap server for [metadata master]
22:58 <@epitato> (and daap looks pretty straight forward to implement)
Intelligent Shuffle
- Can thumbs-up tracks in the shuffle to change all proceeding tracks
- Each thumbs-up adds an artist/constraint to the right side
- constraints can be removed
- Each time a constraint is added/removed, the proceeding entries are recomputed
Better explanation
- Tag off songs that you like in the list, and it generates a list like that
