static PyObject *Snd_SetDefaultOutputVolume(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; long level; if (!PyArg_ParseTuple(_args, "l", &level)) return NULL; _err = SetDefaultOutputVolume(level); if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); _res = Py_None; return _res; }
Exec_stat MCAudioClip::setprop(uint4 parid, Properties p, MCExecPoint &ep, Boolean effective) { int2 i1; MCString data = ep.getsvalue(); switch (p) { #ifdef /* MCAudioClip::setprop */ LEGACY_EXEC case P_PLAY_DESTINATION: case P_PLAY_LOUDNESS: if (p == P_PLAY_DESTINATION) { if (data == "external") flags |= F_EXTERNAL; else flags &= ~F_EXTERNAL; } else { if (!MCU_stoi2(data, i1)) { MCeerror->add (EE_ACLIP_LOUDNESSNAN, 0, 0, data); return ES_ERROR; } loudness = MCU_max(MCU_min(i1, 100), 0); if (loudness == 100) flags &= ~F_LOUDNESS; else flags |= F_LOUDNESS; } if (this == MCtemplateaudio) { extern bool MCSystemSetPlayLoudness(uint2 loudness); #ifdef _MOBILE if (MCSystemSetPlayLoudness(loudness)) return ES_NORMAL; #endif if (MCplayers != NULL) { MCPlayer *tptr = MCplayers; while (tptr != NULL) { tptr->setvolume(loudness); tptr = tptr->getnextplayer(); } } #if defined _WINDOWS WORD v = loudness * MAXUINT2 / 100; if (hwaveout != NULL) waveOutSetVolume(hwaveout, v | (v << 16)); else { WAVEFORMATEX pwfx; pwfx.wFormatTag = WAVE_FORMAT_PCM; pwfx.nChannels = 1; pwfx.nSamplesPerSec = 22050; pwfx.nAvgBytesPerSec = 22050; pwfx.nBlockAlign = 1; pwfx.wBitsPerSample = 8; pwfx.cbSize = 0; if (waveOutOpen(&hwaveout, WAVE_MAPPER, &pwfx, 0, 0, CALLBACK_NULL | WAVE_ALLOWSYNC) == MMSYSERR_NOERROR) { waveOutSetVolume(hwaveout, v | (v << 16)); waveOutClose(hwaveout); hwaveout = NULL; } } #elif defined _MACOSX long volume = loudness * 255 / 100; SetDefaultOutputVolume(volume | volume << 16); #elif defined TARGET_PLATFORM_LINUX if ( x11audio != NULL) x11audio -> setloudness ( loudness ) ; #endif } return ES_NORMAL; #endif /* MCAudioClip::setprop */ default: break; } return MCObject::setprop(parid, p, ep, effective); }