Syncify

A simple windows application that allows synchronized music listening over the internet. It's written in C#. I mainly made it to internalize the knowledge I gained about C# and .NET during the OmegaPet project.

GPL v3 Repository

C# .NET WinForms Sockets MVP
  1. Thumb syncify screen2

    Syncifying

  2. Thumb syncify screen1

    Muted

  3. Thumb syncify screen3

    Options

  4. Thumb syncify screen4

    Chat

The idea is that two or more users connect to each other over a LAN or WAN and then each user can choose which other user to synchronize with. By selecting a user your media player will attempt to play all songs that user plays. It is possible to mute or block a user by pressing the icon to the left of their name. When a user connects to you, Syncify will provide them with details for connecting to any users you are already connected to. This way everyone is connected to everyone so if one user leaves everyone else stays connected to each other.

The GUI is written using .NET Winforms and I use MVP (Model View Presenter) for the code structure. It relies on each user having the song that is to be synchronized. It also requires them to have identical artist, album and title tags but I am planning on improving this before 1.0 is released. Syncify features a plugin system for controlling media players via COM. Currently I have developed two plugins, iTunes and Windows Media Player. More plugins can very easily be written by implementing the ISyncifyPlugin interface.

To write a plugin check out the Syncify repository and add a reference to the SyncifyPlugin project in your project. Next you create a class called Plugin.cs and have it implement the ISyncifyPlugin interface. Finally you tell it to compile as a class library (.dll file) and you should be good to go. If you have any issues look at the plugins that are in place or just contact me.

The current status of this project is early beta and consist of about 6000 lines of code. Make sure to have a look at the repository if you are curious about how I got to this point. The todo list before releasing 1.0 is relatively short at this point and mainly consists of some final touching up and a whole lot of testing.

Thanks to Jonathan Dibble for the C# version of the Remoted WindowsMediaPlayer COM interface. The icons used in Syncify come from the SilkIcons and TangoIconTheme icon packs. Syncify is open source and released under the GPL v3 license.

Developer notes

Currently Syncify relies on NLog so if it isn't installed you will have a missing reference and it won't compile. Due to how the plugin projects copy their resulting .dll file into the compiled Syncify folder you must build the Debug and Release targets at least once. Before you do so it will spit out errors as it can't find the folders it want to copy into.