Подключил библиотеки и... функция fbs_Init() не работает!
|
|
ExE | Дата: Суббота, 05.12.2015, 14:52 | Сообщение # 1 |
Сержант
Группа: Пользователи
Сообщений: 21
Статус: 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 |
Генералиссимус
Группа: Администраторы
Сообщений: 1361
Статус: 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
Статус: 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 |
Генералиссимус
Группа: Администраторы
Сообщений: 1361
Статус: 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
Статус: Offline
| Попробовл. Не работает. Придется видимо или скачивать другую библиотеку (сомневаюсь что у меня что то получится), или забыть о звуках навсегда. Ну или попытаться освоить API, что долго, трудно, и не понятно.
|
|
| |
haav | Дата: Воскресенье, 06.12.2015, 10:41 | Сообщение # 6 |
Генералиссимус
Группа: Администраторы
Сообщений: 1361
Статус: Offline
| Цитата ExE ( ) Попробовл. Не работает. Придется видимо или скачивать другую библиотеку (сомневаюсь что у меня что то получится), или забыть о звуках навсегда. Ну или попытаться освоить API, что долго, трудно, и не понятно.
Обнови компилятор, у меня же работает этот пример. Я пользуюсь 1.03 , но думаю и на 1.04 должно работать.
Цитата или забыть о звуках навсегда
Зачем так резко-то? Есть Fmod, Bass, OpenAl. Но в любом случае без изучения не обойтись Если игра будет только под винду, то есть вообще простые API для проигрывания (в одну-две строчки).
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
|
| |
ExE | Дата: Воскресенье, 06.12.2015, 15:58 | Сообщение # 7 |
Сержант
Группа: Пользователи
Сообщений: 21
Статус: 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 |
Генералиссимус
Группа: Администраторы
Сообщений: 1361
Статус: 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
Статус: 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 |
Генералиссимус
Группа: Администраторы
Сообщений: 1361
Статус: 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
Статус: Offline
| Цитата Обычно готовые примеры в первую очередь пробуют, а потом начинают экспериментировать. Так ты про это! Я просто не понял. Примеры я в первую очередь опробовал.
Цитата Ну конечно быстро. Что такое день в понимании программиста? Я забыл сказать, я не совсем программист. Для меня freebasic это просто хобби. Один день для меня - ужасно много, ведь я учусь в меде, и свободное время у меня бывает только на выходных, и то не всегда. Цитата Продекларируй функцию так: Пробовал. Получается куча ошибок. Но попробую еще раз.Добавлено (06.12.2015, 18:11) --------------------------------------------- Ура! Заработало через API! Спасибо, большего и не надо.
|
|
| |
haav | Дата: Воскресенье, 06.12.2015, 18:13 | Сообщение # 12 |
Генералиссимус
Группа: Администраторы
Сообщений: 1361
Статус: Offline
| Цитата ExE ( ) Так ты про это! Я просто не понял. Примеры я в первую очередь опробовал.
Они работают правильно?
Цитата ExE ( ) Я забыл сказать, я не совсем программист. Для меня freebasic это просто хобби. Один день для меня - ужасно много, ведь я учусь в меде, и свободное время у меня бывает только на выходных, и то не всегда.
Так я и не говорил, что я неделями напролет теребил одну и ту же проблему. Ну не получилось сегодня, будет свободное время , поймешь в чем дело и решишь проблему. Думаю, что ты намутил что-то с заголовками и библиотеками, возможно перемешал со старыми.
Цитата ExE ( ) Пробовал. Получается куча ошибок. Но попробую еще раз.
Какие ошибки выдает компилятор?
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
|
| |
ExE | Дата: Воскресенье, 06.12.2015, 19:27 | Сообщение # 13 |
Сержант
Группа: Пользователи
Сообщений: 21
Статус: Offline
| Цитата haav ( ) Какие ошибки выдает компилятор? Никаких, все работает.
Цитата haav ( ) Так я и не говорил, что я неделями напролет теребил одну и ту же проблему. Ну не получилось сегодня, будет свободное время , поймешь в чем дело и решишь проблему. Думаю, что ты намутил что-то с заголовками и библиотеками, возможно перемешал со старыми. Может и так.
Про PlaySound()
Нашел классный саундтрек, в формате mp3, весил 14 МБ. Перевел в WAV - 64МБ! XD
|
|
| |
haav | Дата: Воскресенье, 06.12.2015, 20:15 | Сообщение # 14 |
Генералиссимус
Группа: Администраторы
Сообщений: 1361
Статус: Offline
| Цитата ExE ( ) Про PlaySound()
Нашел классный саундтрек, в формате mp3, весил 14 МБ. Перевел в WAV - 64МБ! XD
Зачем кодировать? Размер только увеличивать... Можно и mp3 проиграть с помощью несложных winapi. Будет желание , можешь попробовать mciSendString. Здесь примеры: http://free-basic.ru/mcisendstring.html .
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
|
| |
|