Build 121209
							
								
								
									
										46
									
								
								DrumKit.sln
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,46 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					Microsoft Visual Studio Solution File, Format Version 12.00
 | 
				
			||||||
 | 
					# Visual Studio 2012
 | 
				
			||||||
 | 
					Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DrumKit", "DrumKit\DrumKit.csproj", "{9A5D3F55-DFD5-45DB-99FF-C82EFCC3294D}"
 | 
				
			||||||
 | 
					EndProject
 | 
				
			||||||
 | 
					Global
 | 
				
			||||||
 | 
						GlobalSection(SolutionConfigurationPlatforms) = preSolution
 | 
				
			||||||
 | 
							Debug|Any CPU = Debug|Any CPU
 | 
				
			||||||
 | 
							Debug|ARM = Debug|ARM
 | 
				
			||||||
 | 
							Debug|x64 = Debug|x64
 | 
				
			||||||
 | 
							Debug|x86 = Debug|x86
 | 
				
			||||||
 | 
							Release|Any CPU = Release|Any CPU
 | 
				
			||||||
 | 
							Release|ARM = Release|ARM
 | 
				
			||||||
 | 
							Release|x64 = Release|x64
 | 
				
			||||||
 | 
							Release|x86 = Release|x86
 | 
				
			||||||
 | 
						EndGlobalSection
 | 
				
			||||||
 | 
						GlobalSection(ProjectConfigurationPlatforms) = postSolution
 | 
				
			||||||
 | 
							{9A5D3F55-DFD5-45DB-99FF-C82EFCC3294D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
 | 
							{9A5D3F55-DFD5-45DB-99FF-C82EFCC3294D}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
 | 
							{9A5D3F55-DFD5-45DB-99FF-C82EFCC3294D}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
 | 
				
			||||||
 | 
							{9A5D3F55-DFD5-45DB-99FF-C82EFCC3294D}.Debug|ARM.ActiveCfg = Debug|ARM
 | 
				
			||||||
 | 
							{9A5D3F55-DFD5-45DB-99FF-C82EFCC3294D}.Debug|ARM.Build.0 = Debug|ARM
 | 
				
			||||||
 | 
							{9A5D3F55-DFD5-45DB-99FF-C82EFCC3294D}.Debug|ARM.Deploy.0 = Debug|ARM
 | 
				
			||||||
 | 
							{9A5D3F55-DFD5-45DB-99FF-C82EFCC3294D}.Debug|x64.ActiveCfg = Debug|x64
 | 
				
			||||||
 | 
							{9A5D3F55-DFD5-45DB-99FF-C82EFCC3294D}.Debug|x64.Build.0 = Debug|x64
 | 
				
			||||||
 | 
							{9A5D3F55-DFD5-45DB-99FF-C82EFCC3294D}.Debug|x64.Deploy.0 = Debug|x64
 | 
				
			||||||
 | 
							{9A5D3F55-DFD5-45DB-99FF-C82EFCC3294D}.Debug|x86.ActiveCfg = Debug|x86
 | 
				
			||||||
 | 
							{9A5D3F55-DFD5-45DB-99FF-C82EFCC3294D}.Debug|x86.Build.0 = Debug|x86
 | 
				
			||||||
 | 
							{9A5D3F55-DFD5-45DB-99FF-C82EFCC3294D}.Debug|x86.Deploy.0 = Debug|x86
 | 
				
			||||||
 | 
							{9A5D3F55-DFD5-45DB-99FF-C82EFCC3294D}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
 | 
							{9A5D3F55-DFD5-45DB-99FF-C82EFCC3294D}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
 | 
							{9A5D3F55-DFD5-45DB-99FF-C82EFCC3294D}.Release|Any CPU.Deploy.0 = Release|Any CPU
 | 
				
			||||||
 | 
							{9A5D3F55-DFD5-45DB-99FF-C82EFCC3294D}.Release|ARM.ActiveCfg = Release|ARM
 | 
				
			||||||
 | 
							{9A5D3F55-DFD5-45DB-99FF-C82EFCC3294D}.Release|ARM.Build.0 = Release|ARM
 | 
				
			||||||
 | 
							{9A5D3F55-DFD5-45DB-99FF-C82EFCC3294D}.Release|ARM.Deploy.0 = Release|ARM
 | 
				
			||||||
 | 
							{9A5D3F55-DFD5-45DB-99FF-C82EFCC3294D}.Release|x64.ActiveCfg = Release|x64
 | 
				
			||||||
 | 
							{9A5D3F55-DFD5-45DB-99FF-C82EFCC3294D}.Release|x64.Build.0 = Release|x64
 | 
				
			||||||
 | 
							{9A5D3F55-DFD5-45DB-99FF-C82EFCC3294D}.Release|x64.Deploy.0 = Release|x64
 | 
				
			||||||
 | 
							{9A5D3F55-DFD5-45DB-99FF-C82EFCC3294D}.Release|x86.ActiveCfg = Release|x86
 | 
				
			||||||
 | 
							{9A5D3F55-DFD5-45DB-99FF-C82EFCC3294D}.Release|x86.Build.0 = Release|x86
 | 
				
			||||||
 | 
							{9A5D3F55-DFD5-45DB-99FF-C82EFCC3294D}.Release|x86.Deploy.0 = Release|x86
 | 
				
			||||||
 | 
						EndGlobalSection
 | 
				
			||||||
 | 
						GlobalSection(SolutionProperties) = preSolution
 | 
				
			||||||
 | 
							HideSolutionNode = FALSE
 | 
				
			||||||
 | 
						EndGlobalSection
 | 
				
			||||||
 | 
					EndGlobal
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								DrumKit.v11.suo
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										20
									
								
								DrumKit/App.xaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,20 @@
 | 
				
			|||||||
 | 
					<Application
 | 
				
			||||||
 | 
					    x:Class="DrumKit.App"
 | 
				
			||||||
 | 
					    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 | 
				
			||||||
 | 
					    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 | 
				
			||||||
 | 
					    xmlns:local="using:DrumKit">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <Application.Resources>
 | 
				
			||||||
 | 
					        <ResourceDictionary>
 | 
				
			||||||
 | 
					            <ResourceDictionary.MergedDictionaries>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                <!-- 
 | 
				
			||||||
 | 
					                    Styles that define common aspects of the platform look and feel
 | 
				
			||||||
 | 
					                    Required by Visual Studio project and item templates
 | 
				
			||||||
 | 
					                 -->
 | 
				
			||||||
 | 
					                <ResourceDictionary Source="Common/StandardStyles.xaml"/>
 | 
				
			||||||
 | 
					            </ResourceDictionary.MergedDictionaries>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        </ResourceDictionary>
 | 
				
			||||||
 | 
					    </Application.Resources>
 | 
				
			||||||
 | 
					</Application>
 | 
				
			||||||
							
								
								
									
										90
									
								
								DrumKit/App.xaml.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,90 @@
 | 
				
			|||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.IO;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using Windows.ApplicationModel;
 | 
				
			||||||
 | 
					using Windows.ApplicationModel.Activation;
 | 
				
			||||||
 | 
					using Windows.Foundation;
 | 
				
			||||||
 | 
					using Windows.Foundation.Collections;
 | 
				
			||||||
 | 
					using Windows.UI.Xaml;
 | 
				
			||||||
 | 
					using Windows.UI.Xaml.Controls;
 | 
				
			||||||
 | 
					using Windows.UI.Xaml.Controls.Primitives;
 | 
				
			||||||
 | 
					using Windows.UI.Xaml.Data;
 | 
				
			||||||
 | 
					using Windows.UI.Xaml.Input;
 | 
				
			||||||
 | 
					using Windows.UI.Xaml.Media;
 | 
				
			||||||
 | 
					using Windows.UI.Xaml.Navigation;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// The Blank Application template is documented at http://go.microsoft.com/fwlink/?LinkId=234227
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace DrumKit
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    /// <summary>
 | 
				
			||||||
 | 
					    /// Provides application-specific behavior to supplement the default Application class.
 | 
				
			||||||
 | 
					    /// </summary>
 | 
				
			||||||
 | 
					    sealed partial class App : Application
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Initializes the singleton application object.  This is the first line of authored code
 | 
				
			||||||
 | 
					        /// executed, and as such is the logical equivalent of main() or WinMain().
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public App()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            this.InitializeComponent();
 | 
				
			||||||
 | 
					            this.Suspending += OnSuspending;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Invoked when the application is launched normally by the end user.  Other entry points
 | 
				
			||||||
 | 
					        /// will be used when the application is launched to open a specific file, to display
 | 
				
			||||||
 | 
					        /// search results, and so forth.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        /// <param name="args">Details about the launch request and process.</param>
 | 
				
			||||||
 | 
					        protected override void OnLaunched(LaunchActivatedEventArgs args)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            Frame rootFrame = Window.Current.Content as Frame;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // Do not repeat app initialization when the Window already has content,
 | 
				
			||||||
 | 
					            // just ensure that the window is active
 | 
				
			||||||
 | 
					            if (rootFrame == null)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                // Create a Frame to act as the navigation context and navigate to the first page
 | 
				
			||||||
 | 
					                rootFrame = new Frame();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if (args.PreviousExecutionState == ApplicationExecutionState.Terminated)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    //TODO: Load state from previously suspended application
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                // Place the frame in the current Window
 | 
				
			||||||
 | 
					                Window.Current.Content = rootFrame;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (rootFrame.Content == null)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                // When the navigation stack isn't restored navigate to the first page,
 | 
				
			||||||
 | 
					                // configuring the new page by passing required information as a navigation
 | 
				
			||||||
 | 
					                // parameter
 | 
				
			||||||
 | 
					                if (!rootFrame.Navigate(typeof(MainPage), args.Arguments))
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    throw new Exception("Failed to create initial page");
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            // Ensure the current window is active
 | 
				
			||||||
 | 
					            Window.Current.Activate();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Invoked when application execution is being suspended.  Application state is saved
 | 
				
			||||||
 | 
					        /// without knowing whether the application will be terminated or resumed with the contents
 | 
				
			||||||
 | 
					        /// of memory still intact.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        /// <param name="sender">The source of the suspend request.</param>
 | 
				
			||||||
 | 
					        /// <param name="e">Details about the suspend request.</param>
 | 
				
			||||||
 | 
					        private void OnSuspending(object sender, SuspendingEventArgs e)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var deferral = e.SuspendingOperation.GetDeferral();
 | 
				
			||||||
 | 
					            //TODO: Save application state and stop any background activity
 | 
				
			||||||
 | 
					            deferral.Complete();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								DrumKit/Assets/Drums/big_drum_of.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 40 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								DrumKit/Assets/Drums/big_drum_on.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 37 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								DrumKit/Assets/Drums/drum_of.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 230 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								DrumKit/Assets/Drums/drum_on.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 228 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								DrumKit/Assets/Drums/plate_off.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 515 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								DrumKit/Assets/Drums/plate_on.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 372 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								DrumKit/Assets/Logos/Logo.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 801 B  | 
							
								
								
									
										
											BIN
										
									
								
								DrumKit/Assets/Logos/SmallLogo.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 329 B  | 
							
								
								
									
										
											BIN
										
									
								
								DrumKit/Assets/Logos/SplashScreen.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 2.1 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								DrumKit/Assets/Logos/StoreLogo.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 429 B  | 
							
								
								
									
										
											BIN
										
									
								
								DrumKit/Assets/Sounds/Crash05.wav
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								DrumKit/Assets/Sounds/Floor04.wav
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								DrumKit/Assets/Sounds/Hat04.WAV
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								DrumKit/Assets/Sounds/HiHatOpen04.wav
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								DrumKit/Assets/Sounds/Kick07.wav
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								DrumKit/Assets/Sounds/Ride04.wav
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								DrumKit/Assets/Sounds/Snare08.wav
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								DrumKit/Assets/Sounds/TomHigh04.wav
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								DrumKit/Assets/Sounds/TomLow04.wav
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								DrumKit/Assets/bg.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 838 KiB  | 
							
								
								
									
										40
									
								
								DrumKit/Assets/default
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,40 @@
 | 
				
			|||||||
 | 
					[Kick]
 | 
				
			||||||
 | 
					    position=.41,.2
 | 
				
			||||||
 | 
					    size=.3
 | 
				
			||||||
 | 
					    image=ms-appx:///Assets/Drums/big_drum_of.png
 | 
				
			||||||
 | 
					    sound,0=ms-appx:///Assets/Sounds/Kick07.wav
 | 
				
			||||||
 | 
					[Snare]
 | 
				
			||||||
 | 
					    position=.16,.34
 | 
				
			||||||
 | 
					    size=.25
 | 
				
			||||||
 | 
					    image=ms-appx:///Assets/Drums/drum_of.png
 | 
				
			||||||
 | 
					    sound,0=ms-appx:///Assets/Sounds/Snare08.wav
 | 
				
			||||||
 | 
					[High Tom]
 | 
				
			||||||
 | 
					    position=.33,.05
 | 
				
			||||||
 | 
					    size=.22
 | 
				
			||||||
 | 
					    image=ms-appx:///Assets/Drums/drum_of.png
 | 
				
			||||||
 | 
					    sound,0=ms-appx:///Assets/Sounds/TomHigh04.wav
 | 
				
			||||||
 | 
					[Low Tom]
 | 
				
			||||||
 | 
					    position=.55,.05
 | 
				
			||||||
 | 
					    size=.22
 | 
				
			||||||
 | 
					    image=ms-appx:///Assets/Drums/drum_of.png
 | 
				
			||||||
 | 
					    sound,0=ms-appx:///Assets/Sounds/TomLow04.wav
 | 
				
			||||||
 | 
					[Floor Tom]
 | 
				
			||||||
 | 
					    position=.66,.44
 | 
				
			||||||
 | 
					    size=.29
 | 
				
			||||||
 | 
					    image=ms-appx:///Assets/Drums/drum_of.png
 | 
				
			||||||
 | 
					    sound,0=ms-appx:///Assets/Sounds/Floor04.wav
 | 
				
			||||||
 | 
					[HiHat]
 | 
				
			||||||
 | 
					    position=.03,.55
 | 
				
			||||||
 | 
					    size=.21
 | 
				
			||||||
 | 
					    image=ms-appx:///Assets/Drums/plate_off.png
 | 
				
			||||||
 | 
					    sound,0=ms-appx:///Assets/Sounds/HiHatOpen04.wav
 | 
				
			||||||
 | 
					[Crash]
 | 
				
			||||||
 | 
					    position=.1,.02
 | 
				
			||||||
 | 
					    size=.25
 | 
				
			||||||
 | 
					    image=ms-appx:///Assets/Drums/plate_off.png
 | 
				
			||||||
 | 
					    sound,0=ms-appx:///Assets/Sounds/Crash05.wav
 | 
				
			||||||
 | 
					[Ride]
 | 
				
			||||||
 | 
					    position=.72,.04
 | 
				
			||||||
 | 
					    size=.25
 | 
				
			||||||
 | 
					    image=ms-appx:///Assets/Drums/plate_off.png
 | 
				
			||||||
 | 
					    sound,0=ms-appx:///Assets/Sounds/Ride04.wav
 | 
				
			||||||
							
								
								
									
										1833
									
								
								DrumKit/Common/StandardStyles.xaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										107
									
								
								DrumKit/Drum.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,107 @@
 | 
				
			|||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using Windows.Foundation;
 | 
				
			||||||
 | 
					using Windows.Foundation.Collections;
 | 
				
			||||||
 | 
					using Windows.UI.Xaml;
 | 
				
			||||||
 | 
					using Windows.UI.Xaml.Controls;
 | 
				
			||||||
 | 
					using Windows.UI.Xaml.Controls.Primitives;
 | 
				
			||||||
 | 
					using Windows.UI.Xaml.Data;
 | 
				
			||||||
 | 
					using Windows.UI.Xaml.Input;
 | 
				
			||||||
 | 
					using Windows.UI.Xaml.Media;
 | 
				
			||||||
 | 
					using Windows.UI.Xaml.Media.Imaging;
 | 
				
			||||||
 | 
					using Windows.UI.Xaml.Navigation;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace DrumKit
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    class Drum
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        #region Attributes
 | 
				
			||||||
 | 
					        private Uri imageSource;
 | 
				
			||||||
 | 
					        private Point position;
 | 
				
			||||||
 | 
					        private double size;
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #region Public properties
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Gets or sets the name of the drum.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public string Name { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Gets or sets the image uri. If enabled, the image is loaded.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public Uri ImageSource {
 | 
				
			||||||
 | 
					            get { return this.imageSource; } 
 | 
				
			||||||
 | 
					            set { this.SetImageSource(value); }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Gets or sets the position of the element on the screen.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public Point Position { 
 | 
				
			||||||
 | 
					            get { return this.position; }
 | 
				
			||||||
 | 
					            set { this.SetPosition(value); }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Gets the size of the image displayed on the screen.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public double Size {
 | 
				
			||||||
 | 
					            get { return this.size; }
 | 
				
			||||||
 | 
					            set { this.size = value; }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Sound sources
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public Dictionary<int, Uri> SoundSources
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get;
 | 
				
			||||||
 | 
					            private set;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #region Constructor
 | 
				
			||||||
 | 
					        public Drum()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            // Initialize sources
 | 
				
			||||||
 | 
					            this.SoundSources = new Dictionary<int, Uri>();
 | 
				
			||||||
 | 
					            this.imageSource = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // Set up other vars
 | 
				
			||||||
 | 
					            this.position = new Point(0, 0);
 | 
				
			||||||
 | 
					            this.size = 0;
 | 
				
			||||||
 | 
					            this.Name = "<unnamed>";
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #region Setters
 | 
				
			||||||
 | 
					        public void SetImageSource(Uri imagesrc)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            // Set property
 | 
				
			||||||
 | 
					            this.imageSource = imagesrc;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public void SetPosition(Point location)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            // Set property
 | 
				
			||||||
 | 
					            this.position = location;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public void SetSoundSource(int intensity, Uri source)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            // Set up sound source
 | 
				
			||||||
 | 
					            if (this.SoundSources.ContainsKey(intensity))
 | 
				
			||||||
 | 
					                this.SoundSources[intensity] = source;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            else this.SoundSources.Add(intensity, source);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										181
									
								
								DrumKit/DrumKit.csproj
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,181 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="utf-8"?>
 | 
				
			||||||
 | 
					<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 | 
				
			||||||
 | 
					  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
 | 
				
			||||||
 | 
					  <PropertyGroup>
 | 
				
			||||||
 | 
					    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
 | 
				
			||||||
 | 
					    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
 | 
				
			||||||
 | 
					    <ProjectGuid>{9A5D3F55-DFD5-45DB-99FF-C82EFCC3294D}</ProjectGuid>
 | 
				
			||||||
 | 
					    <OutputType>AppContainerExe</OutputType>
 | 
				
			||||||
 | 
					    <AppDesignerFolder>Properties</AppDesignerFolder>
 | 
				
			||||||
 | 
					    <RootNamespace>DrumKit</RootNamespace>
 | 
				
			||||||
 | 
					    <AssemblyName>DrumKit</AssemblyName>
 | 
				
			||||||
 | 
					    <DefaultLanguage>en-US</DefaultLanguage>
 | 
				
			||||||
 | 
					    <FileAlignment>512</FileAlignment>
 | 
				
			||||||
 | 
					    <ProjectTypeGuids>{BC8A1FFA-BEE3-4634-8014-F334798102B3};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
 | 
				
			||||||
 | 
					    <PackageCertificateKeyFile>DrumKit_TemporaryKey.pfx</PackageCertificateKeyFile>
 | 
				
			||||||
 | 
					  </PropertyGroup>
 | 
				
			||||||
 | 
					  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
 | 
				
			||||||
 | 
					    <PlatformTarget>AnyCPU</PlatformTarget>
 | 
				
			||||||
 | 
					    <DebugSymbols>true</DebugSymbols>
 | 
				
			||||||
 | 
					    <DebugType>full</DebugType>
 | 
				
			||||||
 | 
					    <Optimize>false</Optimize>
 | 
				
			||||||
 | 
					    <OutputPath>bin\Debug\</OutputPath>
 | 
				
			||||||
 | 
					    <DefineConstants>DEBUG;TRACE;NETFX_CORE</DefineConstants>
 | 
				
			||||||
 | 
					    <ErrorReport>prompt</ErrorReport>
 | 
				
			||||||
 | 
					    <WarningLevel>4</WarningLevel>
 | 
				
			||||||
 | 
					  </PropertyGroup>
 | 
				
			||||||
 | 
					  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
 | 
				
			||||||
 | 
					    <PlatformTarget>AnyCPU</PlatformTarget>
 | 
				
			||||||
 | 
					    <DebugType>pdbonly</DebugType>
 | 
				
			||||||
 | 
					    <Optimize>true</Optimize>
 | 
				
			||||||
 | 
					    <OutputPath>bin\Release\</OutputPath>
 | 
				
			||||||
 | 
					    <DefineConstants>TRACE;NETFX_CORE</DefineConstants>
 | 
				
			||||||
 | 
					    <ErrorReport>prompt</ErrorReport>
 | 
				
			||||||
 | 
					    <WarningLevel>4</WarningLevel>
 | 
				
			||||||
 | 
					  </PropertyGroup>
 | 
				
			||||||
 | 
					  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|ARM'">
 | 
				
			||||||
 | 
					    <DebugSymbols>true</DebugSymbols>
 | 
				
			||||||
 | 
					    <OutputPath>bin\ARM\Debug\</OutputPath>
 | 
				
			||||||
 | 
					    <DefineConstants>DEBUG;TRACE;NETFX_CORE</DefineConstants>
 | 
				
			||||||
 | 
					    <NoWarn>;2008</NoWarn>
 | 
				
			||||||
 | 
					    <DebugType>full</DebugType>
 | 
				
			||||||
 | 
					    <PlatformTarget>ARM</PlatformTarget>
 | 
				
			||||||
 | 
					    <UseVSHostingProcess>false</UseVSHostingProcess>
 | 
				
			||||||
 | 
					    <ErrorReport>prompt</ErrorReport>
 | 
				
			||||||
 | 
					    <Prefer32Bit>true</Prefer32Bit>
 | 
				
			||||||
 | 
					  </PropertyGroup>
 | 
				
			||||||
 | 
					  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|ARM'">
 | 
				
			||||||
 | 
					    <OutputPath>bin\ARM\Release\</OutputPath>
 | 
				
			||||||
 | 
					    <DefineConstants>TRACE;NETFX_CORE</DefineConstants>
 | 
				
			||||||
 | 
					    <Optimize>true</Optimize>
 | 
				
			||||||
 | 
					    <NoWarn>;2008</NoWarn>
 | 
				
			||||||
 | 
					    <DebugType>pdbonly</DebugType>
 | 
				
			||||||
 | 
					    <PlatformTarget>ARM</PlatformTarget>
 | 
				
			||||||
 | 
					    <UseVSHostingProcess>false</UseVSHostingProcess>
 | 
				
			||||||
 | 
					    <ErrorReport>prompt</ErrorReport>
 | 
				
			||||||
 | 
					    <Prefer32Bit>true</Prefer32Bit>
 | 
				
			||||||
 | 
					  </PropertyGroup>
 | 
				
			||||||
 | 
					  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
 | 
				
			||||||
 | 
					    <DebugSymbols>true</DebugSymbols>
 | 
				
			||||||
 | 
					    <OutputPath>bin\x64\Debug\</OutputPath>
 | 
				
			||||||
 | 
					    <DefineConstants>DEBUG;TRACE;NETFX_CORE</DefineConstants>
 | 
				
			||||||
 | 
					    <NoWarn>;2008</NoWarn>
 | 
				
			||||||
 | 
					    <DebugType>full</DebugType>
 | 
				
			||||||
 | 
					    <PlatformTarget>x64</PlatformTarget>
 | 
				
			||||||
 | 
					    <UseVSHostingProcess>false</UseVSHostingProcess>
 | 
				
			||||||
 | 
					    <ErrorReport>prompt</ErrorReport>
 | 
				
			||||||
 | 
					    <Prefer32Bit>true</Prefer32Bit>
 | 
				
			||||||
 | 
					  </PropertyGroup>
 | 
				
			||||||
 | 
					  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
 | 
				
			||||||
 | 
					    <OutputPath>bin\x64\Release\</OutputPath>
 | 
				
			||||||
 | 
					    <DefineConstants>TRACE;NETFX_CORE</DefineConstants>
 | 
				
			||||||
 | 
					    <Optimize>true</Optimize>
 | 
				
			||||||
 | 
					    <NoWarn>;2008</NoWarn>
 | 
				
			||||||
 | 
					    <DebugType>pdbonly</DebugType>
 | 
				
			||||||
 | 
					    <PlatformTarget>x64</PlatformTarget>
 | 
				
			||||||
 | 
					    <UseVSHostingProcess>false</UseVSHostingProcess>
 | 
				
			||||||
 | 
					    <ErrorReport>prompt</ErrorReport>
 | 
				
			||||||
 | 
					    <Prefer32Bit>true</Prefer32Bit>
 | 
				
			||||||
 | 
					  </PropertyGroup>
 | 
				
			||||||
 | 
					  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
 | 
				
			||||||
 | 
					    <DebugSymbols>true</DebugSymbols>
 | 
				
			||||||
 | 
					    <OutputPath>bin\x86\Debug\</OutputPath>
 | 
				
			||||||
 | 
					    <DefineConstants>DEBUG;TRACE;NETFX_CORE</DefineConstants>
 | 
				
			||||||
 | 
					    <NoWarn>;2008</NoWarn>
 | 
				
			||||||
 | 
					    <DebugType>full</DebugType>
 | 
				
			||||||
 | 
					    <PlatformTarget>x86</PlatformTarget>
 | 
				
			||||||
 | 
					    <UseVSHostingProcess>false</UseVSHostingProcess>
 | 
				
			||||||
 | 
					    <ErrorReport>prompt</ErrorReport>
 | 
				
			||||||
 | 
					    <Prefer32Bit>true</Prefer32Bit>
 | 
				
			||||||
 | 
					  </PropertyGroup>
 | 
				
			||||||
 | 
					  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
 | 
				
			||||||
 | 
					    <OutputPath>bin\x86\Release\</OutputPath>
 | 
				
			||||||
 | 
					    <DefineConstants>TRACE;NETFX_CORE</DefineConstants>
 | 
				
			||||||
 | 
					    <Optimize>true</Optimize>
 | 
				
			||||||
 | 
					    <NoWarn>;2008</NoWarn>
 | 
				
			||||||
 | 
					    <DebugType>pdbonly</DebugType>
 | 
				
			||||||
 | 
					    <PlatformTarget>x86</PlatformTarget>
 | 
				
			||||||
 | 
					    <UseVSHostingProcess>false</UseVSHostingProcess>
 | 
				
			||||||
 | 
					    <ErrorReport>prompt</ErrorReport>
 | 
				
			||||||
 | 
					    <Prefer32Bit>true</Prefer32Bit>
 | 
				
			||||||
 | 
					  </PropertyGroup>
 | 
				
			||||||
 | 
					  <ItemGroup>
 | 
				
			||||||
 | 
					    <Compile Include="App.xaml.cs">
 | 
				
			||||||
 | 
					      <DependentUpon>App.xaml</DependentUpon>
 | 
				
			||||||
 | 
					    </Compile>
 | 
				
			||||||
 | 
					    <Compile Include="Drum.cs" />
 | 
				
			||||||
 | 
					    <Compile Include="MainPage.xaml.cs">
 | 
				
			||||||
 | 
					      <DependentUpon>MainPage.xaml</DependentUpon>
 | 
				
			||||||
 | 
					    </Compile>
 | 
				
			||||||
 | 
					    <Compile Include="Recorder.cs" />
 | 
				
			||||||
 | 
					    <Compile Include="Repository\DrumRepository.cs" />
 | 
				
			||||||
 | 
					    <Compile Include="SoundPlayer.cs" />
 | 
				
			||||||
 | 
					    <Compile Include="Properties\AssemblyInfo.cs" />
 | 
				
			||||||
 | 
					    <Compile Include="SoundPool.cs" />
 | 
				
			||||||
 | 
					  </ItemGroup>
 | 
				
			||||||
 | 
					  <ItemGroup>
 | 
				
			||||||
 | 
					    <AppxManifest Include="Package.appxmanifest">
 | 
				
			||||||
 | 
					      <SubType>Designer</SubType>
 | 
				
			||||||
 | 
					    </AppxManifest>
 | 
				
			||||||
 | 
					    <None Include="DrumKit_TemporaryKey.pfx" />
 | 
				
			||||||
 | 
					  </ItemGroup>
 | 
				
			||||||
 | 
					  <ItemGroup>
 | 
				
			||||||
 | 
					    <Content Include="Assets\bg.png" />
 | 
				
			||||||
 | 
					    <Content Include="Assets\Drums\big_drum_of.png" />
 | 
				
			||||||
 | 
					    <Content Include="Assets\Drums\big_drum_on.png" />
 | 
				
			||||||
 | 
					    <Content Include="Assets\Drums\drum_of.png" />
 | 
				
			||||||
 | 
					    <Content Include="Assets\Drums\drum_on.png" />
 | 
				
			||||||
 | 
					    <Content Include="Assets\Sounds\Crash05.wav" />
 | 
				
			||||||
 | 
					    <Content Include="Assets\Sounds\Hat04.WAV" />
 | 
				
			||||||
 | 
					    <Content Include="Assets\Sounds\HiHatOpen04.wav" />
 | 
				
			||||||
 | 
					    <Content Include="Assets\Sounds\Kick07.wav" />
 | 
				
			||||||
 | 
					    <Content Include="Assets\default">
 | 
				
			||||||
 | 
					      <SubType>Designer</SubType>
 | 
				
			||||||
 | 
					    </Content>
 | 
				
			||||||
 | 
					    <Content Include="Assets\Logos\Logo.png" />
 | 
				
			||||||
 | 
					    <Content Include="Assets\Logos\SmallLogo.png" />
 | 
				
			||||||
 | 
					    <Content Include="Assets\Logos\SplashScreen.png" />
 | 
				
			||||||
 | 
					    <Content Include="Assets\Logos\StoreLogo.png" />
 | 
				
			||||||
 | 
					    <Content Include="Assets\Drums\plate_off.png" />
 | 
				
			||||||
 | 
					    <Content Include="Assets\Drums\plate_on.png" />
 | 
				
			||||||
 | 
					    <Content Include="Assets\Sounds\Ride04.wav" />
 | 
				
			||||||
 | 
					    <Content Include="Assets\Sounds\Snare08.wav" />
 | 
				
			||||||
 | 
					    <Content Include="Assets\Sounds\TomHigh04.wav" />
 | 
				
			||||||
 | 
					    <Content Include="Assets\Sounds\Floor04.wav" />
 | 
				
			||||||
 | 
					    <Content Include="Assets\Sounds\TomLow04.wav" />
 | 
				
			||||||
 | 
					  </ItemGroup>
 | 
				
			||||||
 | 
					  <ItemGroup>
 | 
				
			||||||
 | 
					    <ApplicationDefinition Include="App.xaml">
 | 
				
			||||||
 | 
					      <Generator>MSBuild:Compile</Generator>
 | 
				
			||||||
 | 
					      <SubType>Designer</SubType>
 | 
				
			||||||
 | 
					    </ApplicationDefinition>
 | 
				
			||||||
 | 
					    <Page Include="Common\StandardStyles.xaml">
 | 
				
			||||||
 | 
					      <Generator>MSBuild:Compile</Generator>
 | 
				
			||||||
 | 
					      <SubType>Designer</SubType>
 | 
				
			||||||
 | 
					    </Page>
 | 
				
			||||||
 | 
					    <Page Include="MainPage.xaml">
 | 
				
			||||||
 | 
					      <Generator>MSBuild:Compile</Generator>
 | 
				
			||||||
 | 
					      <SubType>Designer</SubType>
 | 
				
			||||||
 | 
					    </Page>
 | 
				
			||||||
 | 
					  </ItemGroup>
 | 
				
			||||||
 | 
					  <ItemGroup>
 | 
				
			||||||
 | 
					    <Reference Include="SharpDX">
 | 
				
			||||||
 | 
					      <HintPath>C:\Users\Tiberiu\Downloads\SharpDX\Bin\Standard-winrt\SharpDX.dll</HintPath>
 | 
				
			||||||
 | 
					    </Reference>
 | 
				
			||||||
 | 
					    <Reference Include="SharpDX.XAudio2">
 | 
				
			||||||
 | 
					      <HintPath>C:\Users\Tiberiu\Downloads\SharpDX\Bin\Standard-winrt\SharpDX.XAudio2.dll</HintPath>
 | 
				
			||||||
 | 
					    </Reference>
 | 
				
			||||||
 | 
					  </ItemGroup>
 | 
				
			||||||
 | 
					  <ItemGroup />
 | 
				
			||||||
 | 
					  <PropertyGroup Condition=" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' < '11.0' ">
 | 
				
			||||||
 | 
					    <VisualStudioVersion>11.0</VisualStudioVersion>
 | 
				
			||||||
 | 
					  </PropertyGroup>
 | 
				
			||||||
 | 
					  <Import Project="$(MSBuildExtensionsPath)\Microsoft\WindowsXaml\v$(VisualStudioVersion)\Microsoft.Windows.UI.Xaml.CSharp.targets" />
 | 
				
			||||||
 | 
					  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
 | 
				
			||||||
 | 
					       Other similar extension points exist, see Microsoft.Common.targets.
 | 
				
			||||||
 | 
					  <Target Name="BeforeBuild">
 | 
				
			||||||
 | 
					  </Target>
 | 
				
			||||||
 | 
					  <Target Name="AfterBuild">
 | 
				
			||||||
 | 
					  </Target>
 | 
				
			||||||
 | 
					  -->
 | 
				
			||||||
 | 
					</Project>
 | 
				
			||||||
							
								
								
									
										6
									
								
								DrumKit/DrumKit.csproj.user
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="utf-8"?>
 | 
				
			||||||
 | 
					<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 | 
				
			||||||
 | 
					  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
 | 
				
			||||||
 | 
					    <UseSimulator>False</UseSimulator>
 | 
				
			||||||
 | 
					  </PropertyGroup>
 | 
				
			||||||
 | 
					</Project>
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								DrumKit/DrumKit_TemporaryKey.pfx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										73
									
								
								DrumKit/MainPage.xaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,73 @@
 | 
				
			|||||||
 | 
					<Page
 | 
				
			||||||
 | 
					    x:Class="DrumKit.MainPage"
 | 
				
			||||||
 | 
					    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 | 
				
			||||||
 | 
					    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 | 
				
			||||||
 | 
					    xmlns:local="using:DrumKit"
 | 
				
			||||||
 | 
					    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
 | 
				
			||||||
 | 
					    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
 | 
				
			||||||
 | 
					    mc:Ignorable="d">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <Grid
 | 
				
			||||||
 | 
					        Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					        <Image Source="ms-appx:///Assets/bg.png"
 | 
				
			||||||
 | 
					               Stretch="UniformToFill"/>
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        <Canvas
 | 
				
			||||||
 | 
					            Name="myCanvas" >
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        </Canvas>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <Grid>
 | 
				
			||||||
 | 
					            <Border Margin="7"
 | 
				
			||||||
 | 
					                    CornerRadius="10" 
 | 
				
			||||||
 | 
					                    BorderBrush="Red" 
 | 
				
			||||||
 | 
					                    BorderThickness="5" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <Canvas Name="recCanvas">
 | 
				
			||||||
 | 
					                <Ellipse Width="18" Height="18" Fill="Red"
 | 
				
			||||||
 | 
					                         Canvas.Left="20"
 | 
				
			||||||
 | 
					                         Canvas.Top="20"/>
 | 
				
			||||||
 | 
					                <TextBlock
 | 
				
			||||||
 | 
					                           FontFamily="Consolas"
 | 
				
			||||||
 | 
					                           FontSize="16"
 | 
				
			||||||
 | 
					                           Foreground="Red"
 | 
				
			||||||
 | 
					                           Canvas.Left="42"
 | 
				
			||||||
 | 
					                           Canvas.Top="19">REC
 | 
				
			||||||
 | 
					                </TextBlock>
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					                <Canvas.Triggers>
 | 
				
			||||||
 | 
					                    <EventTrigger RoutedEvent="Canvas.Loaded">
 | 
				
			||||||
 | 
					                        <BeginStoryboard>
 | 
				
			||||||
 | 
					                            <Storyboard RepeatBehavior="Forever" >
 | 
				
			||||||
 | 
					                                <DoubleAnimation
 | 
				
			||||||
 | 
					                                    Storyboard.TargetName="recCanvas"
 | 
				
			||||||
 | 
					                                    Storyboard.TargetProperty="Opacity"
 | 
				
			||||||
 | 
					                                    Duration="0:0:1" BeginTime="0:0:1" From="1" To="0.1" />
 | 
				
			||||||
 | 
					                            </Storyboard>
 | 
				
			||||||
 | 
					                        </BeginStoryboard>
 | 
				
			||||||
 | 
					                    </EventTrigger>
 | 
				
			||||||
 | 
					                </Canvas.Triggers>
 | 
				
			||||||
 | 
					            </Canvas>
 | 
				
			||||||
 | 
					            <!--<StackPanel Orientation="Horizontal"
 | 
				
			||||||
 | 
					                        HorizontalAlignment="Left"
 | 
				
			||||||
 | 
					                        VerticalAlignment="Top">
 | 
				
			||||||
 | 
					                <Button>Record</Button>
 | 
				
			||||||
 | 
					                <Button>Stop</Button>
 | 
				
			||||||
 | 
					            </StackPanel>-->
 | 
				
			||||||
 | 
					        </Grid>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    </Grid>
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <Page.BottomAppBar>
 | 
				
			||||||
 | 
					        <AppBar>
 | 
				
			||||||
 | 
					            <StackPanel Orientation="Horizontal">
 | 
				
			||||||
 | 
					                <ToggleButton
 | 
				
			||||||
 | 
					                    Name="buttonEditMode"
 | 
				
			||||||
 | 
					                    Click="buttonEditMode_Click_1"
 | 
				
			||||||
 | 
					                    Style="{StaticResource EditAppBarButtonStyle}" />
 | 
				
			||||||
 | 
					            </StackPanel>
 | 
				
			||||||
 | 
					        </AppBar>
 | 
				
			||||||
 | 
					    </Page.BottomAppBar>
 | 
				
			||||||
 | 
					</Page>
 | 
				
			||||||
							
								
								
									
										201
									
								
								DrumKit/MainPage.xaml.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,201 @@
 | 
				
			|||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.IO;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using Windows.Foundation;
 | 
				
			||||||
 | 
					using Windows.Foundation.Collections;
 | 
				
			||||||
 | 
					using Windows.UI.Xaml;
 | 
				
			||||||
 | 
					using Windows.UI.Xaml.Controls;
 | 
				
			||||||
 | 
					using Windows.UI.Xaml.Controls.Primitives;
 | 
				
			||||||
 | 
					using Windows.UI.Xaml.Data;
 | 
				
			||||||
 | 
					using Windows.UI.Xaml.Input;
 | 
				
			||||||
 | 
					using Windows.UI.Xaml.Media;
 | 
				
			||||||
 | 
					using Windows.UI.Xaml.Navigation;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace DrumKit
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    /// <summary>
 | 
				
			||||||
 | 
					    /// An empty page that can be used on its own or navigated to within a Frame.
 | 
				
			||||||
 | 
					    /// </summary>
 | 
				
			||||||
 | 
					    public sealed partial class MainPage : Page
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        DrumRepository drumRepo;
 | 
				
			||||||
 | 
					        SoundPlayer player = new SoundPlayer();
 | 
				
			||||||
 | 
					        List<Image> uiImages;
 | 
				
			||||||
 | 
					        List<Button> uiButtons;
 | 
				
			||||||
 | 
					        List<Thumb> uiThumbs;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public MainPage()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            this.InitializeComponent();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            drumRepo = new DrumRepository();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            uiImages = new List<Image>();
 | 
				
			||||||
 | 
					            uiButtons = new List<Button>();
 | 
				
			||||||
 | 
					            uiThumbs = new List<Thumb>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            this.InitializeResources();
 | 
				
			||||||
 | 
					            this.KeyDown += MainPage_KeyDown;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        void MainPage_KeyDown(object sender, KeyRoutedEventArgs e)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            string key = Enum.GetName(typeof(Windows.System.VirtualKey), e.Key);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (key != null && key.Length == 1)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                int index = Convert.ToInt32(key.ToLower()[0] - 'a');
 | 
				
			||||||
 | 
					                if (this.uiButtons.Count > index)
 | 
				
			||||||
 | 
					                    this.DrumClicked(this.uiButtons[index], new RoutedEventArgs());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Image CreateImage(int index, Drum drum)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var img = new Image();
 | 
				
			||||||
 | 
					            var bitmap = new Windows.UI.Xaml.Media.Imaging.BitmapImage(drum.ImageSource);
 | 
				
			||||||
 | 
					            img.Tag = index.ToString(); 
 | 
				
			||||||
 | 
					            img.Source = bitmap;
 | 
				
			||||||
 | 
					            img.Width = drum.Size * this.ActualWidth;
 | 
				
			||||||
 | 
					            img.Height = drum.Size * this.ActualWidth;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            return img;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Button CreateButton(int index, Drum drum)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var button = new Button();
 | 
				
			||||||
 | 
					            button.Tag = index.ToString();
 | 
				
			||||||
 | 
					            button.Click += DrumClicked;
 | 
				
			||||||
 | 
					            button.Width = drum.Size * this.ActualWidth;
 | 
				
			||||||
 | 
					            button.Height = drum.Size * this.ActualWidth;
 | 
				
			||||||
 | 
					            button.Background = new SolidColorBrush(Windows.UI.Colors.Orange);
 | 
				
			||||||
 | 
					            button.Opacity = 0;
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            return button;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Thumb CreateThumb(int index, Drum drum)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var thumb = new Thumb();
 | 
				
			||||||
 | 
					            thumb.Tag = index.ToString();
 | 
				
			||||||
 | 
					            thumb.DragDelta += DrumMoved;
 | 
				
			||||||
 | 
					            thumb.Width = drum.Size * this.ActualWidth;
 | 
				
			||||||
 | 
					            thumb.Height = drum.Size * this.ActualWidth;
 | 
				
			||||||
 | 
					            thumb.Opacity = .3;
 | 
				
			||||||
 | 
					            thumb.Background = new SolidColorBrush(Windows.UI.Colors.Green);
 | 
				
			||||||
 | 
					            thumb.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            return thumb;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        async void InitializeResources()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            await drumRepo.LoadFile(new Uri("ms-appx:///Assets/default"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            for (int i = 0; i < drumRepo.Drums.Count; i++)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                var drum = drumRepo.Drums[i];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                // Get ui objects
 | 
				
			||||||
 | 
					                var img = CreateImage(i, drum);
 | 
				
			||||||
 | 
					                var button = CreateButton(i, drum);
 | 
				
			||||||
 | 
					                var thumb = CreateThumb(i, drum);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                // Set up layout
 | 
				
			||||||
 | 
					                this.myCanvas.Children.Add(img);
 | 
				
			||||||
 | 
					                this.myCanvas.Children.Add(button);
 | 
				
			||||||
 | 
					                this.myCanvas.Children.Add(thumb);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                Canvas.SetLeft(img, drum.Position.X * this.ActualWidth);
 | 
				
			||||||
 | 
					                Canvas.SetLeft(button, drum.Position.X * this.ActualWidth);
 | 
				
			||||||
 | 
					                Canvas.SetLeft(thumb, drum.Position.X * this.ActualWidth);
 | 
				
			||||||
 | 
					                Canvas.SetTop(img, drum.Position.Y * this.ActualHeight);
 | 
				
			||||||
 | 
					                Canvas.SetTop(button, drum.Position.Y * this.ActualHeight);
 | 
				
			||||||
 | 
					                Canvas.SetTop(thumb, drum.Position.Y * this.ActualHeight);
 | 
				
			||||||
 | 
					                Canvas.SetZIndex(img, 0);
 | 
				
			||||||
 | 
					                Canvas.SetZIndex(button, 1);
 | 
				
			||||||
 | 
					                Canvas.SetZIndex(thumb, 2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                // Add to our list
 | 
				
			||||||
 | 
					                this.uiImages.Add(img);
 | 
				
			||||||
 | 
					                this.uiButtons.Add(button);
 | 
				
			||||||
 | 
					                this.uiThumbs.Add(thumb);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // Add drums
 | 
				
			||||||
 | 
					            this.player.AddDrums(this.drumRepo.Drums);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        void DrumClicked(object sender, RoutedEventArgs e)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var button = sender as Button;
 | 
				
			||||||
 | 
					            if (button == null) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var tag = button.Tag as string;
 | 
				
			||||||
 | 
					            if (tag == null) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            int index = int.Parse(tag);
 | 
				
			||||||
 | 
					            this.player.Play(this.drumRepo.Drums[index].Name + "0");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        void DrumMoved(object sender, DragDeltaEventArgs e)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var thumb = sender as Thumb;
 | 
				
			||||||
 | 
					            if (thumb == null) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var tag = thumb.Tag as string;
 | 
				
			||||||
 | 
					            if (tag == null) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            int index = int.Parse(tag);
 | 
				
			||||||
 | 
					            Canvas.SetLeft(uiImages[index], Canvas.GetLeft(uiImages[index]) + e.HorizontalChange);
 | 
				
			||||||
 | 
					            Canvas.SetLeft(uiButtons[index], Canvas.GetLeft(uiButtons[index]) + e.HorizontalChange);
 | 
				
			||||||
 | 
					            Canvas.SetLeft(uiThumbs[index], Canvas.GetLeft(uiThumbs[index]) + e.HorizontalChange);
 | 
				
			||||||
 | 
					            Canvas.SetTop(uiImages[index], Canvas.GetTop(uiImages[index]) + e.VerticalChange);
 | 
				
			||||||
 | 
					            Canvas.SetTop(uiButtons[index], Canvas.GetTop(uiButtons[index]) + e.VerticalChange);
 | 
				
			||||||
 | 
					            Canvas.SetTop(uiThumbs[index], Canvas.GetTop(uiThumbs[index]) + e.VerticalChange);
 | 
				
			||||||
 | 
					            drumRepo.Drums[index].Position = new Point(drumRepo.Drums[index].Position.X + e.HorizontalChange, drumRepo.Drums[index].Position.Y + e.VerticalChange);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Invoked when this page is about to be displayed in a Frame.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        /// <param name="e">Event data that describes how this page was reached.  The Parameter
 | 
				
			||||||
 | 
					        /// property is typically used to configure the page.</param>
 | 
				
			||||||
 | 
					        protected override void OnNavigatedTo(NavigationEventArgs e)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private async void mybutton_Click_1(object sender, RoutedEventArgs e)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var picker = new Windows.Storage.Pickers.FileOpenPicker();
 | 
				
			||||||
 | 
					            picker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.MusicLibrary;
 | 
				
			||||||
 | 
					            picker.FileTypeFilter.Add("*");
 | 
				
			||||||
 | 
					            var file = await picker.PickSingleFileAsync();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            //blabla.Source = new Uri(file.Path);
 | 
				
			||||||
 | 
					            //blabla.Play();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private void buttonEditMode_Click_1(object sender, RoutedEventArgs e)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var button = sender as ToggleButton;
 | 
				
			||||||
 | 
					            if (button == null) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // Fix togglebuton style bug
 | 
				
			||||||
 | 
					            VisualStateManager.GoToState(button, button.IsChecked.Value ? "Checked" : "Unchecked", false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // Change visibility of thumbs
 | 
				
			||||||
 | 
					            bool visible = (buttonEditMode.IsChecked.HasValue && buttonEditMode.IsChecked.Value);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            foreach (var i in this.uiThumbs)
 | 
				
			||||||
 | 
					                if (visible) i.Visibility = Windows.UI.Xaml.Visibility.Visible;
 | 
				
			||||||
 | 
					                else i.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										35
									
								
								DrumKit/Package.appxmanifest
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,35 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="utf-8"?>
 | 
				
			||||||
 | 
					<Package xmlns="http://schemas.microsoft.com/appx/2010/manifest">
 | 
				
			||||||
 | 
					  <Identity Name="9e797bd6-ff19-4416-8ec8-f371d6d86244" Publisher="CN=Tiberiu" Version="1.0.0.0" />
 | 
				
			||||||
 | 
					  <Properties>
 | 
				
			||||||
 | 
					    <DisplayName>DrumKit</DisplayName>
 | 
				
			||||||
 | 
					    <PublisherDisplayName>Tiberiu</PublisherDisplayName>
 | 
				
			||||||
 | 
					    <Logo>Assets\StoreLogo.png</Logo>
 | 
				
			||||||
 | 
					  </Properties>
 | 
				
			||||||
 | 
					  <Prerequisites>
 | 
				
			||||||
 | 
					    <OSMinVersion>6.2.1</OSMinVersion>
 | 
				
			||||||
 | 
					    <OSMaxVersionTested>6.2.1</OSMaxVersionTested>
 | 
				
			||||||
 | 
					  </Prerequisites>
 | 
				
			||||||
 | 
					  <Resources>
 | 
				
			||||||
 | 
					    <Resource Language="x-generate" />
 | 
				
			||||||
 | 
					  </Resources>
 | 
				
			||||||
 | 
					  <Applications>
 | 
				
			||||||
 | 
					    <Application Id="App" Executable="$targetnametoken$.exe" EntryPoint="DrumKit.App">
 | 
				
			||||||
 | 
					      <VisualElements DisplayName="DrumKit" Logo="Assets\Logos\Logo.png" SmallLogo="Assets\Logos\SmallLogo.png" Description="DrumKit" ForegroundText="light" BackgroundColor="#464646">
 | 
				
			||||||
 | 
					        <DefaultTile ShowName="allLogos" />
 | 
				
			||||||
 | 
					        <SplashScreen Image="Assets\Logos\SplashScreen.png" />
 | 
				
			||||||
 | 
					        <InitialRotationPreference>
 | 
				
			||||||
 | 
					          <Rotation Preference="landscape" />
 | 
				
			||||||
 | 
					          <Rotation Preference="landscapeFlipped" />
 | 
				
			||||||
 | 
					        </InitialRotationPreference>
 | 
				
			||||||
 | 
					      </VisualElements>
 | 
				
			||||||
 | 
					      <Extensions>
 | 
				
			||||||
 | 
					        <Extension Category="windows.backgroundTasks" EntryPoint="DrumKit">
 | 
				
			||||||
 | 
					          <BackgroundTasks>
 | 
				
			||||||
 | 
					            <Task Type="audio" />
 | 
				
			||||||
 | 
					          </BackgroundTasks>
 | 
				
			||||||
 | 
					        </Extension>
 | 
				
			||||||
 | 
					      </Extensions>
 | 
				
			||||||
 | 
					    </Application>
 | 
				
			||||||
 | 
					  </Applications>
 | 
				
			||||||
 | 
					</Package>
 | 
				
			||||||
							
								
								
									
										29
									
								
								DrumKit/Properties/AssemblyInfo.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,29 @@
 | 
				
			|||||||
 | 
					using System.Reflection;
 | 
				
			||||||
 | 
					using System.Runtime.CompilerServices;
 | 
				
			||||||
 | 
					using System.Runtime.InteropServices;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// General Information about an assembly is controlled through the following 
 | 
				
			||||||
 | 
					// set of attributes. Change these attribute values to modify the information
 | 
				
			||||||
 | 
					// associated with an assembly.
 | 
				
			||||||
 | 
					[assembly: AssemblyTitle("DrumKit")]
 | 
				
			||||||
 | 
					[assembly: AssemblyDescription("")]
 | 
				
			||||||
 | 
					[assembly: AssemblyConfiguration("")]
 | 
				
			||||||
 | 
					[assembly: AssemblyCompany("")]
 | 
				
			||||||
 | 
					[assembly: AssemblyProduct("DrumKit")]
 | 
				
			||||||
 | 
					[assembly: AssemblyCopyright("Copyright ©  2012")]
 | 
				
			||||||
 | 
					[assembly: AssemblyTrademark("")]
 | 
				
			||||||
 | 
					[assembly: AssemblyCulture("")]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Version information for an assembly consists of the following four values:
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//      Major Version
 | 
				
			||||||
 | 
					//      Minor Version 
 | 
				
			||||||
 | 
					//      Build Number
 | 
				
			||||||
 | 
					//      Revision
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// You can specify all the values or you can default the Build and Revision Numbers 
 | 
				
			||||||
 | 
					// by using the '*' as shown below:
 | 
				
			||||||
 | 
					// [assembly: AssemblyVersion("1.0.*")]
 | 
				
			||||||
 | 
					[assembly: AssemblyVersion("1.0.0.0")]
 | 
				
			||||||
 | 
					[assembly: AssemblyFileVersion("1.0.0.0")]
 | 
				
			||||||
 | 
					[assembly: ComVisible(false)]
 | 
				
			||||||
							
								
								
									
										55
									
								
								DrumKit/Recorder.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,55 @@
 | 
				
			|||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace DrumKit
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    class Recorder
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        private SortedDictionary<double, Uri> hits;
 | 
				
			||||||
 | 
					        private DateTime begin;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public bool IsRecording { get; private set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public Recorder()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            this.IsRecording = false;
 | 
				
			||||||
 | 
					            this.begin = new DateTime();
 | 
				
			||||||
 | 
					            this.hits = new SortedDictionary<double, Uri>();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public void Start()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            this.IsRecording = true;
 | 
				
			||||||
 | 
					            begin = DateTime.Now;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public void Add(Uri uri)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            if (!IsRecording)
 | 
				
			||||||
 | 
					                return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var time = DateTime.Now - this.begin;
 | 
				
			||||||
 | 
					            this.hits.Add(time.TotalMilliseconds, uri);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public void Stop()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            this.IsRecording = false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public void Play()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            SoundPlayer player = new SoundPlayer();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var sounduris = this.hits.Values.Distinct();
 | 
				
			||||||
 | 
					            foreach (var i in sounduris)
 | 
				
			||||||
 | 
					                player.AddWave(i.AbsolutePath, i.AbsolutePath);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										76
									
								
								DrumKit/Repository/DrumRepository.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,76 @@
 | 
				
			|||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using Windows.Storage;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace DrumKit
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    class DrumRepository
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        public List<Drum> Drums { get; private set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public DrumRepository()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            this.Drums = new List<Drum>();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public async Task LoadFile(Uri path)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(path);
 | 
				
			||||||
 | 
					            IList<string> lines = await FileIO.ReadLinesAsync(file);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            Drum drum = null;
 | 
				
			||||||
 | 
					            double x, y;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            foreach (var i in lines)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                var clean = i.Trim(' ', '\t', '\r', '\n');
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					                // New drum
 | 
				
			||||||
 | 
					                if (clean[0] == '[')
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    if (drum != null)
 | 
				
			||||||
 | 
					                        this.Drums.Add(drum);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    drum = new Drum();
 | 
				
			||||||
 | 
					                    drum.Name = clean.Substring(1, clean.Length - 2);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                // Attribute
 | 
				
			||||||
 | 
					                else if (drum != null)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    var split = clean.Split(new char[] { '=', ',', ';' }, StringSplitOptions.RemoveEmptyEntries);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    switch (split[0])
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        case "position":
 | 
				
			||||||
 | 
					                            x = double.Parse(split[1]);
 | 
				
			||||||
 | 
					                            y = double.Parse(split[2]);
 | 
				
			||||||
 | 
					                            drum.Position = new Windows.Foundation.Point(x, y);
 | 
				
			||||||
 | 
					                            break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        case "size":
 | 
				
			||||||
 | 
					                            x = double.Parse(split[1]);
 | 
				
			||||||
 | 
					                            drum.Size = x;
 | 
				
			||||||
 | 
					                            break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        case "image":
 | 
				
			||||||
 | 
					                            drum.ImageSource = new Uri(split[1]);
 | 
				
			||||||
 | 
					                            break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        case "sound":
 | 
				
			||||||
 | 
					                            if (split.Length == 2)
 | 
				
			||||||
 | 
					                                drum.SetSoundSource(0, new Uri(split[1]));
 | 
				
			||||||
 | 
					                            else drum.SetSoundSource(int.Parse(split[1]), new Uri(split[2]));
 | 
				
			||||||
 | 
					                            break;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (drum != null)
 | 
				
			||||||
 | 
					                this.Drums.Add(drum);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										72
									
								
								DrumKit/SoundPlayer.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,72 @@
 | 
				
			|||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using SharpDX;
 | 
				
			||||||
 | 
					using SharpDX.XAudio2;
 | 
				
			||||||
 | 
					using SharpDX.IO;
 | 
				
			||||||
 | 
					using SharpDX.Multimedia;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace DrumKit
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    class SoundPlayer
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        private XAudio2 xaudio;
 | 
				
			||||||
 | 
					        private MasteringVoice mvoice;
 | 
				
			||||||
 | 
					        Dictionary<string, MyWave> sounds;
 | 
				
			||||||
 | 
					        SoundPool pool;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public SoundPlayer()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            xaudio = new XAudio2();
 | 
				
			||||||
 | 
					            xaudio.StartEngine();
 | 
				
			||||||
 | 
					            mvoice = new MasteringVoice(xaudio);
 | 
				
			||||||
 | 
					            sounds = new Dictionary<string, MyWave>();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public void AddWave(string key, string filepath)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            MyWave wave = new MyWave();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var nativeFileStream = new NativeFileStream(filepath, NativeFileMode.Open, NativeFileAccess.Read, NativeFileShare.Read);
 | 
				
			||||||
 | 
					            var soundStream = new SoundStream(nativeFileStream);
 | 
				
			||||||
 | 
					            var buffer = new AudioBuffer() { Stream = soundStream, AudioBytes = (int)soundStream.Length, Flags = BufferFlags.EndOfStream };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            wave.Buffer = buffer;
 | 
				
			||||||
 | 
					            wave.DecodedPacketsInfo = soundStream.DecodedPacketsInfo;
 | 
				
			||||||
 | 
					            wave.WaveFormat = soundStream.Format;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            this.sounds.Add(key, wave);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public void AddDrums(IEnumerable<Drum> drums)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            foreach (var d in drums)
 | 
				
			||||||
 | 
					                foreach (var s in d.SoundSources)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    string key = d.Name + s.Key.ToString();
 | 
				
			||||||
 | 
					                    string path = s.Value.AbsolutePath.TrimStart('\\', '/');
 | 
				
			||||||
 | 
					                    this.AddWave(key, path);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public void Play(string key)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            if (!this.sounds.ContainsKey(key)) return;
 | 
				
			||||||
 | 
					            MyWave w = this.sounds[key];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (pool == null)
 | 
				
			||||||
 | 
					                pool = new SoundPool(xaudio, w.WaveFormat);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            pool.PlayBuffer(w.Buffer, w.DecodedPacketsInfo);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    class MyWave
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        public AudioBuffer Buffer { get; set; }
 | 
				
			||||||
 | 
					        public uint[] DecodedPacketsInfo { get; set; }
 | 
				
			||||||
 | 
					        public WaveFormat WaveFormat { get; set; }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										41
									
								
								DrumKit/SoundPool.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,41 @@
 | 
				
			|||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using SharpDX;
 | 
				
			||||||
 | 
					using SharpDX.XAudio2;
 | 
				
			||||||
 | 
					using SharpDX.Multimedia;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace DrumKit
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    class SoundPool
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        List<SourceVoice> voices;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public SoundPool(XAudio2 device, WaveFormat format)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            voices = new List<SourceVoice>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            for (int i = 0; i < 64; i++)
 | 
				
			||||||
 | 
					                voices.Add(new SourceVoice(device, format, true));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public void PlayBuffer(AudioBuffer buffer, uint[] packetinfo)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            int preferred = -1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            for (int i = 0; i < voices.Count; i++)
 | 
				
			||||||
 | 
					                if (voices[i].State.BuffersQueued == 0)
 | 
				
			||||||
 | 
					                    preferred = i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (preferred != -1)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                // voices[preferred].FlushSourceBuffers();
 | 
				
			||||||
 | 
					                voices[preferred].SubmitSourceBuffer(buffer, packetinfo);
 | 
				
			||||||
 | 
					                voices[preferred].Start();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||