Вопросы про звук (FMOD) и про фрэймворк

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Master_Zolan
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 63
Зарегистрирован: 07.10.2008 (Вт) 12:11
Откуда: г. Ростов-на-Дону

Вопросы про звук (FMOD) и про фрэймворк

Сообщение Master_Zolan » 19.08.2009 (Ср) 14:04

1. Мне нужно в игре реализовать два(ну может три) парралельных звуковых потока (то есть музыку и звуки)- стандартный медиаплеер этого не может. Да и MP3 не читает... (а хотелось бы)... DirecX на этот раз не использую. Есть примеры, как реализовать это с BASS или FMOD?
2. Есть ли возможность скомпилировать программу так, чтобы она не требовала фреймворк на машине, а включала, только неоходимое сама?
...или как-то так...

Admiralisimys
Постоялец
Постоялец
 
Сообщения: 318
Зарегистрирован: 01.06.2009 (Пн) 10:26

Re: Вопросы про звук (FMOD) и про фрэймворк

Сообщение Admiralisimys » 20.08.2009 (Чт) 13:00

Master_Zolan
1. Возьмём к примеру Bass, даже на базе самого первого примера ("%USERPROFILE%\Application
Data\BASS.NET\Samples\VB\VB_MyFirstBass") можно прикинуть следующий мультипотоковый проигрыватель
Код: Выделить всё
'Bass.Net.dll версии 2.4.5.0 не совместим с .NET1.X
'Для компиляции исходника в консоли набрать %SystemRoot%\Microsoft.NET\Framework\v2.0.50727\vbc BassStreemSample.vb /r:bass.net.dll
'или %SystemRoot%\Microsoft.NET\Framework\v3.5\vbc BassStreemSample.vb /r:bass.net.dll
Imports System
Imports Un4seen.Bass

Class Bass1
    Shared Sub Main(ByVal CmdArgs() As String)
        If CmdArgs.Length < 1 Then
            Console.WriteLine(Command$() & " bad using")
            Return
        End If
        ' init BASS using the default output device
        If Bass.BASS_Init(-1, 44100, BASSInit.BASS_DEVICE_DEFAULT, IntPtr.Zero) Then
            Dim i As Integer = 0
            For Each st As String In CmdArgs
                i += 1
            Next
            Dim streams(i - 1) As Integer
            For i = 0 To streams.Length - 1
                streams(i) = Bass.BASS_StreamCreateFile(CmdArgs(i), 0, 0, BASSFlag.BASS_DEFAULT)
                If streams(i) <> 0 Then
                    ' play the stream channel
                    Bass.BASS_ChannelPlay(streams(i), False)
                Else
                    ' error creating the stream
                    Console.WriteLine("Stream error: {0}", Bass.BASS_ErrorGetCode())
                End If
                System.Threading.Thread.Sleep(500)
            Next
            ' wait for a key
            Console.WriteLine("Press any key to exit")
            Console.ReadKey(False)
            For i = 0 To streams.Length - 1
                ' free the stream
                Bass.BASS_StreamFree(streams(i))
            Next
            ' free BASS
            Bass.BASS_Free()
        End If
    End Sub
End Class

Использовать так: BassStreemSample.exe 1.mp3 2.mp3 3.mp3 и т.д. сколько нужно потоков, пауза между стартами потоков установлена в 500 миллисекунд.
В коде не предусмотрена проверка на существования mp3 файлов
Bass.Net.dll понадобится не только для компиляции, но и для запуска, а bass.dll нужен только для запуска.
Более серьёзный пример, демонстрирующий возможности аудио библиотеке здесь "%USERPROFILE%\Application Data\BASS.NET\Samples\VB\StreamTest"
P.S. Все пути на примеры действительны после установки Bass.Net

2.В студии есть возможность организовать инсталлятор, где помимо прочего можно указать включить установщик соответствующего Фреймворка, причём, если не ошибаюсь, установщик может быть полноценным так и веб. Перед запуском программы установка Фреймворка обязательна. Начиная с версии .NET 3.5 SP1 появились так называемые клиентские профили, которая и призвана качать по необходимости недостающие библиотеки, однако не доводилось пока воспользоваться данной технологией.

Master_Zolan
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 63
Зарегистрирован: 07.10.2008 (Вт) 12:11
Откуда: г. Ростов-на-Дону

Re: Вопросы про звук (FMOD) и про фрэймворк

Сообщение Master_Zolan » 20.08.2009 (Чт) 13:13

спасибо !!!! дома попробую! :D
...или как-то так...


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 35

    TopList