/* * create a tone that goes from high-pitched to low-pitched */ static void BoltSound() /*********************/ { short i; OpenSound(); SetVoiceAccent( 1, 120, 50, S_LEGATO, 0 ); for( i=84; i > 0; i-- ) { SetVoiceNote( 1, i, 128, 1 ); /* place a 128th note of value i into voice queue 1 */ } StartSound(); } /* BoltSound */
HSTREAM D3DCore_Impl::Stream_Load(const WCHAR *filename, DWORD size) { if(m_bSilent) return 0; void *data; DWORD _size; CStreamList *stmItem; if(m_pADevice) { if(size) { data=(void *)filename; _size=size; } else { data=File_Load(filename, &_size); if(!data) return 0; } FilePtr pf = CreateMemoryFile(data, _size); SampleSourcePtr source = OpenSampleSource(pf); if (!source) { System_Log(L"[AUDIERE - ERROR] %s: Can't load sample source", filename); return 0; } LoopPointSourcePtr loop_source = CreateLoopPointSource(source); if (loop_source) { source = loop_source.get(); } OutputStream* stream = OpenSound( m_pADevice, source, true); if (!stream) { System_Log(L"[AUDIERE - ERROR] %s: Can't load stream", filename); if(!size) File_Free(data); return 0; } stream->ref(); if(!size) { stmItem=new CStreamList; stmItem->hstream=(HSTREAM)stream; stmItem->data=data; stmItem->next=streams; streams=stmItem; } return (HSTREAM)stream; } else return 0; }
HRESULT SoundClass::Initialize(HWND hwnd , MutableString&& path) { HRESULT hr = S_OK; m_hWnd = hwnd; AudioDevicePtr audioDevice(OpenDevice()); OutputStream* m_soundDataStream = OpenSound(audioDevice, path.getMultiByteString().c_str(), false); m_soundData.reset(new OutputStreamPtr(m_soundDataStream)); if (m_soundData == nullptr || m_soundData->get() == nullptr) { printf("No Sound File Found.\r\n"); return E_FAIL; } (*m_soundData)->stop(); return hr; }
bool PlayerAudiere::open(QUrl fname, long start, long length) { file = ToLocalFile(fname); SampleSource* source = OpenSampleSource(file.toLocal8Bit(), FF_AUTODETECT); stream = OpenSound(device, source, true); if(stream) { int ch, sr; SampleFormat sf; source->getFormat(ch, sr, sf); stream->setVolume(float(svolume)/100); _start = start * sr / 75; _length = length * sr / 75; if(!_length) _length = stream->getLength() - _start; } else { _start = _length = 0; } return stream; }
HCHANNEL D3DCore_Impl::Effect_Play(HEFFECT eff) { if(m_pADevice && eff != 0) { SampleSource* SSource = (SampleSource*)eff; OutputStream* OStream = OpenSound( m_pADevice, SSource, false ); OStream->setVolume( m_VolFX ); OStream->play(); OStream->ref(); // EffectChannelList.insert((HCHANNEL)OStream); Channel* chn = new Channel; chn->Handler = (HCHANNEL)OStream; chn->Type = CT_EFFECT; chn->next = channels; channels = chn; return (HCHANNEL)OStream; } else return 0; }
HRESULT SoundClass::Initialize(HWND hwnd , MutableString&& path) { HRESULT hr = S_OK; m_hWnd = hwnd; //Read Sound File right now; m_audioDevice = new AudioDevicePtr(OpenDevice()); if (m_audioDevice == nullptr) { printf("No device\r\n"); return E_FAIL; } OutputStream* m_soundDataStream = OpenSound(*m_audioDevice, path.getMultiByteString().c_str(), false); m_soundData = new OutputStreamPtr(m_soundDataStream); if (m_soundData == nullptr) { printf("No Sound File Found.\r\n"); return E_FAIL; } (*m_soundData)->stop(); return hr; }
HCHANNEL D3DCore_Impl::Effect_PlayEx(HEFFECT eff, int volume, int pan, float pitch, bool loop) { if(m_pADevice && eff != 0) { SampleSource* SSource = (SampleSource*)eff; OutputStream* OStream = OpenSound( m_pADevice, SSource, false ); OStream->setVolume( m_VolFX * (volume/100.0f) ); OStream->setPan( pan/100.0f ); OStream->setPitchShift( pitch ); OStream->setRepeat( loop ); OStream->play(); OStream->ref(); // EffectChannelList.insert((HCHANNEL)OStream); Channel* chn = new Channel; chn->Handler = (HCHANNEL)OStream; chn->Type = CT_EFFECT; chn->next = channels; channels = chn; return (HCHANNEL)OStream; } else return 0; }
SWBOOL CacheSound(int num, int type) { VOC_INFOp vp = &voc[num]; PRODUCTION_ASSERT(num >= 0 && num < DIGI_MAX); // if no data we need to cache it in if (!vp->data) { int handle; int length; if (!OpenSound(vp, &handle, &length)) { sprintf(ds,"Could not open sound %s, num %d, priority %d\n",vp->name,num,vp->priority); CON_ConMessage(ds); return FALSE; } if (vp != NULL) { //FILE *fp; /* if (type == CACHE_SOUND_PLAY) // start it out locked at the min vp->lock = CACHE_LOCK_START; else if (type == CACHE_SOUND_PRECACHE) // start it out unlocked at the max */ vp->lock = CACHE_UNLOCK_MAX; allocache((intptr_t*)&vp->data, length, &vp->lock); #if 0 // DEBUG globsndata[num] = AllocMem(length); glength[num] = length; fp = fopen(vp->name, "rb"); if (fp != NULL) { fread(globsndata[num], length, 1, fp); ASSERT(globsndata[num] != NULL); fclose(fp); } #endif /////// ASSERT(vp->data); ReadSound(handle, vp, length); #if 0 //DEBUG globvpdata[num] = vp->data; CheckSndData(__FILE__, __LINE__); #endif } } return TRUE; }
bool ZSoundEngine::LoadResource(char* pFileName) { MXmlDocument Data; MZFile mzf; if(!mzf.Open(pFileName, m_pZFileSystem)) return false; char *buffer; buffer=new char[mzf.GetLength()+1]; mzf.Read(buffer,mzf.GetLength()); buffer[mzf.GetLength()]=0; Data.Create(); if(!Data.LoadFromMemory(buffer)) { delete buffer; return false; } delete buffer; mzf.Close(); MXmlElement root, chr, attr; char szSoundName[256]; char szSoundFileName[256]; root = Data.GetDocumentElement(); int iCount = root.GetChildNodeCount(); for( int i = 0 ; i < iCount; ++i ) { chr = root.GetChildNode(i); chr.GetTagName( szSoundName ); if( szSoundName[0] == '#' ) continue; chr.GetAttribute( szSoundName, "name" ); strcpy( szSoundFileName, SOUNDEFFECT_DIR ); strcat( szSoundFileName, szSoundName ); strcat( szSoundFileName, ".wav" ); char szType[64] = ""; chr.GetAttribute(szType, "type", "3d"); float min = ZDEF_MINDISTANCE; float max = ZDEF_MAXDISTANCE; float fTemp; if( chr.GetAttribute( &fTemp, "MINDISTANCE" )) min = fTemp; if( chr.GetAttribute( &fTemp, "MAXDISTANCE" )) max = fTemp; bool bLoop = false; chr.GetAttribute(&bLoop, "loop"); float fDefaultVolume = 1.0f; chr.GetAttribute(&fDefaultVolume, "volume", 1.0f); unsigned long int nFlags=0; if (bLoop) nFlags |= RSOUND_LOOP_NORMAL; else nFlags |= RSOUND_LOOP_OFF; if (!stricmp(szType, "2d")) { OpenSound(szSoundFileName, RSOUND_2D | nFlags); if (!IS_EQ(fDefaultVolume, 1.0f)) { RBaseSoundSource* pSoundSource = GetSoundSource(szSoundFileName, RSOUND_]2D); if (pSoundSource) { SetDefaultVolume(pSoundSource, fDefaultVolume); } } }