/* Auto generated from checkpoint nolace_small.pth (sha1: 953bf5854e1a33e8892da48a29b19aff3a272902) */


#ifndef NOLACE_DATA_H
#define NOLACE_DATA_H

#include "nnet.h"


#define NOLACE_PREEMPH 0.85f
#define NOLACE_FRAME_SIZE 80
#define NOLACE_OVERLAP_SIZE 40
#define NOLACE_NUM_FEATURES 93
#define NOLACE_PITCH_MAX 300
#define NOLACE_PITCH_EMBEDDING_DIM 64
#define NOLACE_NUMBITS_RANGE_LOW 50
#define NOLACE_NUMBITS_RANGE_HIGH 650
#define NOLACE_NUMBITS_EMBEDDING_DIM 8
#define NOLACE_COND_DIM 160
#define NOLACE_HIDDEN_FEATURE_DIM 96
#define NOLACE_NUMBITS_SCALE_0 1.0357311964035034f
#define NOLACE_NUMBITS_SCALE_1 1.735559105873108f
#define NOLACE_NUMBITS_SCALE_2 3.6004557609558105f
#define NOLACE_NUMBITS_SCALE_3 4.552478313446045f
#define NOLACE_NUMBITS_SCALE_4 5.932559490203857f
#define NOLACE_NUMBITS_SCALE_5 7.176970481872559f
#define NOLACE_NUMBITS_SCALE_6 8.114998817443848f
#define NOLACE_NUMBITS_SCALE_7 8.77063274383545f

#define NOLACE_PITCH_EMBEDDING_OUT_SIZE 64

#define NOLACE_FNET_CONV1_OUT_SIZE 96

#define NOLACE_FNET_CONV1_IN_SIZE 173

#define NOLACE_FNET_CONV1_STATE_SIZE (173 * (0))

#define NOLACE_FNET_CONV1_DELAY 0

#define NOLACE_FNET_CONV2_OUT_SIZE 160

#define NOLACE_FNET_CONV2_IN_SIZE 384

#define NOLACE_FNET_CONV2_STATE_SIZE (384 * (1))

#define NOLACE_FNET_CONV2_DELAY 0

#define NOLACE_FNET_TCONV_KERNEL_SIZE 4

#define NOLACE_FNET_TCONV_STRIDE 4

#define NOLACE_FNET_TCONV_IN_CHANNELS 160

#define NOLACE_FNET_TCONV_OUT_CHANNELS 160

#define NOLACE_FNET_GRU_OUT_SIZE 160

#define NOLACE_FNET_GRU_STATE_SIZE 160

#define NOLACE_CF1_FILTER_GAIN_A 0.690776f
#define NOLACE_CF1_FILTER_GAIN_B 0.000000f
#define NOLACE_CF1_LOG_GAIN_LIMIT 1.151293f
#define NOLACE_CF1_KERNEL_SIZE 16
#define NOLACE_CF1_LEFT_PADDING 8
#define NOLACE_CF1_FRAME_SIZE 80
#define NOLACE_CF1_OVERLAP_SIZE 40
#define NOLACE_CF1_IN_CHANNELS 1
#define NOLACE_CF1_OUT_CHANNELS 1
#define NOLACE_CF1_NORM_P 2
#define NOLACE_CF1_FEATURE_DIM 160
#define NOLACE_CF1_MAX_LAG 301

#define NOLACE_CF1_KERNEL_OUT_SIZE 16

#define NOLACE_CF1_GAIN_OUT_SIZE 1

#define NOLACE_CF1_GLOBAL_GAIN_OUT_SIZE 1

#define NOLACE_CF2_FILTER_GAIN_A 0.690776f
#define NOLACE_CF2_FILTER_GAIN_B 0.000000f
#define NOLACE_CF2_LOG_GAIN_LIMIT 1.151293f
#define NOLACE_CF2_KERNEL_SIZE 16
#define NOLACE_CF2_LEFT_PADDING 8
#define NOLACE_CF2_FRAME_SIZE 80
#define NOLACE_CF2_OVERLAP_SIZE 40
#define NOLACE_CF2_IN_CHANNELS 1
#define NOLACE_CF2_OUT_CHANNELS 1
#define NOLACE_CF2_NORM_P 2
#define NOLACE_CF2_FEATURE_DIM 160
#define NOLACE_CF2_MAX_LAG 301

#define NOLACE_CF2_KERNEL_OUT_SIZE 16

#define NOLACE_CF2_GAIN_OUT_SIZE 1

#define NOLACE_CF2_GLOBAL_GAIN_OUT_SIZE 1

#define NOLACE_AF1_FILTER_GAIN_A 1.381551f
#define NOLACE_AF1_FILTER_GAIN_B 0.000000f
#define NOLACE_AF1_SHAPE_GAIN 1.000000f
#define NOLACE_AF1_KERNEL_SIZE 16
#define NOLACE_AF1_FRAME_SIZE 80
#define NOLACE_AF1_LEFT_PADDING 15
#define NOLACE_AF1_OVERLAP_SIZE 40
#define NOLACE_AF1_IN_CHANNELS 1
#define NOLACE_AF1_OUT_CHANNELS 2
#define NOLACE_AF1_NORM_P 2
#define NOLACE_AF1_FEATURE_DIM 160

#define NOLACE_AF1_KERNEL_OUT_SIZE 32

#define NOLACE_AF1_GAIN_OUT_SIZE 2

#define NOLACE_TDSHAPE1_FEATURE_DIM 160
#define NOLACE_TDSHAPE1_FRAME_SIZE 80
#define NOLACE_TDSHAPE1_AVG_POOL_K 4
#define NOLACE_TDSHAPE1_INNOVATE 0
#define NOLACE_TDSHAPE1_POOL_AFTER 0

#define NOLACE_TDSHAPE1_ALPHA1_F_OUT_SIZE 80

#define NOLACE_TDSHAPE1_ALPHA1_F_IN_SIZE 160

#define NOLACE_TDSHAPE1_ALPHA1_F_STATE_SIZE (160 * (1))

#define NOLACE_TDSHAPE1_ALPHA1_F_DELAY 0

#define NOLACE_TDSHAPE1_ALPHA1_T_OUT_SIZE 80

#define NOLACE_TDSHAPE1_ALPHA1_T_IN_SIZE 21

#define NOLACE_TDSHAPE1_ALPHA1_T_STATE_SIZE (21 * (1))

#define NOLACE_TDSHAPE1_ALPHA1_T_DELAY 0

#define NOLACE_TDSHAPE1_ALPHA2_OUT_SIZE 80

#define NOLACE_TDSHAPE1_ALPHA2_IN_SIZE 80

#define NOLACE_TDSHAPE1_ALPHA2_STATE_SIZE (80 * (1))

#define NOLACE_TDSHAPE1_ALPHA2_DELAY 0

#define NOLACE_TDSHAPE2_FEATURE_DIM 160
#define NOLACE_TDSHAPE2_FRAME_SIZE 80
#define NOLACE_TDSHAPE2_AVG_POOL_K 4
#define NOLACE_TDSHAPE2_INNOVATE 0
#define NOLACE_TDSHAPE2_POOL_AFTER 0

#define NOLACE_TDSHAPE2_ALPHA1_F_OUT_SIZE 80

#define NOLACE_TDSHAPE2_ALPHA1_F_IN_SIZE 160

#define NOLACE_TDSHAPE2_ALPHA1_F_STATE_SIZE (160 * (1))

#define NOLACE_TDSHAPE2_ALPHA1_F_DELAY 0

#define NOLACE_TDSHAPE2_ALPHA1_T_OUT_SIZE 80

#define NOLACE_TDSHAPE2_ALPHA1_T_IN_SIZE 21

#define NOLACE_TDSHAPE2_ALPHA1_T_STATE_SIZE (21 * (1))

#define NOLACE_TDSHAPE2_ALPHA1_T_DELAY 0

#define NOLACE_TDSHAPE2_ALPHA2_OUT_SIZE 80

#define NOLACE_TDSHAPE2_ALPHA2_IN_SIZE 80

#define NOLACE_TDSHAPE2_ALPHA2_STATE_SIZE (80 * (1))

#define NOLACE_TDSHAPE2_ALPHA2_DELAY 0

#define NOLACE_TDSHAPE3_FEATURE_DIM 160
#define NOLACE_TDSHAPE3_FRAME_SIZE 80
#define NOLACE_TDSHAPE3_AVG_POOL_K 4
#define NOLACE_TDSHAPE3_INNOVATE 0
#define NOLACE_TDSHAPE3_POOL_AFTER 0

#define NOLACE_TDSHAPE3_ALPHA1_F_OUT_SIZE 80

#define NOLACE_TDSHAPE3_ALPHA1_F_IN_SIZE 160

#define NOLACE_TDSHAPE3_ALPHA1_F_STATE_SIZE (160 * (1))

#define NOLACE_TDSHAPE3_ALPHA1_F_DELAY 0

#define NOLACE_TDSHAPE3_ALPHA1_T_OUT_SIZE 80

#define NOLACE_TDSHAPE3_ALPHA1_T_IN_SIZE 21

#define NOLACE_TDSHAPE3_ALPHA1_T_STATE_SIZE (21 * (1))

#define NOLACE_TDSHAPE3_ALPHA1_T_DELAY 0

#define NOLACE_TDSHAPE3_ALPHA2_OUT_SIZE 80

#define NOLACE_TDSHAPE3_ALPHA2_IN_SIZE 80

#define NOLACE_TDSHAPE3_ALPHA2_STATE_SIZE (80 * (1))

#define NOLACE_TDSHAPE3_ALPHA2_DELAY 0

#define NOLACE_AF2_FILTER_GAIN_A 1.381551f
#define NOLACE_AF2_FILTER_GAIN_B 0.000000f
#define NOLACE_AF2_SHAPE_GAIN 1.000000f
#define NOLACE_AF2_KERNEL_SIZE 16
#define NOLACE_AF2_FRAME_SIZE 80
#define NOLACE_AF2_LEFT_PADDING 15
#define NOLACE_AF2_OVERLAP_SIZE 40
#define NOLACE_AF2_IN_CHANNELS 2
#define NOLACE_AF2_OUT_CHANNELS 2
#define NOLACE_AF2_NORM_P 2
#define NOLACE_AF2_FEATURE_DIM 160

#define NOLACE_AF2_KERNEL_OUT_SIZE 64

#define NOLACE_AF2_GAIN_OUT_SIZE 2

#define NOLACE_AF3_FILTER_GAIN_A 1.381551f
#define NOLACE_AF3_FILTER_GAIN_B 0.000000f
#define NOLACE_AF3_SHAPE_GAIN 1.000000f
#define NOLACE_AF3_KERNEL_SIZE 16
#define NOLACE_AF3_FRAME_SIZE 80
#define NOLACE_AF3_LEFT_PADDING 15
#define NOLACE_AF3_OVERLAP_SIZE 40
#define NOLACE_AF3_IN_CHANNELS 2
#define NOLACE_AF3_OUT_CHANNELS 2
#define NOLACE_AF3_NORM_P 2
#define NOLACE_AF3_FEATURE_DIM 160

#define NOLACE_AF3_KERNEL_OUT_SIZE 64

#define NOLACE_AF3_GAIN_OUT_SIZE 2

#define NOLACE_AF4_FILTER_GAIN_A 1.381551f
#define NOLACE_AF4_FILTER_GAIN_B 0.000000f
#define NOLACE_AF4_SHAPE_GAIN 1.000000f
#define NOLACE_AF4_KERNEL_SIZE 16
#define NOLACE_AF4_FRAME_SIZE 80
#define NOLACE_AF4_LEFT_PADDING 15
#define NOLACE_AF4_OVERLAP_SIZE 40
#define NOLACE_AF4_IN_CHANNELS 2
#define NOLACE_AF4_OUT_CHANNELS 1
#define NOLACE_AF4_NORM_P 2
#define NOLACE_AF4_FEATURE_DIM 160

#define NOLACE_AF4_KERNEL_OUT_SIZE 32

#define NOLACE_AF4_GAIN_OUT_SIZE 1

#define NOLACE_POST_CF1_OUT_SIZE 160

#define NOLACE_POST_CF1_IN_SIZE 160

#define NOLACE_POST_CF1_STATE_SIZE (160 * (1))

#define NOLACE_POST_CF1_DELAY 0

#define NOLACE_POST_CF2_OUT_SIZE 160

#define NOLACE_POST_CF2_IN_SIZE 160

#define NOLACE_POST_CF2_STATE_SIZE (160 * (1))

#define NOLACE_POST_CF2_DELAY 0

#define NOLACE_POST_AF1_OUT_SIZE 160

#define NOLACE_POST_AF1_IN_SIZE 160

#define NOLACE_POST_AF1_STATE_SIZE (160 * (1))

#define NOLACE_POST_AF1_DELAY 0

#define NOLACE_POST_AF2_OUT_SIZE 160

#define NOLACE_POST_AF2_IN_SIZE 160

#define NOLACE_POST_AF2_STATE_SIZE (160 * (1))

#define NOLACE_POST_AF2_DELAY 0

#define NOLACE_POST_AF3_OUT_SIZE 160

#define NOLACE_POST_AF3_IN_SIZE 160

#define NOLACE_POST_AF3_STATE_SIZE (160 * (1))

#define NOLACE_POST_AF3_DELAY 0

typedef struct {
    LinearLayer nolace_pitch_embedding;
    LinearLayer nolace_fnet_conv1;
    LinearLayer nolace_fnet_conv2;
    LinearLayer nolace_fnet_tconv;
    LinearLayer nolace_fnet_gru_input;
    LinearLayer nolace_fnet_gru_recurrent;
    LinearLayer nolace_cf1_kernel;
    LinearLayer nolace_cf1_gain;
    LinearLayer nolace_cf1_global_gain;
    LinearLayer nolace_cf2_kernel;
    LinearLayer nolace_cf2_gain;
    LinearLayer nolace_cf2_global_gain;
    LinearLayer nolace_af1_kernel;
    LinearLayer nolace_af1_gain;
    LinearLayer nolace_tdshape1_alpha1_f;
    LinearLayer nolace_tdshape1_alpha1_t;
    LinearLayer nolace_tdshape1_alpha2;
    LinearLayer nolace_tdshape2_alpha1_f;
    LinearLayer nolace_tdshape2_alpha1_t;
    LinearLayer nolace_tdshape2_alpha2;
    LinearLayer nolace_tdshape3_alpha1_f;
    LinearLayer nolace_tdshape3_alpha1_t;
    LinearLayer nolace_tdshape3_alpha2;
    LinearLayer nolace_af2_kernel;
    LinearLayer nolace_af2_gain;
    LinearLayer nolace_af3_kernel;
    LinearLayer nolace_af3_gain;
    LinearLayer nolace_af4_kernel;
    LinearLayer nolace_af4_gain;
    LinearLayer nolace_post_cf1;
    LinearLayer nolace_post_cf2;
    LinearLayer nolace_post_af1;
    LinearLayer nolace_post_af2;
    LinearLayer nolace_post_af3;
} NOLACELayers;

int init_nolacelayers(NOLACELayers *model, const WeightArray *arrays);

#endif /* NOLACE_DATA_H */
