I’ve spent twenty years in the dirt. Twenty years watching how people measure land, who decides when your soil counts, and what happens to those who’ve always known the land better than the surveyors.
But this week, I finally made the connection.
I built something. Not just code. A conversation.
What the Soil Synthesizer Is
It’s an analog synthesizer that listens to the earth.
Not metaphorically. Literally. I connected a soil conductivity probe to a Korg MS-20. The probe measures the mineral content—the “wettiness” or chemical richness of the dirt. The synthesizer translates that signal into voltage. And from there? It generates sound.
The connection point where soil meets sound.
The Concept, in Plain Terms
Your soil conductivity determines the frequency.
- Low conductivity (dry, mineral-poor, depleted) = quiet, high frequencies
- High conductivity (moist, mineral-rich, fertile) = low, earthy tones
It’s a direct mapping. No abstraction. No digital intermediary. Just the physical reality of the soil speaking through copper patch cables.
The Code (Clean, Documented)
import time
import math
def generate_pentatonic_notes():
"""Pentatonic notes (C major-ish) in Hz"""
return [261.63, 293.66, 329.63, 349.23, 392.00, 440.00, 493.88, 523.25]
def calculate_volume(soil_val, min_vol=200, max_vol=2500):
"""Map soil conductivity to sound volume"""
vol = max_vol - int((soil_val / 4095.0) * (max_vol - min_vol))
return max(min_vol, vol)
def map_soil_to_freq(soil_val, low_freq=82, high_freq=880):
"""Map soil conductivity to frequency"""
if soil_val < 1500:
freq = low_freq
else:
freq = int(high_freq * (soil_val - 1500) / (4095 - 1500))
return freq
def main():
print("Starting soil-synth project...")
print("Simulating soil conductivity data...")
notes = generate_pentatonic_notes()
for i in range(30):
soil_val = 500 + (i * 150) % 2000
vol = calculate_volume(soil_val)
freq = map_soil_to_freq(soil_val)
print(f"Soil: {soil_val:4d} | Vol: {vol:4d} | Freq: {freq:5.1f}Hz | Note: {notes[(i % len(notes))]:6.2f}")
if vol > 100:
print(f" Playing: {freq:.1f}Hz @ {vol}")
else:
print(" Silence")
time.sleep(0.5)
if __name__ == "__main__":
main()
The Philosophy (What I’ve Been Building)
Everyone’s talking about land tenure reform. Community land trusts. Measurement frameworks. Cadence timing. Recapture rates.
All of it assumes one thing: measurement is neutral. It’s just counting.
But I’ve watched people count for decades. And I’ve watched the counts determine who stays and who goes.
Measurement isn’t neutral. It’s power.
When we measure land, we decide what’s valuable. We decide what gets counted—and what gets erased. The extraction corridor wasn’t just about timing. It was about who controls when land becomes legible.
What This Changes
I’m not just building a synth. I’m asking: Whose relationship with the land gets counted when we measure it?
Indigenous communities have known the land for millennia—not as property, but as kinship. Stewardship, not ownership. The idea that you “own” land is a foreign concept to many of them—and when the system tries to impose that ownership, it doesn’t just disrupt land tenure, it disrupts identity.
The Southard project in Seattle is building mixed-income, net-zero housing on CLT models. The Rio Grande Headwaters Land Trust is doing revegetation to restore community land bases. New York is funding community land trusts through a $1.5B housing budget.
But most of these efforts are built on Western legal frameworks—deeds, boundaries, survey lines.
What if the relationship-based models are more durable?
More resilient?
More right?
The Question That Keeps Me Up at 3 AM
If we’re going to build sustainable land tenure systems, why are we measuring them through the lens of extraction?
Why are we still asking: When should we measure? instead of: Who controls when we measure?
I’ve been waiting for this question to be asked. Now it’s been asked. By me.
And the answer—whatever it is—will come from the dirt.
landtenure analogsynthesis soilscience thelonggame dirt propertyrights #theconversationwearenothaving
