Сэмплированный источник |
Предыдущая Содержание Следующая |
![]() |
Ниже приведены данные из программы синтезатора Клатта, содержащие информацию о сэмплированном голосовом импульсе, а так же код, производящий интерполяцию данных для любого значения частоты дискретизации. Код//сэмплированная производная объемной скорости private static final double SAMPLE_FACTOR = 0.01; private static final int natural_samples[] = { -310, -400, 530, 356, 224, 89, 23, -10, -58, -16, 461, 599, 536, 701, 770, 605, 497, 461, 560, 404, 110, 224, 131, 104, -97, 155, 278, -154, -1165, -598, 737, 125, -592, 41, 11, -247, -10, 65, 92, 80, -304, 71, 167, -1, 122, 233, 161, -43, 278, 479, 485, 407, 266, 650, 134, 80, 236, 68, 260, 269, 179, 53, 140, 275, 293, 296, 104, 257, 152, 311, 182, 263, 245, 125, 314, 140, 44, 203, 230, -235, -286, 23, 107, 92, -91, 38, 464, 443, 176, 98, -784, -2449, -1891, -1045, -1600, -1462, -1384, -1261, -949, -730 }; /** * возвращает значение сэмплированной производной объемной скорости * @param period - период тона * @param phase - фаза * @return производная объемной скорости, -24.49...+7.70 */ public static double getSampledPulse(int period, int phase) { long id = ((phase * (natural_samples.length-1)) << 15) / period; int i = (int)(id >> 15); int p = natural_samples[i]; int n = natural_samples[i + 1]; int res = p + (n - p) * (int)(id&0x7fff) / 32768; return res * SAMPLE_FACTOR; } |
Предыдущая Содержание Следующая |