Skip to content

Egaros/SoundByte

 
 

Repository files navigation

SoundByte

SoundByte Screenshot

A SoundCloud & Fanburst Client for Windows 10 & Xbox One.

SoundByte Issues Chat on Discord

Introduction

SoundByte is a Universal Windows Platform (UWP) App that connects with the SoundCloud (and Fanburst) API allowing for a user to listen to music from SoundCloud natively. SoundByte is published through the Windows Store for free.

Please Note: SoundByte source code is to only be used for educational purposes. Distrubution of SoundByte source code in any form outside this repository is forbidden.

SoundByte is split into a few projects:

SoundByte.API

This project contains cross platform classes and holders used to deserialize content from the SoundCloud and Fanburst API. This project is seperate allowing the backend service and UWP app to access the same classes. Build using .NET Standard.

SoundByte.Aurora

SoundByte Aurora is a new work in progress muiltiplatform extendable engine for SoundByte. This engine will allow easy extensibility with other services while also allowing the ability for code sharing and reuse across muiltiple platforms (such as UWP and Android).

SoundByte.Core

This project contains helper classes for common app functions such as settings control and deserializing JSON. Currently this project targets the UWP framework, but in the future it's planned to target a framework that works with both UWP and Xamarin, while also intergrating more of the networking code.

SoundByte.Service

This project is a web app that runs in Microsoft Azure. This web app will allow spotify like features in the app (login to xbox with PC, continue listening to a song on another device etc.)

SoundByte.UWP

This project contains the main code for SoundByte on Windows 10 / Xbox One. Items such as brushes, view models, models, views, playback service etc. are all stored here.

SoundByte logic is based around a central XAML/C# file called MainShell.xaml/MainShell.xaml.cs. This file displays key app elements such as the left hand navigation pane, and mobile navigation bar. It also supports app navigation, and is used to load key app resources at load time.

The Views folder contains XAML pages used within the app. Generally there is one xaml page per app page (using visual state triggers to change certain UI elements depending on the platform). The code behind these pages is usually simple, only containing the view model logic and telemetry logic.

The ViewModels folder contains all the view models for the app. A view model class will typically extend INotifyPropertyChanged and IDisposable (although IDisposable is not currently used). These classes usually are linked with a view and contain logic for said view.

The UserControls folder contains the XAML and behind code for common user controls within the app. For example the stream item, and notification item.

The Services folder contains static services used around the app. Noticable examples are the Playback Service (handles starting songs and playing / pausing songs) and the SoundByte service (used by the app to login / logout, access api resources etc.)

The Models folder contains models for the app. The name models may sound a little confusing at first (as these are not empty classes for JSON deserialization - these classes are located in the SoundByte.Core project). These classes typically extend ObservableCollection<item> and ISupportIncrementalLoading and are used for automatic loading of content within list views and grid views.

Features

  • SoundCloud API: SoundByte is able to access the SoundCloud API either logged in or logged out. When logged out a user can serarch for music and then play the music. When logged in, a user can like / repost items, add items to their playlist, view their history, likes, stream, created/liked playlists and notifications. When also logged in the user can upload their own music to the SoundCloud API.

  • Fanburst API: Support for Fanburst is still in early stages, currently a user can search for Fanburst songs and play them. Basic login is also supported, but not currently used. In the future, we plan on extending this API into the rest of the app (such as likes, history etc.) and at the same time, hopefully make the app more modular, allowing for more service intergration in the future.

  • Background Audio: SoundByte supports playback of audio in the background using the Single Process Background Audio API. This allows the ability to play music when the screen is turned off (phone), when the app is minimised (desktop) or while playing a game (Xbox).

  • Background Notifications: Initial versions of SoundByte supported background notifications that were provided by a background timer service that ran every 15 minutes. This service would update a temporary list with all new items in the users stream since the last check, and display notifications for these items. This newly open-sourced version of SoundByte no longer supports this notification system due to instability issues.

Goals for version 2.1.x

There are a few main goals that I am aiming for the v2.1.x release. These are listed below:

  • Improved Mobile Support.
  • App Stability Improvements, better code.
  • Bring back notification support.
  • New logo to align with Windows Store app guidelines.
  • Better error messages.
  • Fanburst Intergration / start work on an extendable code base - allowing for other services to be added.

Download

SoundByte can be either downloaded from the Windows Store here or downloaded from the build server. Windows 10 Creators Update or newer is required to run SoundByte.

Development

Create a new file under SoundByte.UWP/Assets called app_keys.json. This file will contain all the keys needed to run the app. Insert the following JSON code into this file

{ "GoogleAnalytics": "key-here",
  "HockeyAppClientID": "key-here",
  "AzureMobileCenterClientID": "key-here",
  "SoundCloudClientID": "key-here",
  "SoundCloudClientSecret": "key-here",
  "FanburstClientID": "key-here",
  "FanbustClientSecret": "key-here",
  "BackupSoundCloudPlaybackIDs": [
    "key-here",
    "key-here",
    "key-here",
    "key-here"
  ]
}

Credits

See also the list of contributors who participated in this project.

License

MIT License

Copyright (c) 2017 Dominic Maas

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

About

SoundCloud & Experimental Fanburst Client for Windows 10 & Xbox One

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C# 81.7%
  • JavaScript 18.3%