Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix/tables #284

Merged
merged 13 commits into from
Nov 12, 2024
164 changes: 164 additions & 0 deletions extras/python/make_standard_tables.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,164 @@
#!/usr/bin/python3

"""
* make_standard_tables.py
*
* This file is part of Mozzi.
*
* Copyright 2012-2024 Thomas Combriat and the Mozzi Team
*
* Mozzi is licensed under the GNU Lesser General Public Licence (LGPL) Version 2.1 or later.
*
* This file allows to regenerate the standard tables of Mozzi (sin, cos, cosphase, triangle and saw)
"""

import numpy as np # numerics
import textwrap
import os as os
#import math as math # math

folder = ".."+os.sep+".."+os.sep+"tables" + os.sep

def write_header(fout, samplerate,name):
tablename = name.upper()+str(samplerate)
fout.write('#ifndef ' + tablename + '_H_' + '\n')
fout.write('#define ' + tablename + '_H_' + '\n \n')
fout.write("/**\n This table is part of Mozzi\n Generated with extras/python/make_standard_tables.py\n*/\n\n")
fout.write('#include <Arduino.h>'+'\n')
fout.write('#include "mozzi_pgmspace.h"'+'\n \n')
fout.write('#define ' + tablename + '_NUM_CELLS '+ str(samplerate)+'\n')
fout.write('#define ' + tablename + '_SAMPLERATE '+ str(samplerate)+'\n \n')
fout.write('CONSTTABLE_STORAGE(int8_t) ' + tablename + '_DATA [] = {\n')

def write_footer(fout,samplerate,name):
tablename = name.upper()+str(samplerate)
fout.write('\n }; \n \n #endif /* ' + tablename + '_H_ */\n')





#### SIN

SR = [256,512,1024,2048,4096,8192]
name = "sin"

for s in SR:
fout = open(folder+name+str(s)+"_int8.h","w")

write_header(fout,s,name)

t = np.linspace(0,2*np.pi,num=s,endpoint=False)
outstring=""
for i in range(s):
outstring+=str(round(127*np.sin(t[i])))+", "

outstring = textwrap.fill(outstring,80)
fout.write(outstring)
write_footer(fout,s,name)
fout.close()

print("Wrote:"+name.upper()+str(s)+"_INT8")


#### COS
# Note that this is actually a negative cos

SR = [256,512,1024,2048,4096,8192]
name = "cos"

for s in SR:
fout = open(folder+name+str(s)+"_int8.h","w")

write_header(fout,s,name)

t = np.linspace(0,2*np.pi,num=s,endpoint=False)
outstring=""
for i in range(s):
outstring+=str(round(-127*np.cos(t[i])))+", "

outstring = textwrap.fill(outstring,80)
fout.write(outstring)
write_footer(fout,s,name)
fout.close()

print("Wrote:"+name.upper()+str(s)+"_INT8")


#### COSPHASE

SR = [256,2048,8192]
name = "cosphase"

for s in SR:
fout = open(folder+name+str(s)+"_int8.h","w")

write_header(fout,s,name)

t = np.linspace(0,2*np.pi,num=s,endpoint=False)
outstring=""
for i in range(s):
outstring+=str(round(127*np.cos(t[i])))+", "

outstring = textwrap.fill(outstring,80)
fout.write(outstring)
write_footer(fout,s,name)
fout.close()

print("Wrote:"+name.upper()+str(s)+"_INT8")




#### TRIANGLE

SR = [512,1024,2048]
name = "triangle"

for s in SR:
fout = open(folder+name+str(s)+"_int8.h","w")

write_header(fout,s,name)

t = np.linspace(0,2*np.pi,num=s,endpoint=False)
outstring=""
for i in range(s):
if (i<=s/4):
outstring+=str(round(i*127./s*4))+", "
elif (i<=s*3/4):
outstring+=str(round(127-(i-s/4)*(127*2)/(s/2)))+", "
else:
outstring+=str(round(-127.+127.*(i-s*3/4)/s*4))+", "

outstring = textwrap.fill(outstring,80)
fout.write(outstring)
write_footer(fout,s,name)
fout.close()

print("Wrote:"+name.upper()+str(s)+"_INT8")





#### SAW

SR = [256,512,1024,2048,4096,8192]
name = "saw"

for s in SR:
fout = open(folder+name+str(s)+"_int8.h","w")

write_header(fout,s,name)

t = np.linspace(0,2*np.pi,num=s,endpoint=False)
outstring=""
for i in range(s):
outstring+=str(str(round(-127+127*2.*i/(s-1)))+", ")

outstring = textwrap.fill(outstring,80)
fout.write(outstring)
write_footer(fout,s,name)
fout.close()

print("Wrote:"+name.upper()+str(s)+"_INT8")
2 changes: 1 addition & 1 deletion extras/python/sin1024_int8.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
## generates a sin-shaped table with values -128 to 127

## NOTE: this table has been generated using the "make_standard_tables.py" script, which produces a symetric table.

import array
import os
Expand Down
900 changes: 412 additions & 488 deletions tables/brownnoise8192_int8.h

Large diffs are not rendered by default.

881 changes: 413 additions & 468 deletions tables/chum78_int8.h

Large diffs are not rendered by default.

145 changes: 74 additions & 71 deletions tables/cos1024_int8.h
Original file line number Diff line number Diff line change
@@ -1,78 +1,81 @@
#ifndef COS1024_H_
#define COS1024_H_

/**
This table is part of Mozzi
Generated with extras/python/make_standard_tables.py
*/

#include <Arduino.h>
#include "mozzi_pgmspace.h"

#define COS1024_NUM_CELLS 1024
#define COS1024_SAMPLERATE 1024

CONSTTABLE_STORAGE(int8_t) COS1024_DATA [] =
{
-128, -128, -128, -128, -128, -128, -128,
-128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128,
-128, -127, -127, -127, -127, -127, -127, -127, -127, -126, -126, -126, -126,
-126, -126, -126, -125, -125, -125, -125, -125, -124, -124, -124, -124, -124,
-123, -123, -123, -123, -123, -122, -122, -122, -122, -121, -121, -121, -120,
-120, -120, -120, -119, -119, -119, -118, -118, -118, -118, -117, -117, -117,
-116, -116, -116, -115, -115, -114, -114, -114, -113, -113, -113, -112, -112,
-111, -111, -111, -110, -110, -109, -109, -109, -108, -108, -107, -107, -106,
-106, -106, -105, -105, -104, -104, -103, -103, -102, -102, -101, -101, -100,
-100, -99, -99, -98, -98, -97, -97, -96, -96, -95, -95, -94, -94, -93, -93, -92,
-92, -91, -90, -90, -89, -89, -88, -88, -87, -86, -86, -85, -85, -84, -84, -83,
-82, -82, -81, -80, -80, -79, -79, -78, -77, -77, -76, -75, -75, -74, -74, -73,
-72, -72, -71, -70, -70, -69, -68, -68, -67, -66, -66, -65, -64, -64, -63, -62,
-62, -61, -60, -59, -59, -58, -57, -57, -56, -55, -55, -54, -53, -52, -52, -51,
-50, -49, -49, -48, -47, -47, -46, -45, -44, -44, -43, -42, -41, -41, -40, -39,
-38, -38, -37, -36, -35, -35, -34, -33, -32, -32, -31, -30, -29, -29, -28, -27,
-26, -25, -25, -24, -23, -22, -22, -21, -20, -19, -19, -18, -17, -16, -15, -15,
-14, -13, -12, -11, -11, -10, -9, -8, -8, -7, -6, -5, -4, -4, -3, -2, -1, -1, 0,
1, 2, 3, 3, 4, 5, 6, 7, 7, 8, 9, 10, 10, 11, 12, 13, 14, 14, 15, 16, 17, 17, 18,
19, 20, 21, 21, 22, 23, 24, 24, 25, 26, 27, 28, 28, 29, 30, 31, 31, 32, 33, 34,
34, 35, 36, 37, 37, 38, 39, 40, 40, 41, 42, 43, 43, 44, 45, 46, 46, 47, 48, 48,
49, 50, 51, 51, 52, 53, 54, 54, 55, 56, 56, 57, 58, 58, 59, 60, 61, 61, 62, 63,
63, 64, 65, 65, 66, 67, 67, 68, 69, 69, 70, 71, 71, 72, 73, 73, 74, 74, 75, 76,
76, 77, 78, 78, 79, 79, 80, 81, 81, 82, 83, 83, 84, 84, 85, 85, 86, 87, 87, 88,
88, 89, 89, 90, 91, 91, 92, 92, 93, 93, 94, 94, 95, 95, 96, 96, 97, 97, 98, 98,
99, 99, 100, 100, 101, 101, 102, 102, 103, 103, 104, 104, 105, 105, 105, 106,
106, 107, 107, 108, 108, 108, 109, 109, 110, 110, 110, 111, 111, 112, 112, 112,
113, 113, 113, 114, 114, 115, 115, 115, 116, 116, 116, 117, 117, 117, 117, 118,
118, 118, 119, 119, 119, 119, 120, 120, 120, 121, 121, 121, 121, 122, 122, 122,
122, 122, 123, 123, 123, 123, 123, 124, 124, 124, 124, 124, 125, 125, 125, 125,
125, 125, 125, 126, 126, 126, 126, 126, 126, 126, 126, 127, 127, 127, 127, 127,
127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
127, 127, 127, 127, 126, 126, 126, 126, 126, 126, 126, 126, 125, 125, 125, 125,
125, 125, 125, 124, 124, 124, 124, 124, 123, 123, 123, 123, 123, 122, 122, 122,
122, 122, 121, 121, 121, 121, 120, 120, 120, 119, 119, 119, 119, 118, 118, 118,
117, 117, 117, 117, 116, 116, 116, 115, 115, 115, 114, 114, 113, 113, 113, 112,
112, 112, 111, 111, 110, 110, 110, 109, 109, 108, 108, 108, 107, 107, 106, 106,
106, 105, 105, 104, 104, 103, 103, 102, 102, 101, 101, 100, 100, 99, 99, 98, 98,
97, 97, 96, 96, 95, 95, 94, 94, 93, 93, 92, 92, 91, 91, 90, 89, 89, 88, 88, 87,
87, 86, 85, 85, 84, 84, 83, 83, 82, 81, 81, 80, 79, 79, 78, 78, 77, 76, 76, 75,
74, 74, 73, 73, 72, 71, 71, 70, 69, 69, 68, 67, 67, 66, 65, 65, 64, 63, 63, 62,
61, 61, 60, 59, 58, 58, 57, 56, 56, 55, 54, 54, 53, 52, 51, 51, 50, 49, 48, 48,
47, 46, 46, 45, 44, 43, 43, 42, 41, 40, 40, 39, 38, 37, 37, 36, 35, 34, 34, 33,
32, 31, 31, 30, 29, 28, 28, 27, 26, 25, 24, 24, 23, 22, 21, 21, 20, 19, 18, 18,
17, 16, 15, 14, 14, 13, 12, 11, 10, 10, 9, 8, 7, 7, 6, 5, 4, 3, 3, 2, 1, 0, 0,
-1, -2, -3, -4, -4, -5, -6, -7, -8, -8, -9, -10, -11, -11, -12, -13, -14, -15,
-15, -16, -17, -18, -19, -19, -20, -21, -22, -22, -23, -24, -25, -25, -26, -27,
-28, -29, -29, -30, -31, -32, -32, -33, -34, -35, -35, -36, -37, -38, -38, -39,
-40, -41, -41, -42, -43, -44, -44, -45, -46, -47, -47, -48, -49, -49, -50, -51,
-52, -52, -53, -54, -55, -55, -56, -57, -57, -58, -59, -59, -60, -61, -62, -62,
-63, -64, -64, -65, -66, -66, -67, -68, -68, -69, -70, -70, -71, -72, -72, -73,
-74, -74, -75, -75, -76, -77, -77, -78, -79, -79, -80, -80, -81, -82, -82, -83,
-84, -84, -85, -85, -86, -86, -87, -88, -88, -89, -89, -90, -90, -91, -92, -92,
-93, -93, -94, -94, -95, -95, -96, -96, -97, -97, -98, -98, -99, -99, -100,
-100, -101, -101, -102, -102, -103, -103, -104, -104, -105, -105, -106, -106,
-106, -107, -107, -108, -108, -109, -109, -109, -110, -110, -111, -111, -111,
-112, -112, -113, -113, -113, -114, -114, -114, -115, -115, -116, -116, -116,
-117, -117, -117, -118, -118, -118, -118, -119, -119, -119, -120, -120, -120,
-120, -121, -121, -121, -122, -122, -122, -122, -123, -123, -123, -123, -123,
-124, -124, -124, -124, -124, -125, -125, -125, -125, -125, -126, -126, -126,
-126, -126, -126, -126, -127, -127, -127, -127, -127, -127, -127, -127, -128,
-128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128,
-128, -128, -128, -128, -128, -128,
};

#endif /* COS1024_H_ */

CONSTTABLE_STORAGE(int8_t) COS1024_DATA [] = {
-127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127,
-127, -127, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126,
-125, -125, -125, -125, -125, -125, -125, -124, -124, -124, -124, -124, -124,
-123, -123, -123, -123, -123, -122, -122, -122, -122, -122, -121, -121, -121,
-121, -120, -120, -120, -120, -119, -119, -119, -118, -118, -118, -118, -117,
-117, -117, -116, -116, -116, -115, -115, -115, -114, -114, -114, -113, -113,
-113, -112, -112, -112, -111, -111, -111, -110, -110, -109, -109, -109, -108,
-108, -107, -107, -106, -106, -106, -105, -105, -104, -104, -103, -103, -102,
-102, -102, -101, -101, -100, -100, -99, -99, -98, -98, -97, -97, -96, -96, -95,
-95, -94, -94, -93, -93, -92, -91, -91, -90, -90, -89, -89, -88, -88, -87, -86,
-86, -85, -85, -84, -84, -83, -82, -82, -81, -81, -80, -79, -79, -78, -78, -77,
-76, -76, -75, -74, -74, -73, -72, -72, -71, -71, -70, -69, -69, -68, -67, -67,
-66, -65, -65, -64, -63, -63, -62, -61, -61, -60, -59, -58, -58, -57, -56, -56,
-55, -54, -54, -53, -52, -51, -51, -50, -49, -49, -48, -47, -46, -46, -45, -44,
-44, -43, -42, -41, -41, -40, -39, -38, -38, -37, -36, -35, -35, -34, -33, -32,
-32, -31, -30, -29, -29, -28, -27, -26, -26, -25, -24, -23, -22, -22, -21, -20,
-19, -19, -18, -17, -16, -16, -15, -14, -13, -12, -12, -11, -10, -9, -9, -8, -7,
-6, -5, -5, -4, -3, -2, -2, -1, 0, 1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 9, 9, 10, 11,
12, 12, 13, 14, 15, 16, 16, 17, 18, 19, 19, 20, 21, 22, 22, 23, 24, 25, 26, 26,
27, 28, 29, 29, 30, 31, 32, 32, 33, 34, 35, 35, 36, 37, 38, 38, 39, 40, 41, 41,
42, 43, 44, 44, 45, 46, 46, 47, 48, 49, 49, 50, 51, 51, 52, 53, 54, 54, 55, 56,
56, 57, 58, 58, 59, 60, 61, 61, 62, 63, 63, 64, 65, 65, 66, 67, 67, 68, 69, 69,
70, 71, 71, 72, 72, 73, 74, 74, 75, 76, 76, 77, 78, 78, 79, 79, 80, 81, 81, 82,
82, 83, 84, 84, 85, 85, 86, 86, 87, 88, 88, 89, 89, 90, 90, 91, 91, 92, 93, 93,
94, 94, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102,
102, 103, 103, 104, 104, 105, 105, 106, 106, 106, 107, 107, 108, 108, 109, 109,
109, 110, 110, 111, 111, 111, 112, 112, 112, 113, 113, 113, 114, 114, 114, 115,
115, 115, 116, 116, 116, 117, 117, 117, 118, 118, 118, 118, 119, 119, 119, 120,
120, 120, 120, 121, 121, 121, 121, 122, 122, 122, 122, 122, 123, 123, 123, 123,
123, 124, 124, 124, 124, 124, 124, 125, 125, 125, 125, 125, 125, 125, 126, 126,
126, 126, 126, 126, 126, 126, 126, 126, 126, 127, 127, 127, 127, 127, 127, 127,
127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
127, 127, 127, 127, 127, 127, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
126, 125, 125, 125, 125, 125, 125, 125, 124, 124, 124, 124, 124, 124, 123, 123,
123, 123, 123, 122, 122, 122, 122, 122, 121, 121, 121, 121, 120, 120, 120, 120,
119, 119, 119, 118, 118, 118, 118, 117, 117, 117, 116, 116, 116, 115, 115, 115,
114, 114, 114, 113, 113, 113, 112, 112, 112, 111, 111, 111, 110, 110, 109, 109,
109, 108, 108, 107, 107, 106, 106, 106, 105, 105, 104, 104, 103, 103, 102, 102,
102, 101, 101, 100, 100, 99, 99, 98, 98, 97, 97, 96, 96, 95, 95, 94, 94, 93, 93,
92, 91, 91, 90, 90, 89, 89, 88, 88, 87, 86, 86, 85, 85, 84, 84, 83, 82, 82, 81,
81, 80, 79, 79, 78, 78, 77, 76, 76, 75, 74, 74, 73, 72, 72, 71, 71, 70, 69, 69,
68, 67, 67, 66, 65, 65, 64, 63, 63, 62, 61, 61, 60, 59, 58, 58, 57, 56, 56, 55,
54, 54, 53, 52, 51, 51, 50, 49, 49, 48, 47, 46, 46, 45, 44, 44, 43, 42, 41, 41,
40, 39, 38, 38, 37, 36, 35, 35, 34, 33, 32, 32, 31, 30, 29, 29, 28, 27, 26, 26,
25, 24, 23, 22, 22, 21, 20, 19, 19, 18, 17, 16, 16, 15, 14, 13, 12, 12, 11, 10,
9, 9, 8, 7, 6, 5, 5, 4, 3, 2, 2, 1, 0, -1, -2, -2, -3, -4, -5, -5, -6, -7, -8,
-9, -9, -10, -11, -12, -12, -13, -14, -15, -16, -16, -17, -18, -19, -19, -20,
-21, -22, -22, -23, -24, -25, -26, -26, -27, -28, -29, -29, -30, -31, -32, -32,
-33, -34, -35, -35, -36, -37, -38, -38, -39, -40, -41, -41, -42, -43, -44, -44,
-45, -46, -46, -47, -48, -49, -49, -50, -51, -51, -52, -53, -54, -54, -55, -56,
-56, -57, -58, -58, -59, -60, -61, -61, -62, -63, -63, -64, -65, -65, -66, -67,
-67, -68, -69, -69, -70, -71, -71, -72, -72, -73, -74, -74, -75, -76, -76, -77,
-78, -78, -79, -79, -80, -81, -81, -82, -82, -83, -84, -84, -85, -85, -86, -86,
-87, -88, -88, -89, -89, -90, -90, -91, -91, -92, -93, -93, -94, -94, -95, -95,
-96, -96, -97, -97, -98, -98, -99, -99, -100, -100, -101, -101, -102, -102,
-102, -103, -103, -104, -104, -105, -105, -106, -106, -106, -107, -107, -108,
-108, -109, -109, -109, -110, -110, -111, -111, -111, -112, -112, -112, -113,
-113, -113, -114, -114, -114, -115, -115, -115, -116, -116, -116, -117, -117,
-117, -118, -118, -118, -118, -119, -119, -119, -120, -120, -120, -120, -121,
-121, -121, -121, -122, -122, -122, -122, -122, -123, -123, -123, -123, -123,
-124, -124, -124, -124, -124, -124, -125, -125, -125, -125, -125, -125, -125,
-126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, -127, -127,
-127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127,
};

#endif /* COS1024_H_ */
Loading
Loading