2121
2222 .module nullsound
2323
24+ .include "fm-tables.inc"
25+ .include "ssg-tables.inc"
26+
2427 .area CODE
2528
2629 .bndry 256
6164
6265;;; Delta factor for all possible fractional semitones
6366;;; ------
64- ;;; Internally nullsound works with decimal semitones (8:8 fixed point) to encode
67+ ;;; Internally nullsound works with decimal semitones (8:7 fixed point) to encode
6568;;; the tune shift of a note after FX (e.g. pitch, vibrato, slide...)
6669;;; There are 128 possible fractional semitones between two integer semitones.
6770;;;
@@ -82,41 +85,11 @@ sine::
8285
8386;;; SSG tune delta for all 128 fractional semitones
8487ssg_tune_deltas::
85- . dw 0x0000 , 0x020e , 0x041d , 0x062b , 0x0839 , 0x0a47 , 0x0c55 , 0x0e62
86- . dw 0x106f , 0x127c , 0x1489 , 0x1695 , 0x18a2 , 0x1aae , 0x1cb9 , 0x1ec5
87- . dw 0x20d0 , 0x22db , 0x24e6 , 0x26f0 , 0x28fb , 0x2b05 , 0x2d0f , 0x2f18
88- . dw 0x3122 , 0x332b , 0x3534 , 0x373c , 0x3945 , 0x3b4d , 0x3d55 , 0x3f5d
89- . dw 0x4164 , 0x436b , 0x4572 , 0x4779 , 0x4980 , 0x4b86 , 0x4d8c , 0x4f92
90- . dw 0x5198 , 0x539d , 0x55a2 , 0x57a7 , 0x59ac , 0x5bb0 , 0x5db4 , 0x5fb8
91- . dw 0x61bc , 0x63c0 , 0x65c3 , 0x67c6 , 0x69c9 , 0x6bcb , 0x6dce , 0x6fd0
92- . dw 0x71d2 , 0x73d3 , 0x75d5 , 0x77d6 , 0x79d7 , 0x7bd8 , 0x7dd8 , 0x7fd9
93- . dw 0x81d9 , 0x83d8 , 0x85d8 , 0x87d7 , 0x89d7 , 0x8bd5 , 0x8dd4 , 0x8fd3
94- . dw 0x91d1 , 0x93cf , 0x95cc , 0x97ca , 0x99c7 , 0x9bc4 , 0x9dc1 , 0x9fbe
95- . dw 0xa1ba , 0xa3b6 , 0xa5b2 , 0xa7ae , 0xa9a9 , 0xaba4 , 0xad9f , 0xaf9a
96- . dw 0xb195 , 0xb38f , 0xb589 , 0xb783 , 0xb97c , 0xbb76 , 0xbd6f , 0xbf68
97- . dw 0xc161 , 0xc359 , 0xc551 , 0xc749 , 0xc941 , 0xcb39 , 0xcd30 , 0xcf27
98- . dw 0xd11e , 0xd315 , 0xd50b , 0xd701 , 0xd8f7 , 0xdaed , 0xdce3 , 0xded8
99- . dw 0xe0cd , 0xe2c2 , 0xe4b6 , 0xe6ab , 0xe89f , 0xea93 , 0xec87 , 0xee7a
100- . dw 0xf06d , 0xf261 , 0xf453 , 0xf646 , 0xf838 , 0xfa2a , 0xfc1c , 0xfe0e
88+ .ssg_tune_deltas_data
10189
10290;;; FM F-num delta for all 128 fractional semitones
10391fm_fnum_deltas::
104- . dw 0x0000 , 0x01f1 , 0x03e3 , 0x05d5 , 0x07c7 , 0x09b9 , 0x0bac , 0x0d9e
105- . dw 0x0f92 , 0x1185 , 0x1378 , 0x156c , 0x1760 , 0x1954 , 0x1b49 , 0x1d3d
106- . dw 0x1f32 , 0x2127 , 0x231c , 0x2512 , 0x2708 , 0x28fe , 0x2af4 , 0x2cea
107- . dw 0x2ee1 , 0x30d8 , 0x32cf , 0x34c6 , 0x36be , 0x38b6 , 0x3aae , 0x3ca6
108- . dw 0x3e9e , 0x4097 , 0x4290 , 0x4489 , 0x4683 , 0x487c , 0x4a76 , 0x4c70
109- . dw 0x4e6a , 0x5065 , 0x5260 , 0x545b , 0x5656 , 0x5851 , 0x5a4d , 0x5c49
110- . dw 0x5e45 , 0x6041 , 0x623e , 0x643b , 0x6638 , 0x6835 , 0x6a33 , 0x6c30
111- . dw 0x6e2e , 0x702c , 0x722b , 0x742a , 0x7628 , 0x7828 , 0x7a27 , 0x7c27
112- . dw 0x7e26 , 0x8026 , 0x8227 , 0x8427 , 0x8628 , 0x8829 , 0x8a2a , 0x8c2c
113- . dw 0x8e2d , 0x902f , 0x9231 , 0x9434 , 0x9636 , 0x9839 , 0x9a3c , 0x9c3f
114- . dw 0x9e43 , 0xa047 , 0xa24b , 0xa44f , 0xa653 , 0xa858 , 0xaa5d , 0xac62
115- . dw 0xae67 , 0xb06d , 0xb273 , 0xb479 , 0xb67f , 0xb886 , 0xba8d , 0xbc94
116- . dw 0xbe9b , 0xc0a2 , 0xc2aa , 0xc4b2 , 0xc6ba , 0xc8c3 , 0xcacb , 0xccd4
117- . dw 0xcedd , 0xd0e7 , 0xd2f0 , 0xd4fa , 0xd704 , 0xd90f , 0xdb19 , 0xdd24
118- . dw 0xdf2f , 0xe13a , 0xe346 , 0xe551 , 0xe75d , 0xe96a , 0xeb76 , 0xed83
119- . dw 0xef90 , 0xf19d , 0xf3aa , 0xf5b8 , 0xf7c6 , 0xf9d4 , 0xfbe2 , 0xfdf1
92+ .fm_fnum_deltas_data
12093
12194
12295;;; Semitone frequency table
@@ -132,48 +105,19 @@ fm_fnum_deltas::
132105;;; SSG tune table for AES masterclock (8M=8055943)
133106 .bndry 256
134107ssg_dists_lsb::
135- ;; C-n, C#n, D-n, D#n, E-n, F-n, F#n, G-n, G#n, A-n, A#n, B-n
136- . dw 0x806e , 0xbe70 , 0x0754 , 0x5a80 , 0xb75f , 0x1d66 , 0x8c11 , 0x02e4 , 0x816a , 0x0735 , 0x93db , 0x26fb , 0 , 0 , 0 , 0
137- . dw 0x806e , 0xbe70 , 0x0754 , 0x5a80 , 0xb75f , 0x1d66 , 0x8c11 , 0x02e4 , 0x816a , 0x0735 , 0x93db , 0x26fb , 0 , 0 , 0 , 0
138- . dw 0xc037 , 0x5f38 , 0x03aa , 0xad40 , 0x5bb0 , 0x0eb3 , 0xc608 , 0x8172 , 0x40b5 , 0x039b , 0xc9f0 , 0x937b , 0 , 0 , 0 , 0
139- . dw 0x601b , 0x2f9c , 0x01d5 , 0xd6a0 , 0xadd8 , 0x875a , 0x6304 , 0x40b9 , 0x205a , 0x01ce , 0xe4f9 , 0xc9bc , 0 , 0 , 0 , 0
140- . dw 0xb00e , 0x97ce , 0x80ea , 0x6b50 , 0x56ec , 0x43ad , 0x3182 , 0x205d , 0x102d , 0x00e7 , 0xf27b , 0xe4df , 0 , 0 , 0 , 0
141- . dw 0xd807 , 0xcbe7 , 0xc075 , 0xb5a8 , 0xab76 , 0xa1d7 , 0x98c1 , 0x902e , 0x8817 , 0x8073 , 0x793e , 0x726f , 0 , 0 , 0 , 0
142- . dw 0x6c04 , 0x65f3 , 0x603b , 0x5ad4 , 0x55bb , 0x50eb , 0x4c61 , 0x4817 , 0x440b , 0x403a , 0x3c9f , 0x3937 , 0 , 0 , 0 , 0
143- . dw 0x3602 , 0x32fa , 0x301d , 0x2d6a , 0x2ade , 0x2875 , 0x2631 , 0x240b , 0x2206 , 0x201d , 0x1e4f , 0x1c9c , 0 , 0 , 0 , 0
108+ .ssg_dists_lsb_data
109+
144110 .bndry 256
145111ssg_tunes_msb::
146- ;; C-n, C#n, D-n, D#n, E-n, F-n, F#n, G-n, G#n, A-n, A#n, B-n
147- . dw 0xf097 , 0xe317 , 0xd658 , 0xca51 , 0xbef7 , 0xb43f , 0xaa22 , 0xa096 , 0x9793 , 0x8f11 , 0x870a , 0x7f76 , 0 , 0 , 0 , 0
148- . dw 0xf097 , 0xe317 , 0xd658 , 0xca51 , 0xbef7 , 0xb43f , 0xaa22 , 0xa096 , 0x9793 , 0x8f11 , 0x870a , 0x7f76 , 0 , 0 , 0 , 0
149- . dw 0x784f , 0x718f , 0x6b30 , 0x652c , 0x5f7f , 0x5a23 , 0x5515 , 0x504f , 0x4bcd , 0x478c , 0x4389 , 0x3fbf , 0 , 0 , 0 , 0
150- . dw 0x3c2b , 0x38cb , 0x359c , 0x329a , 0x2fc3 , 0x2d15 , 0x2a8e , 0x282b , 0x25ea , 0x23ca , 0x21c8 , 0x1fe3 , 0 , 0 , 0 , 0
151- . dw 0x1e19 , 0x1c69 , 0x1ad2 , 0x1951 , 0x17e5 , 0x168e , 0x154b , 0x1419 , 0x12f9 , 0x11e9 , 0x10e8 , 0x0ff5 , 0 , 0 , 0 , 0
152- . dw 0x0f10 , 0x0e38 , 0x0d6d , 0x0cac , 0x0bf6 , 0x0b4b , 0x0aa9 , 0x0a10 , 0x0980 , 0x08f8 , 0x0878 , 0x07fe , 0 , 0 , 0 , 0
153- . dw 0x078c , 0x0720 , 0x06ba , 0x065a , 0x05ff , 0x05a9 , 0x0558 , 0x050c , 0x04c4 , 0x0480 , 0x0440 , 0x0403 , 0 , 0 , 0 , 0
154- . dw 0x03ca , 0x0394 , 0x0361 , 0x0331 , 0x0303 , 0x02d8 , 0x02b0 , 0x028a , 0x0266 , 0x0244 , 0x0224 , 0x0205 , 0 , 0 , 0 , 0
112+ .ssg_dists_msb_data
113+
155114 .bndry 128
156115ssg_tunes_lsb::
157- ;; C-n, C#n, D-n, D#n, E-n, F-n, F#n, G-n, G#n, A-n, A#n, B-n
158- . db 0xc2 , 0x54 , 0xe4 , 0x90 , 0x10 , 0xb1 , 0x4b , 0x3a , 0x56 , 0xec , 0xb7 , 0xdc , 0 , 0 , 0 , 0
159- . db 0xc2 , 0x54 , 0xe4 , 0x90 , 0x10 , 0xb1 , 0x4b , 0x3a , 0x56 , 0xec , 0xb7 , 0xdc , 0 , 0 , 0 , 0
160- . db 0xe1 , 0xaa , 0x72 , 0xc8 , 0x88 , 0xd8 , 0x25 , 0x1d , 0xab , 0xf6 , 0x5b , 0x6b , 0 , 0 , 0 , 0
161- . db 0xf0 , 0xd5 , 0x39 , 0x64 , 0xc4 , 0xec , 0x92 , 0x8e , 0xd5 , 0x7b , 0xad , 0xb4 , 0 , 0 , 0 , 0
162- . db 0xf8 , 0xea , 0x1c , 0x32 , 0xe2 , 0xf6 , 0x49 , 0xc7 , 0x6a , 0x3d , 0x56 , 0xdb , 0 , 0 , 0 , 0
163- . db 0xfc , 0xf5 , 0x0e , 0x99 , 0xf1 , 0x7b , 0xa4 , 0xe3 , 0xb5 , 0x9e , 0x2b , 0xed , 0 , 0 , 0 , 0
164- . db 0x7e , 0x7a , 0x87 , 0x4c , 0x78 , 0xbd , 0xd2 , 0x71 , 0x5a , 0x4f , 0x15 , 0x76 , 0 , 0 , 0 , 0
165- . db 0x3f , 0x3d , 0x43 , 0x26 , 0xbc , 0xde , 0x69 , 0x38 , 0x2d , 0x27 , 0x0a , 0xbb , 0 , 0 , 0 , 0
116+ .ssg_tunes_lsb_data
117+
166118 .bndry 128
167119ssg_dists_msb::
168- ;; C-n, C#n, D-n, D#n, E-n, F-n, F#n, G-n, G#n, A-n, A#n, B-n
169- . db 0x0d , 0x0c , 0x0c , 0x0b , 0x0a , 0x0a , 0x09 , 0x09 , 0x08 , 0x08 , 0x07 , 0x07 , 0 , 0 , 0 , 0
170- . db 0x0d , 0x0c , 0x0c , 0x0b , 0x0a , 0x0a , 0x09 , 0x09 , 0x08 , 0x08 , 0x07 , 0x07 , 0 , 0 , 0 , 0
171- . db 0x06 , 0x06 , 0x06 , 0x05 , 0x05 , 0x05 , 0x04 , 0x04 , 0x04 , 0x04 , 0x03 , 0x03 , 0 , 0 , 0 , 0
172- . db 0x03 , 0x03 , 0x03 , 0x02 , 0x02 , 0x02 , 0x02 , 0x02 , 0x02 , 0x02 , 0x01 , 0x01 , 0 , 0 , 0 , 0
173- . db 0x01 , 0x01 , 0x01 , 0x01 , 0x01 , 0x01 , 0x01 , 0x01 , 0x01 , 0x01 , 0x00 , 0x00 , 0 , 0 , 0 , 0
174- . db 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0 , 0 , 0 , 0
175- . db 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0 , 0 , 0 , 0
176- . db 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0 , 0 , 0 , 0
120+ .ssg_dists_lsb_data
177121
178122
179123;;; F-num frequency table
@@ -194,29 +138,7 @@ ssg_dists_msb::
194138
195139;;; FM F-num table for AES masterclock (8M=8055943)
196140fm_fnums::
197- . db 0xee , 0x56 , 0x26 ; C-n
198- . db 0x52 , 0x9e , 0x28 ; C#n
199- . db 0x7e , 0x08 , 0x2b ; D-n
200- . db 0x17 , 0x97 , 0x2d ; D#n
201- . db 0x1d , 0x4d , 0x30 ; E-n
202- . db 0xf8 , 0x2b , 0x33 ; F-n
203- . db 0x7c , 0x36 , 0x36 ; F#n
204- . db 0xd3 , 0x6f , 0x39 ; G-n
205- . db 0xe4 , 0xd9 , 0x3c ; G#n
206- . db 0x20 , 0x78 , 0x40 ; A-n
207- . db 0x0c , 0x4d , 0x44 ; A#n
208- . db 0x01 , 0x5d , 0x48 ; B-n
209- . db 0xe7 , 0xa9 , 0x4c ; C-n+1
141+ .fm_fnums_data
142+
210143fm_dists::
211- . db 0x64 , 0x47 , 0x02 ; C-n
212- . db 0x2c , 0x6a , 0x02 ; C#n
213- . db 0x99 , 0x8e , 0x02 ; D-n
214- . db 0x06 , 0xb6 , 0x02 ; D#n
215- . db 0xdb , 0xde , 0x02 ; E-n
216- . db 0x84 , 0x0a , 0x03 ; F-n
217- . db 0x57 , 0x39 , 0x03 ; F#n
218- . db 0x11 , 0x6a , 0x03 ; G-n
219- . db 0x3c , 0x9e , 0x03 ; G#n
220- . db 0xec , 0xd4 , 0x03 ; A-n
221- . db 0xf5 , 0x0f , 0x04 ; A#n
222- . db 0xe6 , 0x4c , 0x04 ; B-n
144+ .fm_dists_data
0 commit comments