Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 18 odgovora
  • 5.922 pregleda

Najnovija ↓

Kako rjesiti ovaj problem sa zvukom 16.08.2005. u 16:42 · pre 258 meseci #1
Koristim openGL (C++) i sledeci kod za pustanje zvuka u aplikacijama.
Code:
#pragma comment(lib,"winmm.lib");

I ovo je osnovna funkcija.
Code:
PlaySound("Sound/atmos.wav",NULL,SND_ASYNC);


E sve to radi, samo ima jedan bitan problem koji ne znam da rijesim ,a to je kada se pokrene neki novi zvuk postojeci se zaustavi.
Tako da nemogu u isto vrijeme imati recimo backgroun zvuk i zvuk ostalih dijelova igre, recimo pucanj, govor itd.
Nego kada ja pritisnem recimo spacebar za pucanj on pokrene odgovarajuci zvuk, ali stopira sve ostale.
E ako neko zna kako da ovo rijesim ...
Potpis
Never argue with an idiot. They bring you down to their level and beat you with
experience.
Re: Kako rjesiti ovaj problem sa zvukom 16.08.2005. u 17:54 · pre 258 meseci #2
moj ti je savet da probas nesto drugo kao npr fmod,bass ili audiere.wav-ovi su veliki za igrice,koristi nesto kao ogg ili mp3.ako bas moras da koristis ovo onda pokusaj da pronadjes dokumentaciju.
hint: probaj ima li nesto kao SND_SYNC...

imam utisak da radis sve nesto na brzinu a najbitnije je da shvatis.
Potpis
www.surrealtalesthegame.com
www.chemninja.com
Re: Kako rjesiti ovaj problem sa zvukom 16.08.2005. u 18:26 · pre 258 meseci #3
SND_SYNC će da mu blokira celu aplikaciju dok se zvuk ne izvrši.Predlažem korišćenje DirectX-a, tačnije DirectSoud-a sa kojium ćeš moći sa zvukom da radiš šta god hoćeš.
Potpis
-Odracuonogakomijedrpiorazmaknicu.
-Ne rxdi mi txstxturx, kxd god hocu dx
ukucxm "x" onx ukucx "x".
-Ko kaaz e da ja neuummem da kuuca
m.
-Piše "Insert disk 3", a jedva sam i ova
dva ugurao u drajv
-Postoje samo dve osobe kojima
verujem, jedna sam ja, a druga nisi ti
Re: Kako rjesiti ovaj problem sa zvukom 16.08.2005. u 19:22 · pre 258 meseci #4
Da pokusavao sam sa SND_SYNC, al blokada.
Ajd pokusat cu sada sa gore navedenim liboviam, za ovaj bass sam jos negdje cuo.
Potpis
Never argue with an idiot. They bring you down to their level and beat you with
experience.
Re: Kako rjesiti ovaj problem sa zvukom 17.08.2005. u 00:18 · pre 258 meseci #5
http://audiere.sourceforge.net/

Citat:

Audiere is a high-level audio API. It can play Ogg Vorbis, MP3, FLAC, uncompressed WAV, AIFF, MOD, S3M, XM, and IT files. For audio output, Audiere supports DirectSound or WinMM in Windows, OSS on Linux and Cygwin, and SGI AL on IRIX.

Audiere is open source and licensed under the LGPL. This means that you may freely use Audiere in commercial products, as long as you do not modify the source code. If you do modify Audiere and release a product that uses your modifications, you must release your changes to the code under the LGPL as well.

Audiere is portable. It is tested on Windows, Linux-i386, Cygwin, and IRIX with at least three major compilers. Most of Audiere is endian-independent, so I expect it would work with few modifications on other architectures.


yooyo
Re: Kako rjesiti ovaj problem sa zvukom 17.08.2005. u 00:27 · pre 258 meseci #6
Zahvaljujem yooyo, izgleda da je ovo prava stvar.
Potpis
Never argue with an idiot. They bring you down to their level and beat you with
experience.
Re: Kako rjesiti ovaj problem sa zvukom 17.08.2005. u 01:07 · pre 258 meseci #8
http://www.fmod.org/ pa klikni na Licence i citaj...

Ukratko... ako pravis free program onda je fmod free, ali ako pravis komercijalan, onda kosta neke pare. Obrati paznju na Shareware, hobbyist agreement i na MP3 Licensing issues.

yooyo
Re: Kako rjesiti ovaj problem sa zvukom 17.08.2005. u 02:08 · pre 258 meseci #9
Da vidio sam to, poslije, pa za sada i planiram da radim free, al' sto se tice komercijale, ovo ipak mora da otpadne jer su cijene za nase uslove astronomske.
Potpis
Never argue with an idiot. They bring you down to their level and beat you with
experience.
Re: Kako rjesiti ovaj problem sa zvukom 17.08.2005. u 15:43 · pre 258 meseci #12
Dobar je OpenAL, ali je mnogo ogranicen i sporo se razvija. Za razliku od audiere-a ima podrsku za 3d zvuk, ali pusta samo wav (nova verzija bi trebalo da moze da podrzava ogg) i nezna da strimuje sa diska, nego sve reprodukuje iz memorije. Workaround za streaming je da se napise thread koji ce povremeno da napuni OpenAL sa novim informacijama.

yooyo
Re: Kako rjesiti ovaj problem sa zvukom 17.08.2005. u 18:32 · pre 258 meseci #13
Pa da za komercijalu je ipak Audiere pravi izbor, al' za free fmod je veoma mocna alatka.
Potpis
Never argue with an idiot. They bring you down to their level and beat you with
experience.
Re: Kako rjesiti ovaj problem sa zvukom 18.08.2005. u 11:42 · pre 258 meseci #14
OpenAl takodje pravi probleme na nekim zvucnim kartama. Ovih dana sam ga zamenio sa audiereom...
Re: Kako rjesiti ovaj problem sa zvukom 18.08.2005. u 14:39 · pre 258 meseci #15
Mloh2 kakva su ti iskustva sa Audiereom!
Potpis
Never argue with an idiot. They bring you down to their level and beat you with
experience.
Re: Kako rjesiti ovaj problem sa zvukom 24.08.2005. u 10:59 · pre 257 meseci #16
Izuzetno lako se koristi. Dovoljno je da samo pogledas readme koji ide sa njime i u par linija koda pustas ogg/wav. Lepo je sto se i sam ocisti iz memorije, pa ne moras nista da "destruktujes". Ball7 i Napad su imali problem na nekim masinama jer openal negde jednostavno odbija saradnju. Audiere na tim istim masinama sljaka. Rekao bih da je mnogo vise kompatibilan od openal-a. Svidja mi se sto za novu igru umesto wav-ova za zvucne efekte lepo mogu da koristim ogg, tako da ce download biti jos manji.

evo i nesto malo koda, sve je vrlo prosto:

Klasa se zove woodland jer pusta zvukove shume u pozadini... :)


Ovo je naravno zaglavlje....

#ifndef _CWOODLAND_H_
#define _CWOODLAND_H_

#include <audiere.h>

using namespace audiere;

class cWoodLand {
public:
cWoodLand(void);
void SetGain(float new_gain);
private:
AudioDevicePtr DEVICE;
OutputStreamPtr STREAM;
};


#endif

implementacija:

#include "cWoodLand.h"

cWoodLand::cWoodLand(void)
{
DEVICE=OpenDevice();

STREAM=0; // ;) za svaki slucaj

STREAM=OpenSound(DEVICE,"shuma/nature01.ogg", true);
if(STREAM) {
STREAM->setRepeat(true); // muzika u krug :)
STREAM->play(); // sviraj
STREAM->setVolume(1.0f);// glasnost :)
}

}

// ovom metodom kontrolises glasnost :))
void cWoodLand::SetGain(float new_gain)
{
STREAM->setVolume(new_gain);
}

i to je sve da pustis ogg da svira...

naravno za stream imas i metode stop i reset pogledaj audiere.h...

pozdrav
mloh(2)
Re: Kako rjesiti ovaj problem sa zvukom 24.08.2005. u 13:17 · pre 257 meseci #17
Ok, ja sam trenutno na FMOD-u fenomenalan je, a lagan za koriscenje, posto je free za besplatan softver.
Potpis
Never argue with an idiot. They bring you down to their level and beat you with
experience.
Re: Kako rjesiti ovaj problem sa zvukom 13.11.2005. u 04:02 · pre 255 meseci
izmenjeno 1 put, poslednji put a1200 13.11.2005. u 04:30
  1. a120013.11.2005. u 04:30zapis iz teksta poruke
#18
OpenAL moze da streamuje sa diska OGG file-ove samo treba koristiti Source Queue i Ogg Vorbis lib-ove. Nije potrebno cele Ogg-ove ucitavati u memoriju.

OpenAL radi na svim karticama, a koriste ga Quake 4 i mnoge druge AAA igre. Ima podrsku za EAX. Ono sto treba da se zna, je da ne mozete tek tako da pustate zvukove u ne ogranicenoj kolicini. OpenAL koristi hardware i samim tim je limitiran u zavisnosti od hardvera na kome radi...

Sto znaci sledece, jedna karta mozda moze da pusta 256 zvukova odjednom (3D source-ova), kao na primer Avance AC97 koju imam integrisanu igrom slucaja, dok recimo neka druga samo 64 ili 32 ili 16... sto stvara problem, jer mora da se napise priority wrapper preko OpenAL-a, koji ce da da detektuje koliko source-ova podrzava karta i izbacuje sa liste one source-ove sa nizim prioriteom i reinicijalizuje ih sa trenutno potrebnim hi-priority... da bi se uvek culi zvukovi koji su potrebniji od nekih drugih (recimo vrisak playera je visok priority, dok je koracanje nizeg prioriteta)

Kad se sve to napise, sve perfektno radi. Ima gomilu opcija koje rade veoma prosto i dostupno tipa:
alSourcef(dropshipData.sndSourceID, AL_PITCH, 1.1f);

koja menja pitch loopabilnog sample-a motora dok se on pusta na zvucnicima. Takodje isto vazi i za promenu pozicije, vektora brizine (za dopplerov effekat) i ostalog. Iako mozda prost u interface-u daleko je od neupotrbljivog ili ogranicenog. Toplo preporucujem OpenAL.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme