Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
class Audio; class Sound { public: Sound(Audio& audio) { mAudio = &audio; mSound = NULL; } bool Load(const string& filename) { return mAudio->System().createSound(filename.c_str(), FMOD_HARDWARE, 0, &mSound) == FMOD_OK; } void Play() const { mAudio->System().playSound(FMOD_CHANNEL_FREE, mSound, false, &mChannel); } private: Audio* mAudio; FMOD_Sound* mSound; FMOD_Channel* mChannel }; class Audio { public: Audio(uint32_t channels = 32) { mChannels = channels; FMOD::System_Create(&mSystem); uint32_t version; mSystem->getVersion(&version) if (version < FMOD_VERSION) { cout << "Falsche Version" << endl; } mSystem->init(mChannels, FMOD_INIT_NORMAL, 0); } ~Audio() { mSystem->close(); mSystem->release(); } FMOD_System& System() { return *mSystem; } private: FMOD::System* mSystem; uint32_t mChannels; }; // Beispiel Audio audio; Sound sound(audio); sound.Load("pokemon.wav") sound.Play(); |
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »TrikkieMikkie« (03.07.2010, 08:06)
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
Sound.hpp: #ifndef SOUND_HPP #define SOUND_HPP #include <iostream> #include <fmod.hpp> //Bilblitheks - Header #include <fmod_errors.h> //Für die Eroor - Auswertung benötigt #include <windows.h> //Für die Sleep - Funktion nach System - Update benötigt #include <conio.h> //Für kbhit und getch benötogt using namespace std; //Sonst wird const nicht erkannt class CSound { public: bool Load(const string &sPath); void Quit(); void Play(); void Pause_Unpause(); void Reset_Play(); private: void ERRCHECK(FMOD_RESULT result); FMOD::System *m_pSystem; FMOD::Sound *m_pSound; FMOD::Channel *m_pChannel; FMOD_RESULT m_result; unsigned int m_version; string m_sPath; }; #endif |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
Sound.cpp: #include "Sound.hpp" //Funktion zum Laden einer Audio - Datei bool CSound::Load(const string &sPath) { m_result = FMOD::System_Create(&m_pSystem); //Temporäres - System erzeugen ERRCHECK(m_result); m_result = m_pSystem->getVersion(&m_version); //System Version abfragen ERRCHECK(m_result); if (m_version < FMOD_VERSION) //Version überprüfen { printf("Error! You are using an old version of FMOD x. This program requires x\n", m_version, FMOD_VERSION); return false; } else { m_result = m_pSystem->init(1, FMOD_INIT_NORMAL, 0); //Temporäres System initialisieren ERRCHECK(m_result); //Sounddatei erzeuegn m_result = m_pSystem->createStream(sPath.c_str(), FMOD_HARDWARE | FMOD_LOOP_NORMAL | FMOD_2D, 0, &m_pSound); ERRCHECK(m_result); m_sPath = sPath; //Pfad speichern return true; } } //Funktion zum schließen der Ausdiodatei void CSound::Quit() { //Alle Systeme beenden m_result = m_pSound->release(); ERRCHECK(m_result); m_result = m_pSystem->close(); ERRCHECK(m_result); m_result = m_pSystem->release(); ERRCHECK(m_result); } //Funktion zum abspielen und pausieren der Sounds void CSound::Play() { //Sound abspielen m_result = m_pSystem->playSound(FMOD_CHANNEL_FREE, m_pSound, false, &m_pChannel); ERRCHECK(m_result); m_pSystem->update(); } //Funktion zum Pausieren und Wiedergeben eines Sounds void CSound::Pause_Unpause() { bool paused; m_pChannel->getPaused(&paused); m_pChannel->setPaused(!paused); } //Funktion zum Resetten des Sounds (Fängt nach dem nächsten Unpause wieder von vorne zum Spielen an) void CSound::Reset_Play() { Quit(); Load(m_sPath); Play(); } //Funktion zur Fehler - Überprüfung void CSound::ERRCHECK(FMOD_RESULT result) { if (m_result != FMOD_OK) { printf("FMOD error! (%d) %s\n", m_result, FMOD_ErrorString(m_result)); exit(-1); } } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
main.cpp: #include "Sound.hpp" int main(int argc, char *argv[]) { CSound Sound; //Sound erzeugen Sound.Load("Sound/Ton.wma"); //Sound Laden Sound.Play(); //Sound abspielen Sleep(3000); //3 Sekunden eine andere Aktivität zurchführen Sound.Pause_Unpause(); //Sound pausieren Sleep(3000); //3 Sekunden eine andere Aktivität zurchführen Sound.Pause_Unpause(); //Sound weiter abspielen Sleep(3000); //3 Sekunden eine andere Aktivität zurchführen Sound.Reset_Play(); //Sound resetten Sleep(300); //3 Sekunden eine andere Aktivität zurchführen Sound.Quit(); //Sound beenden } |
Werbeanzeige