/ proof-of-concept / bead-percussion
Sign in
proof-of-concept / bead-percussion
bead-percussion / matlab / examples / dome.m
41 lines · 1.6 KBCodeBlameHistory
2% by a steady load (like air pressure underneath), struck hard.
3%
4% A flat net only becomes chaotic when struck hard enough to bend its pitch
5% by about a semitone, and then it sounds harsh. Curvature changes that:
6% in a dome, two modes can drive a third directly (as in gongs and
7% cymbals), so energy moves between modes at much smaller amplitude. Here
8% the motion is chaotic (turn on "perturbed twin") while the main partial
9% moves by only about 20 cents; what changes from strike to strike is the
10% shimmer of the partials, not the pitch. Try force 5 (regular) and 15
11% (chaotic), and compare with load = 0 (flat).
13R = 0.06; % radius (m)
14a = 0.01; % bead spacing (m)
15sigma = 1; % areal density (kg/m^2)
16T = 2000; % membrane tension (N/m)
17strain = 0.005; % spring stretch at rest
19[pos, tri, rim] = bp_hexdisk(R, a);
20E = bp_edges(tri);
21f0 = T * a / sqrt(3);
22k = f0 / (strain * a);
24sys.pos = pos;
25sys.mass = sigma * (sqrt(3)/2) * a^2;
26sys.pinned = rim;
27sys.springs = bp_springs(pos, E, k, f0);
28[sys.friction, sys.dashpots] = bp_decay(pos, sys.mass, sys.springs, [200 2.5; 2000 1.5]);
30% Steady upward force on every bead (N). The solver first finds the domed
31% shape where springs and load balance (sys.relax, on by default with a
32% load); the sag is reported with the run.
33sys.load = [0 0 2];
35hit.beads = bp_near(pos, [0.3*R 0.1*R 0], 1.5*a);
36hit.force = [0 0 -15]; % peak force per bead (N)
37hit.duration = 2e-3;
38sys.hits = hit;
40sys.listen = struct('beads', bp_near(pos, [-0.3*R 0.2*R 0], 0), 'dir', [0 0 1]);
41sys.duration = 2.5;
↑↓ move↵openescclose