function obalton = obalka (ton)
% vstupy: ton     [ton odpovidajici vysky s odpovidajicj delkou]
%
% vystup: obalton [ton pronasobeny s ADSR obalkou]
%
% Skript je soucasti bakalarske prace           
% 'Nastroj pro porizovani dat pro wave table syntezu' na FEL CVUT.
% Autor: Aleksandr Kartavykh
% Rok: 2018

% Definice obalky
t = 0:1:length(ton)-1;
X = 0:1:484;
X = X/X(end);
ADSR1 = [0 125 150 175 180 185 190 195 198 200 202 205 208 210 212 215 218 ...
   220 222 225 228 230 233 236 239 242 245 248 250 247 244 241 238 235 232 ...
   229 226 223 221 218 215 213 210 207 205 202 200 197 195 193 190 188 186 ...
   183 181 179 177 174 172 170 168 166 164 162 160 158 156 154 152 150 149 ...
   147 145 143 141 140 138 136 135 133 131 130 128 127 125 123 122 120 119 ...
   117 116 115 113 112 110 109 108 106 105 104 103 101 100 99 98 96 95 94 ... 
   93 92 91 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 73 72 71 70 ... 
   69 68 67 67 66 65 64 63 63 62 61 60 59 58 57 57 56 55 55 54 53 53 52 51 ... 
   51 50 49 49 48 48 47 46 46 45 45 44 44 43 43 42 42 41 41 40 40 39 39 38 ... 
   38 37 37 36 36 35 35 35 34 34 33 33 32 32 32 31 31 31 30 30 29 29 29 28 ... 
   28 28 27 27 27 26 26 26 25 25 25 24 24 24 24 23 23 23 22 22 22 22 21 21 ... 
   21 21 20 20 20 20 19 19 19 19 18 18 18 18 17 17 17 17 17 16 16 16 16 16 ... 
   15 15 15 15 15 15 14 14 14 14 14 13 13 13 13 13 13 12 12 12 12 12 11 11 ...
   11 11 11 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 ... 
   9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 8 8 8 8 8 8 8 8 8 8 8 8 ...
   8 8 8 8 8 8 8 8 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 6 6 6 6 6 6 6 6 ...
   6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 ...
   4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 ...
   2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...
   1 1 1 1 0];

% Interpolace obalky, aby souhlasily delky matic
O = interp1(X, ADSR1, t./t(end));

%Pronasobeni obalky a tonu
obalton = O.*ton;
obalton = obalton/max(abs(obalton(:)));
end