This is a very simple example of using Cinnamon. Also see sine_test.c in the source repository for a fully working demo application (including proper error handling).
struct Cin_Driver *const driver = malloc(Cin_StructDriverSize()); if(driver == NULL || Cin_CreateDriver(driver) != Cin_eDriverSuccess){ /* Handle error... */ abort(); } /* Load a sound into memory. Cinnamon doesn't provide this capability itself. * You can load the sound in parts, see below. */ unsigned sound_size; const void *sound_data = LoadSound(&sound_size); /* Create an audio Loader. This is used solely to load the sound, and then will * be used to create a playable sound. */ struct Cin_Loader *const loader = malloc(Cin_StructLoaderSize()); if(loader == NULL || Cin_CreateLoader(loader, driver, 44100, 2, Cin_eFormatS16) != Cin_eDriverSuccess){ /* Handle error... */ abort(); } /* Load the sound. If the sound is loaded in parts (as is the case for manually * parsing some formats like Ogg) you can call this function multiple times to * append more data to the loader. */ Cin_LoaderPut(loader, sound_data, sound_size); struct Cin_Sound *const sound = malloc(Cin_StructSoundSize()); if(sound == NULL || Cin_LoaderFinalize(loader, sound) != Cin_eLoaderSuccess){ /* Handle error... */ abort(); } /* You can now play your sound. */ Cin_SoundPlay(sound); /* Obviously Cin_SoundPlay doesn't block, so some other processing can occur * here... */ /* Clean up. It is safe to call Cin_SoundStop regardless of if the sound is * still playing or not. */ Cin_SoundStop(sound); Cin_DestroySound(sound); free(sound); Cin_DestroyDriver(driver); free(driver);
[PageInfo]
LastUpdate: 2019-11-14 22:10:37, ModifiedBy: alaskanemily
[License]
Public Domain
[Permissions]
view:all, edit:login users, delete/config:members