began working on audio system; added Naudio;
This commit is contained in:
parent
a4bedd34af
commit
6086c6491b
@ -47,6 +47,9 @@
|
||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Zer01HD\Audio\MusicController.cs" />
|
||||
<Compile Include="Zer01HD\Audio\MusicList.cs" />
|
||||
<Compile Include="Zer01HD\Audio\SupportedFormats.cs" />
|
||||
<Compile Include="Zer01HD\Screens\MainMenu\MainPage.cs" />
|
||||
<Compile Include="Zer01HD\Screens\Transitions\FadeAwayTransition.cs" />
|
||||
<Compile Include="Zer01HD\Utilities\Camera\Camera2D.cs" />
|
||||
@ -85,12 +88,12 @@
|
||||
<Reference Include="BulletSharp, Version=0.11.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\BulletSharp.0.11.1\lib\net40-client\BulletSharp.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DSP, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\DSP.1.0.0\lib\DSP.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="MonoGame.Framework">
|
||||
<HintPath>$(MonoGameInstallDirectory)\MonoGame\v3.0\Assemblies\DesktopGL\MonoGame.Framework.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="NAudio, Version=1.8.5.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\NAudio.1.8.5\lib\net35\NAudio.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
@ -147,7 +150,9 @@
|
||||
<None Include="app.manifest" />
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<ItemGroup>
|
||||
<Folder Include="Zer01HD\Audio\Visualizer\" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<Import Project="$(MSBuildExtensionsPath)\MonoGame\v3.0\MonoGame.Content.Builder.targets" />
|
||||
<Import Project="..\packages\BulletSharp.0.11.1\build\net40-client\BulletSharp.targets" Condition="Exists('..\packages\BulletSharp.0.11.1\build\net40-client\BulletSharp.targets')" />
|
||||
|
26
RhythmBullet/Zer01HD/Audio/MusicController.cs
Normal file
26
RhythmBullet/Zer01HD/Audio/MusicController.cs
Normal file
@ -0,0 +1,26 @@
|
||||
using Microsoft.Xna.Framework.Media;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace RhythmBullet.Zer01HD.Audio
|
||||
{
|
||||
internal class MusicController
|
||||
{
|
||||
MusicList musicList;
|
||||
|
||||
public MusicController(MusicList musicList)
|
||||
{
|
||||
this.musicList = musicList;
|
||||
}
|
||||
|
||||
public void LoadMusic(string path)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
93
RhythmBullet/Zer01HD/Audio/MusicList.cs
Normal file
93
RhythmBullet/Zer01HD/Audio/MusicList.cs
Normal file
@ -0,0 +1,93 @@
|
||||
using Microsoft.Xna.Framework.Media;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace RhythmBullet.Zer01HD.Audio
|
||||
{
|
||||
internal class MusicList
|
||||
{
|
||||
private volatile bool work;
|
||||
private List<string> list = new List<string>();
|
||||
public List<string> List
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!thread.IsAlive)
|
||||
{
|
||||
lock (list)
|
||||
{
|
||||
return list;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
private string path;
|
||||
private Thread thread;
|
||||
|
||||
public MusicList()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void Start()
|
||||
{
|
||||
if (thread == null || !thread.IsAlive)
|
||||
{
|
||||
work = true;
|
||||
thread = new Thread(Search);
|
||||
thread.Name = "Music Search Thread";
|
||||
thread.Start();
|
||||
}
|
||||
}
|
||||
|
||||
public void Stop()
|
||||
{
|
||||
work = false;
|
||||
}
|
||||
|
||||
private void Search()
|
||||
{
|
||||
lock (list)
|
||||
{
|
||||
list.AddRange(recursiveMusicSearch(path));
|
||||
}
|
||||
}
|
||||
|
||||
private List<string> recursiveMusicSearch(string path)
|
||||
{
|
||||
List<string> musicFiles = new List<string>();
|
||||
string[] files = Directory.GetFiles(path);
|
||||
for (int i = 0; i < files.Length && work; i++)
|
||||
{
|
||||
if (Directory.Exists(files[i]))
|
||||
{
|
||||
musicFiles.AddRange(recursiveMusicSearch(files[i]));
|
||||
}
|
||||
else
|
||||
{
|
||||
try
|
||||
{
|
||||
SupportedFormats format;
|
||||
Enum.TryParse<SupportedFormats>(Path.GetExtension(files[i]).ToUpper(), out format);
|
||||
musicFiles.Add(files[i]);
|
||||
}
|
||||
catch (ArgumentException e)
|
||||
{
|
||||
Console.WriteLine("MusicList", "Unsupported file format: " + Path.GetFileName(files[i]));
|
||||
Console.WriteLine(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
return musicFiles;
|
||||
}
|
||||
}
|
||||
}
|
13
RhythmBullet/Zer01HD/Audio/SupportedFormats.cs
Normal file
13
RhythmBullet/Zer01HD/Audio/SupportedFormats.cs
Normal file
@ -0,0 +1,13 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace RhythmBullet.Zer01HD.Audio
|
||||
{
|
||||
public enum SupportedFormats
|
||||
{
|
||||
WAV, MP3
|
||||
}
|
||||
}
|
@ -74,8 +74,7 @@ namespace RhythmBullet.Zer01HD.Utilities.ContentSystem
|
||||
{
|
||||
if (queue.Count > 0 && (thread == null || !thread.IsAlive))
|
||||
{
|
||||
ThreadStart threadStart = new ThreadStart(LoadBatch);
|
||||
thread = new Thread(threadStart);
|
||||
thread = new Thread(LoadBatch);
|
||||
thread.Start();
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="BulletSharp" version="0.11.1" targetFramework="net45" />
|
||||
<package id="DSP" version="1.0.0" targetFramework="net45" />
|
||||
<package id="NAudio" version="1.8.5" targetFramework="net45" />
|
||||
</packages>
|
Loading…
x
Reference in New Issue
Block a user