add FNA dependency
parent
b6bf39e3c9
commit
dbfcd15ca2
|
@ -0,0 +1,3 @@
|
||||||
|
bin
|
||||||
|
obj
|
||||||
|
.vs
|
|
@ -0,0 +1,12 @@
|
||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>netstandard2.0</TargetFramework>
|
||||||
|
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\FNA\FNA.Core.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
|
@ -0,0 +1,12 @@
|
||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net472</TargetFramework>
|
||||||
|
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\FNA\FNA.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
|
@ -1,8 +1,9 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
using Microsoft.Xna.Framework;
|
||||||
|
|
||||||
namespace MoonWorks.Audio
|
namespace FineAudio
|
||||||
{
|
{
|
||||||
public class AudioDevice : IDisposable
|
public class AudioDevice : IDisposable
|
||||||
{
|
{
|
||||||
|
@ -34,7 +35,7 @@ namespace MoonWorks.Audio
|
||||||
|
|
||||||
if (devices == 0)
|
if (devices == 0)
|
||||||
{
|
{
|
||||||
Logger.LogError("No audio devices found!");
|
FNALoggerEXT.LogError("No audio devices found!");
|
||||||
Handle = IntPtr.Zero;
|
Handle = IntPtr.Zero;
|
||||||
FAudio.FAudio_Release(Handle);
|
FAudio.FAudio_Release(Handle);
|
||||||
return;
|
return;
|
||||||
|
@ -81,7 +82,7 @@ namespace MoonWorks.Audio
|
||||||
IntPtr.Zero
|
IntPtr.Zero
|
||||||
) != 0)
|
) != 0)
|
||||||
{
|
{
|
||||||
Logger.LogError("No mastering voice found!");
|
FNALoggerEXT.LogError("No mastering voice found!");
|
||||||
Handle = IntPtr.Zero;
|
Handle = IntPtr.Zero;
|
||||||
FAudio.FAudio_Release(Handle);
|
FAudio.FAudio_Release(Handle);
|
||||||
return;
|
return;
|
|
@ -1,8 +1,8 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
using MoonWorks.Math;
|
using Microsoft.Xna.Framework;
|
||||||
|
|
||||||
namespace MoonWorks.Audio
|
namespace FineAudio
|
||||||
{
|
{
|
||||||
public class AudioEmitter : AudioResource
|
public class AudioEmitter : AudioResource
|
||||||
{
|
{
|
|
@ -1,7 +1,7 @@
|
||||||
using System;
|
using System;
|
||||||
using MoonWorks.Math;
|
using Microsoft.Xna.Framework;
|
||||||
|
|
||||||
namespace MoonWorks.Audio
|
namespace FineAudio
|
||||||
{
|
{
|
||||||
public class AudioListener : AudioResource
|
public class AudioListener : AudioResource
|
||||||
{
|
{
|
|
@ -1,6 +1,6 @@
|
||||||
using System;
|
using System;
|
||||||
|
|
||||||
namespace MoonWorks.Audio
|
namespace FineAudio
|
||||||
{
|
{
|
||||||
public abstract class AudioResource : IDisposable
|
public abstract class AudioResource : IDisposable
|
||||||
{
|
{
|
|
@ -1,8 +1,8 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
using MoonWorks.Math;
|
using Microsoft.Xna.Framework;
|
||||||
|
|
||||||
namespace MoonWorks.Audio
|
namespace FineAudio
|
||||||
{
|
{
|
||||||
public abstract class SoundInstance : AudioResource
|
public abstract class SoundInstance : AudioResource
|
||||||
{
|
{
|
||||||
|
@ -195,7 +195,7 @@ namespace MoonWorks.Audio
|
||||||
|
|
||||||
if (Handle == IntPtr.Zero)
|
if (Handle == IntPtr.Zero)
|
||||||
{
|
{
|
||||||
Logger.LogError("SoundInstance failed to initialize!");
|
FNALoggerEXT.LogError("SoundInstance failed to initialize!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
namespace MoonWorks.Audio
|
namespace FineAudio
|
||||||
{
|
{
|
||||||
public enum SoundState
|
public enum SoundState
|
||||||
{
|
{
|
|
@ -3,7 +3,7 @@ using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
namespace MoonWorks.Audio
|
namespace FineAudio
|
||||||
{
|
{
|
||||||
public class StaticSound : AudioResource
|
public class StaticSound : AudioResource
|
||||||
{
|
{
|
||||||
|
@ -19,37 +19,6 @@ namespace MoonWorks.Audio
|
||||||
|
|
||||||
private Stack<StaticSoundInstance> Instances = new Stack<StaticSoundInstance>();
|
private Stack<StaticSoundInstance> Instances = new Stack<StaticSoundInstance>();
|
||||||
|
|
||||||
public static StaticSound LoadOgg(AudioDevice device, string filePath)
|
|
||||||
{
|
|
||||||
var filePointer = FAudio.stb_vorbis_open_filename(filePath, out var error, IntPtr.Zero);
|
|
||||||
|
|
||||||
if (error != 0)
|
|
||||||
{
|
|
||||||
throw new AudioLoadException("Error loading file!");
|
|
||||||
}
|
|
||||||
var info = FAudio.stb_vorbis_get_info(filePointer);
|
|
||||||
var bufferSize = FAudio.stb_vorbis_stream_length_in_samples(filePointer) * info.channels;
|
|
||||||
var buffer = new float[bufferSize];
|
|
||||||
|
|
||||||
FAudio.stb_vorbis_get_samples_float_interleaved(
|
|
||||||
filePointer,
|
|
||||||
info.channels,
|
|
||||||
buffer,
|
|
||||||
(int) bufferSize
|
|
||||||
);
|
|
||||||
|
|
||||||
FAudio.stb_vorbis_close(filePointer);
|
|
||||||
|
|
||||||
return new StaticSound(
|
|
||||||
device,
|
|
||||||
(ushort) info.channels,
|
|
||||||
info.sample_rate,
|
|
||||||
buffer,
|
|
||||||
0,
|
|
||||||
(uint) buffer.Length
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
// mostly borrowed from https://github.com/FNA-XNA/FNA/blob/b71b4a35ae59970ff0070dea6f8620856d8d4fec/src/Audio/SoundEffect.cs#L385
|
// mostly borrowed from https://github.com/FNA-XNA/FNA/blob/b71b4a35ae59970ff0070dea6f8620856d8d4fec/src/Audio/SoundEffect.cs#L385
|
||||||
public static StaticSound LoadWav(AudioDevice device, string filePath)
|
public static StaticSound LoadWav(AudioDevice device, string filePath)
|
||||||
{
|
{
|
|
@ -1,6 +1,6 @@
|
||||||
using System;
|
using System;
|
||||||
|
|
||||||
namespace MoonWorks.Audio
|
namespace FineAudio
|
||||||
{
|
{
|
||||||
public class StaticSoundInstance : SoundInstance
|
public class StaticSoundInstance : SoundInstance
|
||||||
{
|
{
|
|
@ -2,7 +2,7 @@
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
namespace MoonWorks.Audio
|
namespace FineAudio
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// For streaming long playback.
|
/// For streaming long playback.
|
|
@ -1,8 +1,9 @@
|
||||||
using System;
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
using Microsoft.Xna.Framework;
|
||||||
|
|
||||||
namespace MoonWorks.Audio
|
namespace FineAudio
|
||||||
{
|
{
|
||||||
public class StreamingSoundOgg : StreamingSound
|
public class StreamingSoundOgg : StreamingSound
|
||||||
{
|
{
|
||||||
|
@ -26,9 +27,9 @@ namespace MoonWorks.Audio
|
||||||
if (error != 0)
|
if (error != 0)
|
||||||
{
|
{
|
||||||
((GCHandle) fileDataPtr).Free();
|
((GCHandle) fileDataPtr).Free();
|
||||||
Logger.LogError("Error opening OGG file!");
|
FNALoggerEXT.LogError("Error opening OGG file!");
|
||||||
Logger.LogError("Error: " + error);
|
FNALoggerEXT.LogError("Error: " + error);
|
||||||
throw new AudioLoadException("Error opening OGG file!");
|
throw new System.ArgumentException("OGG file not valid!");
|
||||||
}
|
}
|
||||||
var info = FAudio.stb_vorbis_get_info(vorbisHandle);
|
var info = FAudio.stb_vorbis_get_info(vorbisHandle);
|
||||||
|
|
Loading…
Reference in New Issue