+ levels value;\r
+ value.min_input = boost::lexical_cast<double>(_parameters.at(1));\r
+ value.max_input = boost::lexical_cast<double>(_parameters.at(2));\r
+ value.gamma = boost::lexical_cast<double>(_parameters.at(3));\r
+ value.min_output = boost::lexical_cast<double>(_parameters.at(4));\r
+ value.max_output = boost::lexical_cast<double>(_parameters.at(5));\r
+ int duration = _parameters.size() > 6 ? lexical_cast_or_default(_parameters[6], 0) : 0;\r
+ std::wstring tween = _parameters.size() > 7 ? _parameters[7] : L"linear";\r
+\r
+ auto transform = [=](frame_transform transform) -> frame_transform\r
+ {\r
+ transform.levels = value;\r
+ return transform;\r
+ };\r
+ \r
+ int layer = GetLayerIndex();\r
+ GetChannel()->mixer()->apply_frame_transform(GetLayerIndex(), transform, duration, tween); \r
+ }\r
+ else if(_parameters[0] == L"VOLUME")\r
+ {\r
+ int duration = _parameters.size() > 2 ? lexical_cast_or_default(_parameters[2], 0) : 0;\r
+ std::wstring tween = _parameters.size() > 3 ? _parameters[3] : L"linear";\r
+ double value = boost::lexical_cast<double>(_parameters[1]);\r
+\r
+ auto transform = [=](frame_transform transform) -> frame_transform\r
+ {\r
+ transform.volume = value;\r
+ return transform;\r
+ };\r
+ \r
+ int layer = GetLayerIndex();\r
+ GetChannel()->mixer()->apply_frame_transform(GetLayerIndex(), transform, duration, tween);\r
+ }\r
+ else if(_parameters[0] == L"CLEAR")\r
+ {\r
+ GetChannel()->mixer()->clear_transforms();\r
+ }\r
+ else\r
+ {\r
+ SetReplyString(TEXT("404 MIXER ERROR\r\n"));\r
+ return false;\r