/* * Copyright (C) 2020 Linux Studio Plugins Project * (C) 2020 Vladimir Sadovnikov * * This file is part of lsp-plugins * Created on: 24 марта 2016 г. * * lsp-plugins is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * lsp-plugins is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with lsp-plugins. If not, see . */ #include namespace lsp { void fade_in(float *dst, const float *src, size_t fade_len, size_t buf_len) { if ((fade_len <= 0) || (buf_len <= 0)) return; float k = 1.0f / fade_len; if (fade_len > buf_len) fade_len = buf_len; for (size_t i=0; i < fade_len; ++i) dst[i] = src[i] * i * k; } void fade_out(float *dst, const float *src, size_t fade_len, size_t buf_len) { if ((fade_len <= 0) || (buf_len <= 0)) return; float k = 1.0f / fade_len; if (fade_len > buf_len) fade_len = buf_len; else { src = &src[buf_len - fade_len]; dst = &dst[buf_len - fade_len]; } for (size_t i=fade_len; i > 0; ) *(dst++) = *(src++) * ((--i) * k); } }