Exemplo n.º 1
0
        public static int LoadMidiMusic(MidiEvent[] events, int pulsesPerQuarterNode, uint frequency)
        {
            if (soundFont == 0)
            {
                var assembly = Assembly.GetExecutingAssembly();
                var stream   = assembly.GetManifestResourceStream(SoundFontResource); // Don't dispose it!
                soundFontProcs = SoundFontStream.CreateSoundFontFileProcs(stream);
                soundFont      = NativeBass.BASS_MIDI_FontInitUser(soundFontProcs, IntPtr.Zero, 0u);
            }

            const DWORD loop  = 0x04u;
            int         music = NativeBass.BASS_MIDI_StreamCreateEvents(events, (DWORD)pulsesPerQuarterNode, loop, frequency);

            var fonts = new NativeBass.MidiFont[]
            {
                new NativeBass.MidiFont()
                {
                    Font   = soundFont,
                    Preset = -1,
                    Bank   = 0
                }
            };

            NativeBass.BASS_MIDI_StreamSetFonts(music, fonts, 1u);

            return(music);
        }
Exemplo n.º 2
0
 public static void EnsureBass()
 {
     if (!Initialized)
     {
         Initialized = NativeBass.BASS_Init(-1, 44100u, 0u, 0, IntPtr.Zero);
     }
 }
Exemplo n.º 3
0
        public static void FreeBass()
        {
            if (Initialized)
            {
                foreach (var createdChannel in createdChannels.ToList())
                {
                    switch (createdChannel.Value)
                    {
                    case Music.Type.Mod:
                        FreeModMusic(createdChannel.Key);
                        break;

                    case Music.Type.Sfx:
                        FreeSfxMusic(createdChannel.Key);
                        break;

                    case Music.Type.Midi:
                        FreeMidiMusic(createdChannel.Key);
                        break;
                    }
                }

                streamProviders.Clear();

                NativeBass.BASS_Free();
            }
        }
Exemplo n.º 4
0
        public static int LoadSfxMusic(byte[] data)
        {
            const DWORD Mono           = 0x0002u;
            var         streamProvider = new WaveStreamProvider(data);

            NativeBass.StreamProcedure streamProc = streamProvider.StreamProcedure;
            int music = NativeBass.BASS_StreamCreate(8000u, 1u, Mono, streamProc, IntPtr.Zero);

            streamProviders.Add(music, streamProc);
            createdChannels.Add(music, Music.Type.Sfx);
            return(music);
        }
Exemplo n.º 5
0
        public static int LoadModMusic(byte[] data)
        {
            unsafe
            {
                fixed(byte *ptr = data)
                {
                    const DWORD MusicPT1Mod = 0x4000u;
                    int         music       = NativeBass.BASS_MusicLoad(true, ptr, 0ul, (DWORD)data.Length, MusicPT1Mod, 44100u);

                    createdChannels.Add(music, Music.Type.Mod);
                    return(music);
                }
            }
        }
Exemplo n.º 6
0
 public static void Pause(int music)
 {
     NativeBass.BASS_ChannelPause((DWORD)music);
 }
Exemplo n.º 7
0
        public static void SetVolume(int music, float volume)
        {
            const DWORD Volume = 0x02u;

            NativeBass.BASS_ChannelSetAttribute((DWORD)music, Volume, volume);
        }
Exemplo n.º 8
0
 public static void Play(int music, bool restart)
 {
     NativeBass.BASS_ChannelPlay((DWORD)music, restart);
 }
Exemplo n.º 9
0
 public static void Stop(int music)
 {
     NativeBass.BASS_ChannelStop((DWORD)music);
 }
Exemplo n.º 10
0
 public static void PauseAll()
 {
     NativeBass.BASS_Pause();
 }
Exemplo n.º 11
0
 public static void StopAll()
 {
     NativeBass.BASS_Stop();
 }
Exemplo n.º 12
0
 public static void StartAll()
 {
     NativeBass.BASS_Start();
 }
Exemplo n.º 13
0
 public static void FreeMidiMusic(int music)
 {
     createdChannels.Remove(music);
     NativeBass.BASS_StreamFree(music);
 }
Exemplo n.º 14
0
 public static void FreeModMusic(int music)
 {
     createdChannels.Remove(music);
     NativeBass.BASS_MusicFree(music);
 }