91
91
/* 0k = 214Hz. 250k = 4416Hz */
92
92
/* NOTE: freqs are ripped from Sprint for now. */
93
93
/************************************************/
94
DISCRETE_RCFILTER(NODE_20, 1, DRAGRACE_MOTOR1_DATA, 119898, 2.2e-6)
94
DISCRETE_RCFILTER(NODE_20, DRAGRACE_MOTOR1_DATA, 119898, 2.2e-6)
95
95
DISCRETE_ADJUSTMENT_TAG(NODE_21, (214.0-27.0)/12/31, (4416.0-27.0)/12/31, DISC_LOGADJ, "MOTOR1")
96
DISCRETE_MULTIPLY(NODE_22, 1, NODE_20, NODE_21)
96
DISCRETE_MULTIPLY(NODE_22, NODE_20, NODE_21)
98
DISCRETE_MULTADD(NODE_23, 1, NODE_22, 2, 27.0/6) /* F1 = /12*2 = /6 */
98
DISCRETE_MULTADD(NODE_23, NODE_22, 2, 27.0/6) /* F1 = /12*2 = /6 */
99
99
DISCRETE_SQUAREWAVE(NODE_24, 1, NODE_23, (581.6/3), 50.0, 0, 0)
100
DISCRETE_RCFILTER(NODE_25, 1, NODE_24, 10000, 1e-7)
100
DISCRETE_RCFILTER(NODE_25, NODE_24, 10000, 1e-7)
102
DISCRETE_MULTADD(NODE_26, 1, NODE_22, 3, 27.0/4) /* F2 = /12*3 = /4 */
102
DISCRETE_MULTADD(NODE_26, NODE_22, 3, 27.0/4) /* F2 = /12*3 = /4 */
103
103
DISCRETE_SQUAREWAVE(NODE_27, 1, NODE_26, (581.6/3), 50.0, 0, 0)
104
DISCRETE_RCFILTER(NODE_28, 1, NODE_27, 10000, 1e-7)
104
DISCRETE_RCFILTER(NODE_28, NODE_27, 10000, 1e-7)
106
DISCRETE_MULTADD(NODE_29, 1, NODE_22, 4, 27.0/3) /* F3 = /12*4 = /3 */
106
DISCRETE_MULTADD(NODE_29, NODE_22, 4, 27.0/3) /* F3 = /12*4 = /3 */
107
107
DISCRETE_SQUAREWAVE(NODE_30, 1, NODE_29, (581.6/3), 100.0/3, 0, 360.0/3)
108
DISCRETE_RCFILTER(NODE_31, 1, NODE_30, 10000, 1e-7)
108
DISCRETE_RCFILTER(NODE_31, NODE_30, 10000, 1e-7)
110
110
DISCRETE_ADDER3(DRAGRACE_MOTOR1_SND, DRAGRACE_MOTOR1_EN, NODE_25, NODE_28, NODE_31)
114
114
/* Car1. But I shifted the frequencies up for */
115
115
/* it to sound different from car1. */
116
116
/************************************************/
117
DISCRETE_RCFILTER(NODE_40, 1, DRAGRACE_MOTOR2_DATA, 119898, 2.2e-6)
117
DISCRETE_RCFILTER(NODE_40, DRAGRACE_MOTOR2_DATA, 119898, 2.2e-6)
118
118
DISCRETE_ADJUSTMENT_TAG(NODE_41, (214.0-27.0)/12/31, (4416.0-27.0)/12/31, DISC_LOGADJ, "MOTOR2")
119
DISCRETE_MULTIPLY(NODE_42, 1, NODE_40, NODE_41)
119
DISCRETE_MULTIPLY(NODE_42, NODE_40, NODE_41)
121
DISCRETE_MULTADD(NODE_43, 1, NODE_42, 2, 27.0/6) /* F1 = /12*2 = /6 */
121
DISCRETE_MULTADD(NODE_43, NODE_42, 2, 27.0/6) /* F1 = /12*2 = /6 */
122
122
DISCRETE_SQUAREWAVE(NODE_44, 1, NODE_43, (581.6/3), 50.0, 0, 0)
123
DISCRETE_RCFILTER(NODE_45, 1, NODE_44, 10000, 1e-7)
123
DISCRETE_RCFILTER(NODE_45, NODE_44, 10000, 1e-7)
125
DISCRETE_MULTADD(NODE_46, 1, NODE_42, 3, 27.0/4) /* F2 = /12*3 = /4 */
125
DISCRETE_MULTADD(NODE_46, NODE_42, 3, 27.0/4) /* F2 = /12*3 = /4 */
126
126
DISCRETE_SQUAREWAVE(NODE_47, 1, NODE_46, (581.6/3), 50.0, 0, 0)
127
DISCRETE_RCFILTER(NODE_48, 1, NODE_47, 10000, 1e-7)
127
DISCRETE_RCFILTER(NODE_48, NODE_47, 10000, 1e-7)
129
DISCRETE_MULTADD(NODE_49, 1, NODE_42, 4, 27.0/3) /* F3 = /12*4 = /3 */
129
DISCRETE_MULTADD(NODE_49, NODE_42, 4, 27.0/3) /* F3 = /12*4 = /3 */
130
130
DISCRETE_SQUAREWAVE(NODE_50, 1, NODE_49, (581.6/3), 100.0/3, 0, 360.0/3)
131
DISCRETE_RCFILTER(NODE_51, 1, NODE_50, 10000, 1e-7)
131
DISCRETE_RCFILTER(NODE_51, NODE_50, 10000, 1e-7)
133
133
DISCRETE_ADDER3(DRAGRACE_MOTOR2_SND, DRAGRACE_MOTOR2_EN, NODE_45, NODE_48, NODE_51)
143
143
DISCRETE_LFSR_NOISE(DRAGRACE_NOISE, 1, DRAGRACE_ATTRACT_EN, 15750.0/2, 1.0, 0, 0, &dragrace_lfsr)
145
145
DISCRETE_RAMP(NODE_61, DRAGRACE_EXPLODE1_EN, DRAGRACE_EXPLODE1_EN, (1000.0-0.0)/1, 1000.0, 0.0, 1000.0)
146
DISCRETE_MULTIPLY(NODE_62, 1, DRAGRACE_NOISE, NODE_61)
147
DISCRETE_RCFILTER(DRAGRACE_EXPLODE1_SND, DRAGRACE_KLEXPL1_EN, NODE_62, 1500, 2.2e-7)
146
DISCRETE_MULTIPLY(NODE_62, DRAGRACE_NOISE, NODE_61)
147
DISCRETE_RCFILTER(NODE_63, NODE_62, 1500, 2.2e-7)
148
DISCRETE_MULTIPLY(DRAGRACE_EXPLODE1_SND, NODE_63, DRAGRACE_KLEXPL1_EN)
149
150
DISCRETE_RAMP(NODE_66, DRAGRACE_EXPLODE2_EN, DRAGRACE_EXPLODE2_EN, (1000.0-0.0)/1, 1000.0, 0.0, 1000.0)
150
DISCRETE_MULTIPLY(NODE_67, 1, DRAGRACE_NOISE, NODE_66)
151
DISCRETE_RCFILTER(DRAGRACE_EXPLODE2_SND, DRAGRACE_KLEXPL2_EN, NODE_67, 1500, 2.2e-7)
151
DISCRETE_MULTIPLY(NODE_67, DRAGRACE_NOISE, NODE_66)
152
DISCRETE_RCFILTER(NODE_68, NODE_67, 1500, 2.2e-7)
153
DISCRETE_MULTIPLY(DRAGRACE_EXPLODE2_SND, NODE_68, DRAGRACE_KLEXPL2_EN)
153
155
/************************************************/
154
156
/* Skid circuits takes the noise output from */
164
166
/* the duty variance is so small we ignore it */
165
167
/************************************************/
166
168
DISCRETE_INVERT(NODE_70, DRAGRACE_NOISE)
167
DISCRETE_MULTADD(NODE_71, 1, NODE_70, 940.0-630.0, ((940.0-630.0)/2)+630.0)
168
DISCRETE_RCFILTER(NODE_72, 1, NODE_71, 1000, 1e-5)
169
DISCRETE_MULTADD(NODE_71, NODE_70, 940.0-630.0, ((940.0-630.0)/2)+630.0)
170
DISCRETE_RCFILTER(NODE_72, NODE_71, 1000, 1e-5)
169
171
DISCRETE_SQUAREWAVE(NODE_73, 1, NODE_72, 407.8, 31.5, 0, 0.0)
170
172
DISCRETE_ONOFF(DRAGRACE_SCREECH1_SND, DRAGRACE_SCREECH1_EN, NODE_73)
171
173
DISCRETE_ONOFF(DRAGRACE_SCREECH2_SND, DRAGRACE_SCREECH2_EN, NODE_73)