basesound --> load
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 17/01/2006 at 14:42, xxxxxxxx wrote:
User Information:
Cinema 4D Version: 9.5
Platform: Windows ;
Language(s) : C++ ;---------
i have a problem with loading sound with basesound class. i createred sound which is BaseSound pointer (as basesound doesn't seem to have a constructor o.O), but sound->load doesn't work... i think there must be something missing before load, but i can't find what... any help would be highly appreciated. -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 17/01/2006 at 22:26, xxxxxxxx wrote:
Like most C4D 'Base' classes, there are no direct constructor/destructor methods. You must use 'Alloc' and 'Free' to allocated and free the class:
BaseSound* sound = BaseSound::Alloc();
BaseSound::Free(sound);Note that Load() only works with WAV sound files. It is possible that certain codecs are not supported (unless they are installed).
Here is working source that I use (in conjunction with animation tracks) :
if (type == Ssound) { // <Bool:On|Off> if (!tokenReader.ParseBool(&fileReader;, &boolVal;, "on", "off")) return FALSE; data->SetBool(ID_SOUND_ONOFF, boolVal); // "<String:Sound_Filename>" SoundSequence *sseq = static_cast<SoundSequence*>(seq); BaseSound* bsound; if (!(bsound = sseq->GetSound())) { ErrorException::Throw(GeLoadString(ERROR_MEMORY_TEXT), "AnimatLOAD.ReadSequence.bsound"); return FALSE; } if (!tokenReader.ParseQuotedString(&fileReader;, &name;)) { BaseSound::Free(bsound); return FALSE; } Filename soundFile = Filename(filename); soundFile.SetFile(Filename(name)); if (bsound->Load(soundFile)) { sseq->SetSound(bsound); sseq->SetParameter(DescID(ID_SOUND_NAME), name, DESCFLAGS_DONTCHECKMINMAX); } else ErrorException::Throw(GeLoadString(ERROR_OPENFILE_TEXT), "Sound file:", name); BaseSound::Free(bsound); }
HTH,
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 18/01/2006 at 03:41, xxxxxxxx wrote:
thanks, solved that, works ok now, but i got something really weird instead... I have a separate new class, in which sounddata pointer has to be created (because getsample needs pointer SData to work with), but it doesn't seem to work. Cinema throws "The instruction at "----" referenced memory at "----"..." error... it works if i declare wariable sd like SData sd; but doesnt with SData* sd=new SData();... that one works just fine in the main plugin cpp (NodeData::Message) though... any ideas?
thanks in advance,
regards -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 18/01/2006 at 07:44, xxxxxxxx wrote:
ah, found it out myself. in the end it had nothing to do with the sdata