Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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