|
libpsynth 0.2.1
|
00001 00011 /* 00012 * Copyright (C) 2008, 2011 Juan Pedro BolĂvar Puente 00013 * 00014 * This file is part of Psychosynth. 00015 * 00016 * Psychosynth is free software: you can redistribute it and/or modify 00017 * it under the terms of the GNU General Public License as published by 00018 * the Free Software Foundation, either version 3 of the License, or 00019 * (at your option) any later version. 00020 * 00021 * Psychosynth is distributed in the hope that it will be useful, 00022 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00023 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00024 * GNU General Public License for more details. 00025 * 00026 * You should have received a copy of the GNU General Public License 00027 * along with this program. If not, see <http://www.gnu.org/licenses/>. 00028 * 00029 */ 00030 00031 #ifndef PSYNTH_SYNTH_ENVELOPE_H 00032 #define PSYNTH_SYNTH_ENVELOPE_H 00033 00034 namespace psynth 00035 { 00036 namespace synth 00037 { 00038 00042 template <class Range> 00043 class envelope 00044 { 00045 public: 00046 typedef Range range; 00047 typedef typename Range::value_type value_type; 00048 00053 virtual value_type update () = 0; 00054 00060 virtual value_type update (std::size_t samples) = 0; 00061 00067 virtual void update (const range& samples) = 0; 00068 00072 virtual void press () = 0; 00073 00077 virtual void release () = 0; 00078 00083 virtual bool finished () = 0; 00084 }; 00085 00086 } /* namespace synth */ 00087 } /* namespace psynth */ 00088 00089 #endif /* PSYNTH_ENVELOPE_H */
1.7.4