FreeBasic
Главная
Вход
Регистрация
Воскресенье, 24.09.2017, 18:40Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Форум » Freebasic » Вопросы по языку FreeBasic » Подключил библиотеки и... функция fbs_Init() не работает! (проблемы с fbsound)
Подключил библиотеки и... функция fbs_Init() не работает!
ExEДата: Суббота, 05.12.2015, 14:52 | Сообщение # 1
Сержант
Группа: Пользователи
Сообщений: 21
Репутация: 0
Статус: Offline
Дисклеймер: Вы правы. Сам всеми фибрами души ощущаю свою глупость и бессилие.

В прошлом вопросе мне объяснили, что версия библиотеки не та, да и установил я ее не правильно. Но вот все устаканилось, отладчик перестал истерить, и я решил попробовать...

Взял за основу вложенный в файлы пример "test02_window". Просмотрел его, вроде бы понял что, и зачем. Написал следующее:

#Include "fbsound.bi"
fbs_Init()
Dim As Integer music
fbs_Load_MP3File("music.mp3",@music)
fbs_Play_Wave(music)

И тишина. Путем нехитрых манипуляций выяснил следующее: не сработала fbs_Init(). Вот кстати манипуляции:

#Include "fbsound.bi"
fbs_Init()Dim As Integer music
Dim As FBSBOOLEAN ok = fbs_Load_MP3File("music.mp3",@music)If ok = false Then Print"Error Init"fbs_Play_Wave(music)

Я пробовал разобраться, честное слово, но я в тупике. Вопрос: почему и как исправить?

PS: компилятор 1.0, fbsound 0.20
 
haavДата: Суббота, 05.12.2015, 17:47 | Сообщение # 2
Генерал-лейтенант
Группа: Администраторы
Сообщений: 768
Репутация: 33
Статус: Offline
Цитата
#Include "fbsound.bi"
fbs_Init()
Dim As Integer music
fbs_Load_MP3File("music.mp3",@music)
fbs_Play_Wave(music)

В данном случае простейший пример, где вся синхронизация проигрывания лежит на пользователе. В этом примере нужно просто зациклить программу. В конце можно поставить Sleep, или какой нибудь цикл с возможностью выхода по нажатию клавиши. Естественно после проигрывания файла , программа будет и дальше ожидать нажатия клавиши. Так же нажатие клавиши прервет программу и соответственно  проигрывание , если пользователь нажмет клавишу во время проигрывания.  Для того, чтобы отыграть файл подобно плееру (то есть отслеживать конец трека и передать управление), нужно смотреть другие примеры и изучать принципы построения подобного кода.  Я не использовал данную библиотеку, но уверен там такие механизмы есть.

Цитата ExE ()
Путем нехитрых манипуляций выяснил следующее: не сработала fbs_Init(). Вот кстати манипуляции:

Путь к файлу music.mp3 точно указан верно? Судя по выложенному коду , mp3 файл должен быть в одной папке с файлом программы.


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
ExEДата: Суббота, 05.12.2015, 23:39 | Сообщение # 3
Сержант
Группа: Пользователи
Сообщений: 21
Репутация: 0
Статус: Offline

Цитата
В данном случае простейший пример, где вся синхронизация проигрывания лежит на пользователе. В этом примере нужно просто зациклить программу.


Зацикливать пробовал, звука нет. Естественно в примере он идет.
Цитата
Путь к файлу music.mp3 точно указан верно? Судя по выложенному коду , mp3 файл должен быть в одной папке с файлом программы.
 
Об этом я знаю, и файл программы лежит вместе с аудио файлом. Вопрос остается открытым.

Зациклил так:

#Include "fbsound.bi"
Do
Dim As Integer hWave
fbs_Init()
fbs_Load_WAVFile("pcar.wav",@hWave)
fbs_Play_Wave (hWave)
Loop Until InKey = "q"
End
 
haavДата: Воскресенье, 06.12.2015, 07:03 | Сообщение # 4
Генерал-лейтенант
Группа: Администраторы
Сообщений: 768
Репутация: 33
Статус: Offline
Попробуй так:


Код
#Include "fbsound.bi"
Dim As Integer hWave
fbs_Init()
fbs_Load_WAVFile("pcar.wav",@hWave)
fbs_Play_Wave (hWave)
Do
Loop Until InKey = "q"
End


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
ExEДата: Воскресенье, 06.12.2015, 10:28 | Сообщение # 5
Сержант
Группа: Пользователи
Сообщений: 21
Репутация: 0
Статус: Offline
Попробовл. Не работает. Придется видимо или скачивать другую библиотеку (сомневаюсь что у меня что то получится), или забыть о звуках навсегда. Ну или попытаться освоить API, что долго, трудно, и не понятно.  cry
 
haavДата: Воскресенье, 06.12.2015, 10:41 | Сообщение # 6
Генерал-лейтенант
Группа: Администраторы
Сообщений: 768
Репутация: 33
Статус: Offline
Цитата ExE ()
Попробовл. Не работает. Придется видимо или скачивать другую библиотеку (сомневаюсь что у меня что то получится), или забыть о звуках навсегда. Ну или попытаться освоить API, что долго, трудно, и не понятно.


Обнови компилятор, у меня же работает этот пример. Я пользуюсь 1.03 , но думаю и на 1.04 должно работать.

Цитата
или забыть о звуках навсегда


Зачем так резко-то? Есть Fmod, Bass, OpenAl. Но в любом случае без изучения не обойтись smile Если игра будет только под винду, то есть вообще простые API для проигрывания (в одну-две строчки).


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
ExEДата: Воскресенье, 06.12.2015, 15:58 | Сообщение # 7
Сержант
Группа: Пользователи
Сообщений: 21
Репутация: 0
Статус: Offline
Пробую так и этак... Не выходит. Перешел на API. Скомпилировал:

#Include "windows.bi"

Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (As String,As Integer,As Integer)As Integer
PlaySound ("pcar.wav", NULL,0)
Do:Loop Until InKey = "q"
End

Выдает только звук характерный для винды кода кликаешь на рабочий стол, а окно должно быть отработанно обязательно. Ну знаете, такой "динг!". Вот пример на C ++:

PlaySound(TEXT("recycle.wav"), NULL, SND_FILENAME);

Что я сделал не так?
 
haavДата: Воскресенье, 06.12.2015, 16:35 | Сообщение # 8
Генерал-лейтенант
Группа: Администраторы
Сообщений: 768
Репутация: 33
Статус: Offline
Цитата ExE ()
Пробую так и этак... Не выходит. Перешел на API.


Быстро сдался. У всех работает, а у тебя нет, даже странно. Ты пробовал запускать батник (bat файл) автора, а потом скомпилированные примеры? (просто распаковать архив fbsound и скомпилировать с помощью bat файла, естественно указав в батнике путь к компилятору). Или тоже не работает? Пробовал компилятор более новой версии? Насколько я помню при использовании версии компилятора 1.0 на тот момент существовала версия fbsound 0.19 . Можешь скачать мою сборку, там и компилятор 1.0 и fbsound 0.19 . Потестируй, если будет работать, вытащишь оттуда fbsound.

Цитата ExE ()
Выдает только звук характерный для винды кода кликаешь на рабочий стол, а окно должно быть отработанно обязательно. Ну знаете, такой "динг!".


Вообще не понял ничего из написанного.


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
ExEДата: Воскресенье, 06.12.2015, 17:32 | Сообщение # 9
Сержант
Группа: Пользователи
Сообщений: 21
Репутация: 0
Статус: Offline

Цитата
Быстро сдался.

Что значит быстро? Я об этом не писал, но весь этот день был посвящен проблемой с fbsound. Версия компилятора 1.0.4.
Через bat не пробовал, но я уже вымотан, и пробовать сегодня не собираюсь. 
Цитата
Вообще не понял ничего из написанного.
 
Не знаю как этот звук называется, вроде бы "ошибка" или как то так. Вобщем не работает.

Добавлено (06.12.2015, 17:32)
---------------------------------------------


Цитата
Можешь скачать мою сборку, там и компилятор 1.0 и fbsound 0.19 . Потестируй, если будет работать, вытащишь оттуда fbsound.
 
Смеюсь и плачу одновременно. Не сработало. Кстати, давно хотел спросить на счет плагинов для FBEdit, которые позволяют писать по русски. Попробую распотрошить сборку, может и найду...
 
haavДата: Воскресенье, 06.12.2015, 17:36 | Сообщение # 10
Генерал-лейтенант
Группа: Администраторы
Сообщений: 768
Репутация: 33
Статус: Offline
Цитата ExE ()
Что значит быстро? Я об этом не писал, но весь этот день был посвящен проблемой с fbsound. Версия компилятора 1.0.4.


Ну конечно быстро. Что такое день в понимании программиста? Я на некоторые проблемы тратил недели. А вот этот пример я вообще не мог написать несколько лет (не получалось и все тут). Точнее я его много раз дописывал\правил, получая из сети какую-нибудь новую информацию, но пример работал неправильно или вообще не работал. Я его отбрасывал, а через несколько месяцев опять теребил и так пока не получилось.

Цитата ExE ()
Через bat не пробовал


Обычно готовые примеры в первую очередь пробуют, а потом начинают экспериментировать.

Цитата ExE ()
но я уже вымотан, и пробовать сегодня не собираюсь.


Хозяин-барин , в конце концов это тебе нужно.

Цитата ExE ()
#Include "windows.bi"

Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (As String,As Integer,As Integer)As Integer
PlaySound ("pcar.wav", NULL,0)
Do:Loop Until InKey = "q"
End


Продекларируй функцию так:

Код
Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (As ZString ptr,As Integer,As Integer)As Integer


--------------------- Добавлено позже --------------------

Ссылку на пример неверную дал, сейчас исправлено


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
ExEДата: Воскресенье, 06.12.2015, 18:11 | Сообщение # 11
Сержант
Группа: Пользователи
Сообщений: 21
Репутация: 0
Статус: Offline

Цитата
Обычно готовые примеры в первую очередь пробуют, а потом начинают экспериментировать.

Так ты про это! Я просто не понял. Примеры я в первую очередь опробовал.


Цитата
Ну конечно быстро. Что такое день в понимании программиста?

Я забыл сказать, я не совсем программист. Для меня freebasic  это просто хобби. Один день для меня - ужасно много, ведь я учусь в меде, и свободное время у меня бывает только на выходных, и то не всегда.

Цитата
Продекларируй функцию так:

Пробовал. Получается куча ошибок. Но попробую еще раз.

Добавлено (06.12.2015, 18:11)
---------------------------------------------
Ура! Заработало через API! Спасибо, большего и не надо.

 
haavДата: Воскресенье, 06.12.2015, 18:13 | Сообщение # 12
Генерал-лейтенант
Группа: Администраторы
Сообщений: 768
Репутация: 33
Статус: Offline
Цитата ExE ()
Так ты про это! Я просто не понял. Примеры я в первую очередь опробовал.


Они работают правильно?

Цитата ExE ()
Я забыл сказать, я не совсем программист. Для меня freebasic это просто хобби. Один день для меня - ужасно много, ведь я учусь в меде, и свободное время у меня бывает только на выходных, и то не всегда.


Так я и не говорил, что я неделями напролет теребил одну и ту же проблему. Ну не получилось сегодня, будет свободное время , поймешь в чем дело и решишь проблему. Думаю, что ты намутил что-то с заголовками и библиотеками, возможно перемешал со старыми.

Цитата ExE ()
Пробовал. Получается куча ошибок. Но попробую еще раз.


Какие ошибки выдает компилятор?


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
ExEДата: Воскресенье, 06.12.2015, 19:27 | Сообщение # 13
Сержант
Группа: Пользователи
Сообщений: 21
Репутация: 0
Статус: Offline
Цитата haav ()
Какие ошибки выдает компилятор?

Никаких, все работает.
Цитата haav ()
Так я и не говорил, что я неделями напролет теребил одну и ту же проблему. Ну не получилось сегодня, будет свободное время , поймешь в чем дело и решишь проблему. Думаю, что ты намутил что-то с заголовками и библиотеками, возможно перемешал со старыми.

Может и так.

Про PlaySound()

Нашел классный саундтрек, в формате mp3, весил 14 МБ. Перевел в WAV - 64МБ! XD
 
haavДата: Воскресенье, 06.12.2015, 20:15 | Сообщение # 14
Генерал-лейтенант
Группа: Администраторы
Сообщений: 768
Репутация: 33
Статус: Offline
Цитата ExE ()
Про PlaySound()

Нашел классный саундтрек, в формате mp3, весил 14 МБ. Перевел в WAV - 64МБ! XD


Зачем кодировать? Размер только увеличивать... Можно и mp3 проиграть с помощью несложных winapi. Будет желание , можешь попробовать mciSendString. Здесь примеры: http://free-basic.ru/mcisendstring.html .


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
Форум » Freebasic » Вопросы по языку FreeBasic » Подключил библиотеки и... функция fbs_Init() не работает! (проблемы с fbsound)
Страница 1 из 11
Поиск: