Square-bore flute
A five-hole minor-pentatonic flute in A4, in the Native American style, rebuilt in 3mm plywood with a square or rectangular bore. It keeps the bore area of a 3/4in (19.05mm) round-bore flute, 285mm², so the air column is the same in a section a laser can build. All closed it sounds A4; opening the holes from the foot up gives C5, D5, E5, G5 and A5.
Output is millimetre-true — 1 user unit = 1mm with a physical width/height — so it prints and cuts at real size.
None of these builds has been cut or played yet. The holes and the foot come from an acoustic model, and the foot is cut long to be trimmed to pitch. The author's own flute of 2017, which has been, is described here too, and most of its ideas are in every build.
| box-square-6 · the whole flute on one 593 × 141mm sheet |
Built for LaserMadeMusic.
The rest of the build files — every instrument, generator and tool, indexed.
The builds
Six builds. The box and the stack each come with the finger holes in 3mm or 6mm of wall, and the boxes come finger-jointed or flat, butt-jointed and glued as the 2017 flute was: box-square-3-flat. The 3D view below has a toggle for each. Every build carries its flue both ways at once, in the bird and in the nest, each in a colour of its own, so the laser cuts whichever you choose: see Bird, nest or savanna flue.
| Build | Construction | Bore | Hole wall | Parts | Sheets | Joints |
|---|---|---|---|---|---|---|
box-square-3 |
finger-jointed box | 16.88 × 16.88mm | 3mm | 12 | 1 | the bird's layers and the cap glued, the rest press-fit |
box-square-3-flat |
flat box, butt-jointed | 16.88 × 16.88mm | 3mm | 12 | 1 | the sides, the bird's layers and the cap glued, the plug discs press-fit |
box-square-6 |
finger-jointed box | 16.88 × 16.88mm | 6mm | 13 | 1 | the doubler, the bird's layers and the cap glued |
box-square-6-flat |
flat box, butt-jointed | 16.88 × 16.88mm | 6mm | 13 | 1 | the sides, the doubler, the bird's layers and the cap glued, the plug discs press-fit |
stack-rect-3 |
laminated stack | 15.83 × 18mm | 3mm | 12 | 1 | every layer and the cap glued |
stack-rect-6 |
laminated stack | 15.83 × 18mm | 6mm | 13 | 1 | every layer and the cap glued |
- The box is four plates, finger-jointed edge to edge: the sides' fingers fill notches in the edges of the top and the bottom and run flush to the outside faces, so no plate is left outboard of a joint. The plug is four discs pressed into the bore. A
-flatbox has plain plates instead, the sides glued between the top and the bottom: the same parts, the same count, and glue in place of a press-fit. - The stack is a bottom layer, six bore layers with the bore cut out of them and the plug left solid, and the top.
- The 6mm builds glue a 3mm doubler over the run of finger holes, so each hole has a 6mm chimney, as a wooden flute's wall would give it.
Every build carries the author's mouthpiece cap from the 2017 flute below: a plate glued over the mouth end, with a half-round notch in its bottom edge, away from the finger holes. The notch is a 9.59mm circle centred 0.33mm inside the edge, 5.1mm deep, so it opens through the bottom wall into the slow air chamber. The bottom plate has a second half-round notch, the same 9.59mm circle, cut into its mouth end midway across. It is at right angles to the cap's, so the two meet at the bottom corner as one rounded opening into the slow air chamber.
Every build has the 2017 flute's window and exit hole too: both run the whole width of the bore, with the flue joining them across that same width. And every finger hole sits in the 2017 flute's soft engraved depression, its ring.png kept in the original's proportion to the hole, 1.57 times it across; on a 6mm build the depressions are on the doubler, where the finger lands. In the box no finger stands beside either opening, since a full-width opening reaches the inner face of the bore, which is the floor of every finger notch.
The box is square, the bore that was asked for. The stack cannot be: it is a whole number of 3mm layers deep, 15 or 18mm, and 16.88 is neither, so it keeps the area and gives up the square.
Every build is 491–495mm long, and all of them fit a 600 × 308mm bed.
Turn it in 3D
What the model says
The bore's shape barely matters. The square and the 15.83 × 18mm rectangle put every hole within 1.2mm of each other, and even that is the window rather than the bore: the window is as wide as the bore, so the narrower rectangle has the narrower window. At one window width the two agree to 0.1mm. Box or stack is a building choice, not an acoustic one.
The wall's thickness matters most. With the holes in 6mm of wall instead of 3mm, every one of them sits 8.6–10.1mm nearer the window, because a hole's chimney is part of its length.
The holes are laid out for the hands. Five equal 8mm holes land 30, 31, 45 and 18mm apart in 3mm of wall, and 28, 30, 47 and 15mm apart in 6mm; two fingers will not cover holes 15 or 18mm apart. So the lower hand takes holes 1–3 and the upper hand 4–5, each hand's holes 25mm apart, and each hole is sized to its note. A flat box shares its jointed twin's layout:
| Builds | Sound chamber | Hole 1, C5 | Hole 2, D5 | Hole 3, E5 | Hole 4, G5 | Hole 5, A5 |
|---|---|---|---|---|---|---|
box-square-3-… |
354.3mm | 260.2 · ø7.1 | 235.2 · ø8.0 | 210.2 · ø9.9 | 159.4 · ø8.0 | 134.4 · ø6.4 |
box-square-6-… |
352.1mm | 251.6 · ø7.7 | 226.6 · ø8.0 | 201.6 · ø9.2 | 149.3 · ø8.0 | 124.3 · ø6.6 |
stack-rect-3-… |
353.1mm | 259.1 · ø7.1 | 234.1 · ø8.0 | 209.1 · ø9.9 | 158.3 · ø8.0 | 133.3 · ø6.4 |
stack-rect-6-… |
350.9mm | 250.5 · ø7.7 | 225.5 · ø8.0 | 200.5 · ø9.2 | 148.2 · ø8.0 | 123.2 · ø6.6 |
Distances are from the centre of the window, in mm. Hole 1 is nearest the foot. Drawn to scale at the square bore, mouth on the left:
The scale as ratios
Each note's frequency against the lowest one, as the just ratio that names the interval, and the step up from the note below it:
| Note | Interval from A4 | Ratio from A4 | Step from the note below | Just, cents | Tuned to, cents |
|---|---|---|---|---|---|
| A4 | unison | 1:1 | 0 | 0 | |
| C5 | minor third | 6:5 | 6:5, a minor third | 315.6 | 300 |
| D5 | perfect fourth | 4:3 | 10:9, a minor whole tone | 498.0 | 500 |
| E5 | perfect fifth | 3:2 | 9:8, a major whole tone | 702.0 | 700 |
| G5 | minor seventh | 9:5 | 6:5, a minor third | 1017.6 | 1000 |
| A5 | octave | 2:1 | 10:9, a minor whole tone | 1200.0 | 1200 |
The steps run 6:5, 10:9, 9:8, 6:5, 10:9: two minor thirds and three whole tones, and no semitone anywhere: no two notes are a half step apart. The model tunes to equal temperament, the last column, so every flute here is designed within 18 cents of the just ratios: the minor third and the minor seventh sit 15.6 and 17.6 cents flat of 6:5 and 9:5, and the fourth and the fifth are 2 cents off. The minor seventh has two other common just values: 16:9 at 996.1 cents and the harmonic 7:4 at 968.8.
Before you cut
The window's end correction is not measured. It is the least certain term in the model, and no built flute has checked it yet. Each 1mm of error in it moves the foot about 2.3mm. So the sound chamber is cut 15mm longer than the model's: trim the foot until the flute sounds A4 with every hole closed.
The holes move with it, almost as far. A 10% error in that correction moves the foot 2.2–2.4mm and every hole 2.0–2.4mm. Trimming the foot puts the fundamental right but leaves the holes where the model put them, so expect to tune each one. A hole that plays flat can be opened with a file. A hole that plays sharp cannot be closed up.
The bore is 3/4in, the size for A4. Flutopedia's bore table puts A4 near 3/4in, so these sit with most flutes in this key.
The flue is a fill engrave, the full width of the bore, in two colours: red on the underside of the bottom bird layer, and magenta on the top plate over the plug. Run one for a bird or a nest flue, about 1mm deep, or both, about 0.5mm each, for a savanna flue. The depth is a power setting, so find it on scrap first.
File the splitting edge by hand. The window's far edge, where the air splits, needs a clean bevel of about 30°, and a laser cuts square, charred edges. File it before assembly, while the top is still a flat plate on the bench; if the edge goes wrong, recut the top.
Cut it in 3mm Baltic birch plywood, at a 0.13mm kerf. The finger joints are the ones on the trumpet bores in trumpet-elbows-allowed: Boxes.py's own, with 6mm fingers and 6mm spaces and no play, so the fit comes from the kerf compensation alone (a -flat box glues its sides instead). If your laser's kerf is not 0.13mm, redraw the sheets for its own with --kerf=: a press-fit that comes out loose wants a wider kerf, one too tight to close a narrower one. The plug discs are drawn 0.12mm over the bore, the mallet fit used on the lyre-harp. Press-fit, then seal every seam with shellac. The doubler, the bird's layers, every layer of the stack and every mouthpiece cap are glued.
Run the engraves first, then the cuts. Red and magenta engrave the flue's two halves, either or both; blue engraves the depressions; then orange cuts the holes, slots and windows, and black frees the parts. Red and magenta are outside the house order every LaserMadeMusic repository uses, whose one engrave colour is blue: the two halves need a colour each so that either can be left off. The parts are not numbered: the 3D view shows where each one goes. Every build also carries a greyscale image round each finger hole, the depression. It needs an image engrave that turns grey into depth, such as Grayscale mode in xTool Creative Space.
Tuning
- Tie the bird on over the exit hole, its front edge on the window's near edge. It is tied rather than glued, so it can be slid to voice the flute. Any thin leather strip will do; the 2017 flute's,
yours/cut-files/your-flute-leather-tie-cut-files.svg, is 360 × 4.6mm, long enough to wrap any of these bodies. - With every hole closed, trim the foot until the flute sounds A4.
- Open hole 1 and tune C5. The holes are cut to the model's size, so if a note is flat, open its hole slightly with a file.
- Work up the flute in order, since each hole nudges the ones above it.
Regenerating it
python3 naf_model.py # the holes for every build, printed
python3 naf_model.py --mouth=0.8 # with a different window correction
python3 square_flute.py --no-write # the generator's checks, writing nothing
python3 square_flute.py --out=cut-files # all six builds
python3 square_flute.py --kerf=0.18 --out=mine # for a laser with a 0.18mm kerf
python3 your_flute.py --out=yours/cut-files # the 2017 flute's prediction, and its leather tie
python3 page_assets.py # viewer.js, turn.html and the two plans
naf_model.py is a transmission-matrix model, the standard way woodwind calculators predict pitch. It treats the bore as a lossy tube, using the section's area and its hydraulic radius, which is where a square differs from a circle. Each finger hole is Keefe's tone hole, open or closed. At the top, the window opens into the bore beside a short closed stub up to the plug.
square_flute.py builds each of the six from what the model asks for and checks it before writing anything:
- every note within a cent of its target
- every part on the bed
- every hole inside the bore
- enough ply between neighbouring holes, and between a hole and a finger notch
- the fingers flush with the outside faces
- the top in one piece
- the flue's two halves, nest and bird, lined up over the whole plug
- in a box, no finger notch beside the exit hole or the window, which both reach the notches' floor
- the cap's notch and the bottom plate's end notch both opening into the bore
- the depressions clear of each other and of the plate's edges, and the doubler clear of the window
- every part placed on a sheet
It borrows its SVG path writer from ribbon_bore.py in swept-curve, so it expects that repository cloned beside this one.
.repro holds the exact command for every generated file here, and lists the 2017 originals as shipped without one.
Bird, nest or savanna flue: woodland, plains and between
Where the flue is carved is chosen at the laser, not in the file. Every sheet carries both halves, each in a colour of its own: red in the underside of the bird, and magenta in the nest, the top plate's face over the plug. The two are lined up, so run either or both:
| Run | Where the flue is carved | Style | Depth |
|---|---|---|---|
| red only | the underside of the block, the bird | woodland | about 1mm |
| magenta only | the flute's body, the nest under the bird, as in the 2017 flute | plains, or prairie | about 1mm |
| both | half in each | savanna, where the woodland meets the prairie: not a traditional style, an experiment | about 0.5mm each |
Bird and nest are the two traditional places for a Native American flute's flue, kept side by side on purpose; savanna, half in each, is an experiment between them. Until 2026-10-18 each was a build of its own, eighteen in all.
The two put the airstream at different heights. A flue carved in the bird has the nest's flat surface as its floor, so the air leaves just above the top plate. A flue carved in the nest has the bird's flat underside as its roof, so the air leaves just below the top plate's surface. A savanna flue straddles the joint, so the air leaves at the top plate's surface itself, midway between the two. Against the splitting edge on the window's far side, that is a shift of about one flue depth, roughly 1mm, which is one reason the two styles voice differently. The model does not simulate the jet, so which suits these flutes is for a test cut to show.
A third traditional way forms the flue with a spacer plate: a thin plate with a slot cut through it, between a flat bird and a flat nest. Its floor is the nest, so the air leaves above the top plate exactly as from a bird flue; only the making differs. The depth is the spacer's thickness rather than an engrave, so it is exact and even; the floor and roof are clean ply faces rather than a charred groove; a different depth is a different spacer, not a new bird; but it is one more surface to seal, and it wants stock about 1mm thick, not 3mm. None of the builds here uses one. Flutopedia's anatomy of the flute and its glossary describe all three traditional ways.
Where the flue is carved moves no hole, so the three share a hole layout, in the table above. The bird's layers and the cap are glued, as in the original. Two things are not taken. The engraved splitting edge charred, so the edge is still filed by hand. And the original's stepped block was for looks only, so the bird keeps its plain layers.
The author's flute
The builds above began as a fresh take, worked out without seeing this one. This flute was designed, cut and played in 2017, and its files are in yours/original/ exactly as they were. Measured out of yours/original/NAF_flatjoints.svg:
| Bore | 19.37 wide × 22.44mm deep, 435mm² |
| Sound chamber | 313.25mm from the window's centre to the foot |
| Window | 19.37 × 6.0mm, the whole width of the bore |
| Plug | 11mm, its top engraved as the flue |
| Finger holes | 7.73, 7.87, 7.79, 7.79 and 5.47mm, 213.9, 185.7, 156.9, 109.5 and 78.0mm from the window |
It tried two things the first designs here did not:
- An engraved splitting edge.
FluteEdge.pngis a greyscale ramp, black at the window and white 9.9mm on, engraved beside the window so the laser would cut the bevel itself. It did not work, so the edge is filed by hand, as it is in every build. - A soft engraved depression round each finger hole,
ring.png, for the finger to find. These worked, cut on a Glowforge, whose 3D engrave reads a grey image as depth. On an xTool P2S, Grayscale mode in xTool Creative Space varies the power with each pixel's brightness, so the same image should work there too. Set its depth on scrap first.
![]() |
![]() |
| FluteEdge.png · the bevel, which did not work | ring.png · the depression |
Its flue is in the nest, an engrave over the plug, as in a build cut with only the magenta half of its flue.
Its ideas are in every build: the full-width window and exit hole, the cap with its notch, the depressions round the holes, and the nest's half of every flue. A box-square-3-flat with only the magenta half run is the nearest build to it. The leather tie is its own file, yours/cut-files/your-flute-leather-tie-cut-files.svg: cut it from leather, not ply.
What the model hears in the original
At its own size, and with the holes as the author cut them:
| Holes open | Model | Above the fundamental | Minor pentatonic | Just ratio |
|---|---|---|---|---|
| none | 470Hz, A♯4 +14c | 0c | 0c | 1:1 |
| 1 | 559Hz, C♯5 +15c | 300c | 300c | 6:5, 315.6c |
| 2 | 636Hz, D♯5 +36c | 522c | 500c | 4:3, 498.0c |
| 3 | 718Hz, F5 +48c | 733c | 700c | 3:2, 702.0c |
| 4 | 856Hz, A5 −48c | 1038c | 1000c | 9:5, 1017.6c |
| 5 | 949Hz, A♯5 +31c | 1217c | 1200c | 2:1, 1200c |
The shape of the scale agrees to within 40 cents at every hole, which is the best test the model has had. Its pitch, near B♭4, rests on the same uncalibrated window term as everything else here. The 2017 flutes have all been given away, so that term cannot be measured from one. The first of these builds to be cut and played will set it, and with it the foot of every build here.
Every cut sheet
Every build, every sheet. Each picture is a display rendering; click it for the cut file.
box-square-3 · finger-jointed box, bore 16.88 × 16.88mm, holes in 3mm of wall · 12 parts on 1 sheet
box-square-3-flat · the same box butt-jointed and glued, bore 16.88 × 16.88mm, holes in 3mm of wall · 12 parts on 1 sheet
box-square-6 · finger-jointed box, bore 16.88 × 16.88mm, holes in 6mm of wall · 13 parts on 1 sheet
box-square-6-flat · the same box butt-jointed and glued, bore 16.88 × 16.88mm, holes in 6mm of wall · 13 parts on 1 sheet
stack-rect-3 · laminated stack, bore 15.83 × 18.00mm, holes in 3mm of wall · 12 parts on 1 sheet
stack-rect-6 · laminated stack, bore 15.83 × 18.00mm, holes in 6mm of wall · 13 parts on 1 sheet
Files
cut-files/box-square-3/square-flute-A4-box-square-3-sheet1-cut-files.svg |
box, square bore, 3mm hole wall |
cut-files/box-square-3-flat/square-flute-A4-box-square-3-flat-sheet1-cut-files.svg |
box, square bore, 3mm hole wall, butt-jointed and glued |
cut-files/box-square-6/square-flute-A4-box-square-6-sheet1-cut-files.svg |
box, square bore, 6mm hole wall |
cut-files/box-square-6-flat/square-flute-A4-box-square-6-flat-sheet1-cut-files.svg |
box, square bore, 6mm hole wall, butt-jointed and glued |
cut-files/stack-rect-3/square-flute-A4-stack-rect-3-sheet1-cut-files.svg |
stack, 15.83 × 18mm bore, 3mm hole wall |
cut-files/stack-rect-6/square-flute-A4-stack-rect-6-sheet1-cut-files.svg |
stack, 15.83 × 18mm bore, 6mm hole wall |
previews/ |
display renderings of every sheet — not cut files |
viewer.js |
the 3D view of every build, loaded by the published page |
turn.html |
the same 3D view on a page of its own, for framing elsewhere |
plans/square-flute-A4-holes-3mm-wall.svg · plans/square-flute-A4-holes-6mm-wall.svg |
the two hole layouts, to scale — display drawings, not cut files |
naf_model.py |
the acoustic model |
square_flute.py |
the generator, its checks and every build |
page_assets.py |
builds viewer.js, turn.html and the plans |
yours/original/ |
the author's 2017 files, unchanged but for the metadata stripped from the two PNGs: NAF_flatjoints.svg, NAF_fingerjoints.svg, NativeAmericaStyleFlute.svg, AirPlug.svg, BubingaAirPlug.svg, Block.svg, FluteEdge.svg, FluteEdge.png, HoleWithDepression.svg, ring.png, LeatherStrip.svg and Mouthpiece.svg |
yours/cut-files/your-flute-leather-tie-cut-files.svg |
the 2017 flute's leather tie |
yours/previews/ |
a display rendering of it — not a cut file |
your_flute.py |
measures the original, says what the model hears in it, and draws the tie |
README.md · index.html |
this writeup and its published page; the markdown is the source |
.repro |
the command that draws each generated file |
Released under CC0 1.0.

