FMOD - FSB



  • Kennt sich hier jemand mit FMOD gut aus ?

    Benutze die C Version von FMOD

    Folgende Fragen:

    - (Wie) Lassen sich sounds in einer FSB ersetzen ohne alles entpacken zu müssen um sie danach wieder zu verpacken ?
    - Wie speichere ich generell ein Sound ab ?
    (2D und 3D)

    (nicht mit Designer oder Sandbox sondern code, funktionen oder verweise (links))

    FSB öffnen, sounds abspielen und den Titel laden kann ich schon, aber das reicht nunmal nicht 😉

    (btw: ist das in hier richtig ?)



  • Tim06TR schrieb:

    Wie speichere ich generell ein Sound ab?

    FMOD (zumindest die C++-Version) arbeitet mit Kanälen.

    MfG, EOutOfResources



  • Sound und Channel. bzw: sound im channel wenn ich mich nicht irre.

    FMOD_System_PlaySound(system, FMOD_CHANNEL_FREE, sound[SoundNumber], FALSE, &channel[i]);
    
    FMOD_SOUND  * sound[16];
    FMOD_CHANNEL* channel[16];
    
    char name[768];
    FMOD_Sound_GetName(sound[SoundNumber], name, 768);
    

    Ich meinte nur Sound, weil GetName auch über den "Sound" funktioniert.

    EDIT: Ich würds auch mit FMOD_MUSIK machen wenn benötigt 😛



  • *anstubs*
    eine Lösung in der C++ Version würd mir auch helfen ich würds dann umbauen zu C 🙂



  • Das war (denke ich) was ich suchte:

    FSBANK_RESULT FSBank_Build(
    FSBANK_BUILDMODE buildmode,
    FSBANK_FORMAT format,
    FSBANK_PLATFORM platform,
    FSBANK_BUILDFLAGS buildflags,
    char * encryptkey,
    const char *destfile_or_dir,
    int numsrcfiles,
    char **srcfile,
    FSBANK_SAMPLE_DEFAULTS **defaults,
    const char *srcdir,
    int quality
    );
    

    Bau es grad zusammen 🙂

    EDIT BEISPIEL (C) (nicht von mir)

    #include "fsbanklib.h"
    
    #include <stdio.h>
    
    #define NUMFILES 2
    
    char *files[NUMFILES] =
    {
        "jbtennis.wav",
        "drumloop.wav"
    };
    
    void __stdcall Update(int index, int memused, void *userdata)
    {
        printf("UPDATE : File %s, memory used %d kb\n", files[index], memused / 1024);
    }
    
    void __stdcall Debug(const char *debugstring, void *userdata)
    {
        printf("DEBUG  : %s\n", debugstring);
    }
    
    void main()
    {
        FSBANK_RESULT result;
    
        result = FSBank_Init();
        if (result != FSBANK_OK)
        {
            printf("ERROR\n");
            return;
        }
    
        result = FSBank_SetUpdateCallback(Update, 0);
        if (result != FSBANK_OK)
        {
            printf("ERROR\n");
            return;
        }
    
        result = FSBank_SetDebugCallback(Debug, 0);
        if (result != FSBANK_OK)
        {
            printf("ERROR\n");
            return;
        }
    
    #if 1
        /*
            This version compiles the wavs into 1 fsb.
        */
        result = FSBank_Build(FSBANK_BUILDMODE_SINGLE, FSBANK_FORMAT_PCM, FSBANK_PLATFORM_PC, FSBANK_BUILD_DEFAULT, 0, "test.fsb", NUMFILES, &files[0], 0, 0, 0);
    #else
        /*
            This version compiles the wavs into their own fsb.  1 each.
        */
        result = FSBank_Build(FSBANK_BUILDMODE_MULTI, FSBANK_FORMAT_PCM, FSBANK_PLATFORM_PC, FSBANK_BUILD_DEFAULT, 0, ".", NUMFILES, &files[0], 0, 0, 0);
    #endif
        if (result != FSBANK_OK)
        {
            printf("ERROR\n");
            return;
        }
    
        result = FSBank_Close();
        if (result != FSBANK_OK)
        {
            printf("ERROR\n");
            return;
        }
    }
    

Anmelden zum Antworten