(略)
//////// アンプ //////////////////////////////////
(略)
static inline int32_t mul_32_16_h32(int32_t x,
                                    int16_t y) {
  // 32ビットと16ビットの乗算結果の上位32ビット
  int32_t x1 = x >> 16; uint32_t x0 = x & 0xFFFF;
  return ((x0 * y) >> 16) + (x1 * y);
}
static inline Q28 Amp_process(Q28 in) {
  static Q14 curr_gain = 0;            // ゲイン現在値
  Q14        targ_gain = Amp_on << 14; // ゲイン目標値
  curr_gain = targ_gain -
          (((targ_gain - curr_gain) * 255) / 256);

  return mul_32_16_h32(in, curr_gain) << 2;
}
(略)
