Kamikaze-Kanin Skrevet 6. mars 2012 Del Skrevet 6. mars 2012 (endret) SoundWeb SoundWeb skal gi deg de samme mulighetene du har ved å bruke tjenester som Spotify, Wimp eller Beat.no. Du skal få muligheten til å streame din egen musikk som du har liggende, enten via et program du kan kjøre på en pc(.NET), en mac eller linux-maskin (java), en androide-enhet (java), eller via en nettleser (silverlight, java og muligens støtte for javascript decoding). Kommentartråd Alle tanker og meninger rundt prosjektet tas gledelig imot i kommentartråden. Hvorfor Veldig mange har mye musikk liggende på pcer, mp3-spillere og ikke minst store hauger med cder kjøpt i butikk. Tiden hvor man hadde en discman eller et lydanlegg dedikert til å spille av cder, er forbi. Nå til dags har mobile enheter og streaming av musikk tatt over dagligdags musikkavspilling. Hvis man ikke skal bruke de store streamingtjenestene som Spotify, men heller vil bruke musikk man allerede har kjøpt og betalt for, så må man ta med seg hele filen hvor enn man vil høre på den. Forskjellen på dette systemet og andre programmer som lar deg streame lokal media, er muligheten til å koble flere servere sammen til et nettverk,derav navnet SoundWeb. Norsk lovsier det er lov å kopiere musikken sin til venner og familie. Det er også lov til å kopiere musikk til venner og familie som igjen har blitt kopiert fra venner og familie. Dermed kan en vennegruppe samarbeide om å ha et gigantisk musikkbibliotek, og det beste av alt; Det er helt lovlig. Hva skal lages - Serverprogramvare for Windows og opensource. - Klientprogramvare for Windows ogopensource. - Nettleserklient Hvordan For å beholde lydkvaliteten, skal det brukes WavPack som lydcodec på serveren og til å streame musikken. FLAC er et godt kjent format som er lossless, men valget falt på WavPack fordi det har implementert noe de kaller "hybride mode".Når hybride mode står på, genereres det ikke bare en fil når man komprimerer musikken, men to. Den ene filen er en mindre men fortsatt høy kvalitets lossy musikkfil, og sammen med den andre filen kan man generere ut musikken i sin originale kvalitet. Det støttes til og med studiokvalitet på musikken. I første omgang må originalfilen være i FLAC-format, men etterhvert vil det bli lagt inn støtte for blant annet mp3 og wav. På det nåværende tidspunkt er dette hvordan jeg ser for meg ulike "moduler" og dataflyt mellom disse på klient og serversiden. Dette er kanskje ikke helt forstålig for hvem som helst, men det gir mening for meg, og jeg skal prøve så godt jeg kan å forklare hvordan alt skal fungere sammen underveis. Server dataflyt. Klient dataflyt. Endret 13. mars 2012 av Kamikaze-Kanin Lenke til kommentar
Kamikaze-Kanin Skrevet 13. mars 2012 Forfatter Del Skrevet 13. mars 2012 Da var det på tide med første update her. Er litt som skjer hver dag, men ikke nok til at det er noen vits i å prøve å informere verden om det. Hva som er gjort Først og fremst startet jeg å lage en multithreaded server for å ta seg av alle som kobler seg til. Greit nok, det er en relativt enkel sak å lage. Problemet oppstår når man skal grave ut all informasjonen fra musikkfilene, som tittel på sangen, artisten, album og lengden på sangen. Etter ganske mange timer med Google som min beste venn, har jeg klart å komme over biblioteket libTag som er skrevet i C. Men takk og lov at det er noen andre som har laget en wrapper for bruk i .NET-prosjekter! For å lagre all informasjonen som leses fra musikk-filene, så har jeg valgt å bruke en SQLite database. Dette er fordi det er enkelt å distribuere databasen, og den kan enkelt leses av i utallige programmeringsspråk. For å enkelt lage en database å starte med anbefales f.eks SQLite Administrator til resten av verden der ute Litt av den nåværende databasestrukturen, også kan du se at systemet har klart å automatisk fylle inn noen sanger, artister og album fra første og beste CD som lå liggende ^_^ Selve prosjektet har fått bygget opp litt flere funksjoner og klasser. Det er laget en statisk klasse som bare skal ta seg av å skrive til en logg-fil. Enkelt og greit å bruke ved exception-handeling! For å koble hvordan koden er bygget opp hittil i forhold til den planlagte dataflyten lenger oppe, så kan du jo ta en liten titt på det nåværende klassediagrammet. For å forklare litt; - Hver server inneholder mange Connections som representerer en tilkoblet klient (eller server, men kommer tilbake til det senere i prosjektet). - Hver Channel er en kobling til en stream på serveren. Hver Channel identifiseres med en ID, og denne brukes når data kommer tilbake til klienten. - Hvis man skal sende en enkel spørring til serveren trenger man ikke gå den lange veien innom å lage en Channel for å sende og motta data, man sender enkelt og greit bare spørringen og venter på mottaket ved å bruke AsyncCallback. Hva som skal gjøres Nå som det er implementert nok funksjonalitet til å legge til mapper med filer, så kan jeg bevege meg videre til at klienten skal kunne sende spørringer til serveren om å få lister over sanger og artister. Nå har jeg aldri skrevet noen arbeidslogg for programmering på denne måten, så jeg vet ikke helt hva som er interessant å høre om. Så jeg tar gjerne alle tilbakemeldinger jeg kan få = ) Interessant med GitHub kanskje? Kommentarer takk Kommentartråd Lenke til kommentar
Kamikaze-Kanin Skrevet 23. mars 2012 Forfatter Del Skrevet 23. mars 2012 Nå er det en liten stund siden siste oppdatering. Det er skjedd litt av hvert siden sist, blant annet har jeg møtt på noen små fartsdumper, hvor den største av dem egentlig har vært bacheloroppgave og det faktumet at jeg satt opp en ny Minecraft (Tekkit) server hjemme... dummeste jeg har gjort på lenge xD Originaltanken var jo å programmere dette asynkront helt fra bunnen av... og siden jeg ikke har prøvd meg på noe sånt før, så tar det kanskje litt lengre tid enn nødvendig :/ Sakte men sikkert så trenger jeg å designe et godt brukergrensesnitt, jeg tenker jo å se på alle de andre kjente musikkavspillingstjenestene, men jeg kan jo ikke ha noe som er likt alle andres. Så jeg tar gjerne imot alle forslag til hvordan folk vil ha det. Hva er det f.eks du liker med Spotify som du kunne tenke deg at jeg legger inn? Har ikke så mye tid til å skrive noe her i dag, skole og hyttetur er rett rundt hjørnet Dine forslag til brukergrensesnitt tars i mot i kommentartråden! Gooood heeeelg!! Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå