学习fmod的使用

来源:互联网 发布:黑客电话数据 编辑:程序博客网 时间:2024/04/26 01:56
1.到fmod 官网下载 studio 和Api

 地址:https://www.fmod.com/download


2.找到playsound.cpp文件
地址:D:\fmodstudioapi11001android\fmodstudioapi11001android\api\lowlevel\examples

3.找到main()函数
#include "fmod.hpp"#include "common.h"int FMOD_Main(){    FMOD::System     *system;    FMOD::Sound      *sound1, *sound2, *sound3;    FMOD::Channel    *channel = 0;    FMOD_RESULT       result;    unsigned int      version;    void             *extradriverdata = 0;        Common_Init(&extradriverdata);    /*        Create a System object and initialize    */    result = FMOD::System_Create(&system);    ERRCHECK(result);    result = system->getVersion(&version);    ERRCHECK(result);    if (version < FMOD_VERSION)    {        Common_Fatal("FMOD lib version %08x doesn't match header version %08x", version, FMOD_VERSION);    }    result = system->init(32, FMOD_INIT_NORMAL, extradriverdata);    ERRCHECK(result);    result = system->createSound(Common_MediaPath("drumloop.wav"), FMOD_DEFAULT, 0, &sound1);    ERRCHECK(result);    result = sound1->setMode(FMOD_LOOP_OFF);    /* drumloop.wav has embedded loop points which automatically makes looping turn on, */    ERRCHECK(result);                           /* so turn it off here.  We could have also just put FMOD_LOOP_OFF in the above CreateSound call. */    result = system->createSound(Common_MediaPath("jaguar.wav"), FMOD_DEFAULT, 0, &sound2);    ERRCHECK(result);    result = system->createSound(Common_MediaPath("swish.wav"), FMOD_DEFAULT, 0, &sound3);    ERRCHECK(result);    /*        Main loop    */    do    {        Common_Update();        if (Common_BtnPress(BTN_ACTION1))        {            result = system->playSound(sound1, 0, false, &channel);            ERRCHECK(result);        }        if (Common_BtnPress(BTN_ACTION2))        {            result = system->playSound(sound2, 0, false, &channel);            ERRCHECK(result);        }        if (Common_BtnPress(BTN_ACTION3))        {            result = system->playSound(sound3, 0, false, &channel);            ERRCHECK(result);        }        result = system->update();        ERRCHECK(result);        {            unsigned int ms = 0;            unsigned int lenms = 0;            bool         playing = 0;            bool         paused = 0;            int          channelsplaying = 0;            if (channel)            {                FMOD::Sound *currentsound = 0;                result = channel->isPlaying(&playing);                if ((result != FMOD_OK) && (result != FMOD_ERR_INVALID_HANDLE) && (result != FMOD_ERR_CHANNEL_STOLEN))                {                    ERRCHECK(result);                }                result = channel->getPaused(&paused);                if ((result != FMOD_OK) && (result != FMOD_ERR_INVALID_HANDLE) && (result != FMOD_ERR_CHANNEL_STOLEN))                {                    ERRCHECK(result);                }                result = channel->getPosition(&ms, FMOD_TIMEUNIT_MS);                if ((result != FMOD_OK) && (result != FMOD_ERR_INVALID_HANDLE) && (result != FMOD_ERR_CHANNEL_STOLEN))                {                    ERRCHECK(result);                }                               channel->getCurrentSound(¤tsound);                if (currentsound)                {                    result = currentsound->getLength(&lenms, FMOD_TIMEUNIT_MS);                    if ((result != FMOD_OK) && (result != FMOD_ERR_INVALID_HANDLE) && (result != FMOD_ERR_CHANNEL_STOLEN))                    {                        ERRCHECK(result);                    }                }            }            system->getChannelsPlaying(&channelsplaying, NULL);            Common_Draw("==================================================");            Common_Draw("Play Sound Example.");            Common_Draw("Copyright (c) Firelight Technologies 2004-2017.");            Common_Draw("==================================================");            Common_Draw("");            Common_Draw("Press %s to play a mono sound (drumloop)", Common_BtnStr(BTN_ACTION1));            Common_Draw("Press %s to play a mono sound (jaguar)", Common_BtnStr(BTN_ACTION2));            Common_Draw("Press %s to play a stereo sound (swish)", Common_BtnStr(BTN_ACTION3));            Common_Draw("Press %s to quit", Common_BtnStr(BTN_QUIT));            Common_Draw("");            Common_Draw("Time %02d:%02d:%02d/%02d:%02d:%02d : %s", ms / 1000 / 60, ms / 1000 % 60, ms / 10 % 100, lenms / 1000 / 60, lenms / 1000 % 60, lenms / 10 % 100, paused ? "Paused " : playing ? "Playing" : "Stopped");            Common_Draw("Channels Playing %d", channelsplaying);        }        Common_Sleep(50);    } while (!Common_BtnPress(BTN_QUIT));    /*        Shut down    */    result = sound1->release();    ERRCHECK(result);    result = sound2->release();    ERRCHECK(result);    result = sound3->release();    ERRCHECK(result);    result = system->close();    ERRCHECK(result);    result = system->release();    ERRCHECK(result);    Common_Close();    return 0;}

4.查看 Common_MediaPath()函数 可以发现  这是从assets中找到

const char *Common_MediaPath(const char *fileName){    char *filePath = (char *)calloc(256, sizeof(char));    strcat(filePath, "file:///android_asset/");    strcat(filePath, fileName);    gPathList.push_back(filePath);    return filePath;}


阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 王霄的老婆付丽娜 王霏 王霙 王霜 一肤王霜 王霜回应解约传闻 王霜将与巴黎解约 王霜遭韩国女足下黑脚 王霜个人资料 王霞 王霞老师 陈楚王霞 王霞普洱茶 王霞图片 陈楚干王霞所有章节 把王霞放到桌上 王霞老师一百七十二章 陈楚干王霞家在厨房 陈楚干王霞的好友 家庭王霞目录 陈楚干王霞第一章 延安原市长王霞儿子 王露 王青 王青冯建宇 王青图片 晴王青提多少钱一斤 王青说冯建宇恶心 王青冯建宇现实关系 王青和 王靖 信威集团王靖是谁儿子 王静 空姐王静 演员王静 王静好多水 洛阳王静 王静照片 蓝航公司王静全文阅读 王静个人资料年龄 蓝天空姐王静