Skip to content

Interactive museum exhibit for reading bio-electrical signals in plants, and converting them to MIDI messages to trigger music from analog or digital synthesisers.

Notifications You must be signed in to change notification settings

rohitbams/Plant-Synthesiser

Repository files navigation

Singing Plant: Bio-Electrical Sonification Interface

Abstract

Plants generate continuous variable electrical activity that travels through the plant body as they respond to stimuli or carry out biological sustenance activities [1]. This activity is analogous to bio-electrical signals in humans and animals, measurable through surface conductance readings—a phenomenon known as Galvanic Skin Response (GSR) in human physiology. Plant GSR exhibits variations in response to environmental stimuli. This project presents an interactive hardware and software system that measures plant bio-electrical signals and translates them into musical output through sonification, creating an accessible interface for experiencing plant electrophysiology.

Demo Video: https://youtu.be/0JPfGPNKthQ?si=uygfv9CEVLhHi0Go

Singing Plant - Final Artifact The completed Singing Plant interactive installation

Project Overview

This project was developed as part of CS5041 – Interactive Software and Hardware coursework. The system employs a galvanic conductance sensor to measure electrical fluctuations in plant tissue and converts these signals into MIDI (Musical Instrument Digital Interface) messages, which can be interpreted by digital audio workstations and synthesizers to produce sound.

Inspiration

The project draws inspiration from research on plant electrophysiology and existing biodata sonification systems [2]. Plants exhibit measurable electrical signals similar to those found in animal nervous systems [3,4], though the mechanisms and purposes differ. By making these signals audible, the artifact bridges the gap between plant physiology and human perception, fostering greater awareness of plants as living, responsive organisms.

Relevance to Sustainability

While plants are unequivocally living organisms, their sentience and responsiveness to environmental stimuli remain subjects of scientific investigation. Electrical activity in plants suggests they "sense" and respond to their environment [3]. This artifact aims to raise environmental awareness by translating plant signals into human-perceivable auditory feedback. By enabling users to "hear a plant live," the system cultivates sensitivity toward plants as living beings, promoting environmental stewardship.

System Architecture

Hardware Components

Sensing Circuit:

  • 555 timer IC configured as an astable multivibrator
  • Capacitors: 47µF, 100µF, 0.1µF (×2), 4700pF (×2)
  • Resistors: 100Ω (×6), 200Ω (×3)
  • Two electrodes for galvanic conductance measurement

Microcontroller:

  • Arduino Uno (ATmega328P-based) with dual-boot MocoLufa firmware [5]
  • Enables class-compliant USB MIDI device operation

User Interface:

  • 10kΩ potentiometer for parameter adjustment
  • Tactile button for mode selection
  • 6× standard LEDs for visual feedback
  • NeoPixel (WS2812B) LED strip for ambient lighting

Physical Enclosure:

  • Laser-cut plywood box with finger joints
  • 3D-printed flowerpot (PLA)
  • Decorative elements: bench, grass patches, instruction label

Software Implementation

The firmware is based on the open-source MIDI Psycho-Galvanometer codebase [2], implementing the following signal processing pipeline:

  1. Signal Acquisition: Interrupt-driven sampling captures pulse widths from the 555 timer circuit
  2. Statistical Analysis: Calculates mean, standard deviation, and delta of sample arrays
  3. Change Detection: Compares delta against configurable threshold (multiplied by standard deviation)
  4. MIDI Generation: Converts detected changes to MIDI note-on/note-off messages with pitch and duration derived from signal characteristics
  5. Musical Scaling: Maps raw values to user-selected musical scales (Chromatic, Major, Diatonic Minor, Indian, Minor)

Key Libraries:

  • EEPROMex: Non-volatile parameter storage
  • Bounce2: Button debouncing
  • LEDFader: Non-blocking LED animation
  • MIDI: MIDI protocol implementation
  • Adafruit_NeoPixel: WS2812B control

Firmware Modification: The Arduino Uno runs MocoLufa dual-boot firmware [5], allowing it to function as a class-compliant USB MIDI device. To revert to standard Arduino mode, short the MOSI2 and GND pins on the ICSP header before connecting to a computer.

Interaction Design

The system follows principles of simplicity and usability [6], emphasising meaningful interactions over feature proliferation:

Primary Interaction:

  • Plant Touch: Touching the plant modulates galvanic conductance, generating MIDI output

Administrative Controls (side-mounted):

  • On/Off Switch: System power control
  • Mode Button: Cycles through four configuration modes
  • Potentiometer: Adjusts mode-specific parameters

On-Off Switch Figure 1: On-Off switch mounted on the side of the enclosure

Configuration Modes (color-coded LED feedback):

  1. Threshold Mode (Red LED): Adjusts sensor sensitivity (range: 1.61–3.71)
  2. Scale Mode (Yellow LED): Selects musical scale (5 options)
  3. Channel Mode (Green LED): Sets MIDI channel (1–16)
  4. Brightness Mode (Blue LED): Controls LED intensity (1–255)

Visual Feedback:

  • LEDs perform synchronised light shows corresponding to MIDI events
  • NeoPixel strip provides illumination and aesthetic enhancement

LED and NeoPixel Strip Figure 2: The NeoPixel strip (left) and colour-coded LEDs (centre) providing visual feedback

Mode Button and Potentiometer Mode button and potentiometer controls for system configuration

Audio Processing

The system outputs MIDI messages compatible with various audio software:

Free/Open-Source Options:

  • Pure Data [7]
  • VCV Rack
  • LMMS

Commercial Digital Audio Workstations:

  • GarageBand (macOS)
  • Ableton Live
  • Reaper

A Pure Data patch (included in appendix) demonstrates basic MIDI-to-audio conversion using frequency modulation synthesis.

Technical Implementation

Circuit Design

The galvanic conductance sensor employs a 555 timer IC in astable mode. Plant tissue acts as a variable resistor in the timing network, causing pulse width modulation proportional to conductance changes. The Arduino samples these pulse widths via hardware interrupt, enabling high-temporal-resolution measurements without blocking other operations.

Signal Processing Algorithm

For each sample array (size = 10):
  1. Calculate mean (μ) and standard deviation (σ)
  2. Determine delta (Δ) = max - min
  3. If Δ > (σ × threshold):
     - Generate MIDI note
     - Pitch = scale(μ mod 127, selected_scale)
     - Duration = 150 + (Δ mod 127) mapped to 100–2500 ms
     - Velocity = 100 (constant)

Fabrication

Laser Cutting:

  • Enclosure designed using boxes.py [8] modified from an electronics box template [9]
  • Bench adapted from book holder design [10]
  • Grass patches and instruction label: hand-drawn, digitised via Inkscape

Instruction Label Laser-engraved instruction label with sustainability message

3D Printing:

  • Flowerpot based on Oddish Planter design [11]
  • NeoPixel mount adapted from Ender 3 extruder mount [12]
  • Material: PLA with support structures

Arduino Connection Arduino USB connection routed through the back of the enclosure

LED and NeoPixel Placement Central placement of LEDs and NeoPixels for optimal user engagement

Project Files

.
├── cs5041_arduino_code.ino          # Main firmware
├── hardware_files/
│   ├── WoodenElectronicsBox.dxf     # Enclosure design
│   ├── ShortBookHolder.dxf          # Bench design
│   ├── instructions_label.dxf       # User instructions
│   ├── traced_grass_patches.dxf     # Decorative elements
│   ├── planter_body.stl             # Flowerpot (main)
│   ├── planter_feet.stl             # Flowerpot (feet)
│   ├── planter_pinlegs.stl          # Flowerpot (supports)
│   └── NeoPixel_Mount.stl           # LED mounting
├── CS5041 P2 Singing Plant Report.pdf
└── README.md                        # This file

Installation and Setup

Hardware Assembly

  1. Assemble the galvanic conductance circuit on a breadboard or PCB
  2. Upload cs5041_arduino_code.ino to Arduino Uno
  3. Flash MocoLufa dual-boot firmware using ISP programmer [5]
  4. Mount components in laser-cut enclosure
  5. Insert electrodes into plant soil and leaf/stem

Software Configuration

  1. Connect Arduino via USB
  2. Select Arduino as MIDI input device in your DAW/audio software
  3. Configure synthesizer parameters (recommend harmonic-rich timbres)
  4. Adjust threshold and scale settings using hardware controls

Pure Data Setup:

  1. Install Pure Data [7]
  2. Load included patch
  3. Select MIDI input from Arduino
  4. Adjust volume and processing parameters

Challenges and Solutions

Mechanical Fit: Plywood finger joints required manual filing due to insufficient kerf compensation. Future iterations should adjust joint tolerances.

3D Printing: Initial flowerpot print failed without support structures. Resolved by adding supports for overhangs exceeding 45°.

MIDI Connectivity: Lack of DIN MIDI jack necessitated firmware modification to enable USB MIDI class compliance [5].

I2C Conflict: MocoLufa firmware interfered with I2C communication, preventing OLED display integration. Solution: separate display controller or alternative communication protocol.

Future Enhancements

  1. Multi-Plant Systems: Compare signals from multiple plants or healthy vs. stressed specimens
  2. Environmental Stimuli: Integrate light, temperature, humidity, or airflow sensors
  3. Standalone Operation: Embedded audio synthesis eliminates computer dependency
  4. Voltage Display: Add secondary Arduino with OLED for real-time conductance visualisation
  5. Improved CV Output: Implement RC low-pass filter for hardware synthesizer connectivity
  6. Cross-Platform Audio: Finalise Pure Data patch for OS-agnostic deployment

Design and Prototyping Process

The project evolved through multiple iterations of sketching, prototyping, and refinement:

Early Sketches Early stage sketches exploring different layouts, lighting options with NeoPixels, and user interface designs

Detailed Design Sketches More detailed sketches experimenting with interactions and TUI layouts, including potential external stimuli (wind, temperature, water, light)

Precision Measurements Making precise measurements before laser cutting for accurate prototype dimensions

Cardboard Prototype Testing Testing component placement and accuracy of measurements on cardboard prototype before final fabrication

References

[1] Sam Cusumano. (2025). electricityforprogress/MIDIsprout. Retrieved March 22, 2025 from https://github.com/electricityforprogress/MIDIsprout

[2] Yoshitaka Kuwata. (2025). kuwatay/mocolufa. Retrieved March 24, 2025 from https://github.com/kuwatay/mocolufa

[3] Jin-Hai Li, Li-Feng Fan, Dong-Jie Zhao, Qiao Zhou, Jie-Peng Yao, Zhong-Yi Wang, and Lan Huang. (2021). Plant electrical signals: A multidisciplinary challenge. Journal of Plant Physiology 261, (June 2021), 153418. https://doi.org/10.1016/j.jplph.2021.153418

[4] lilyu1. (2024). lilyu1/BiodataSonification-to-pc. Retrieved March 24, 2025 from https://github.com/lilyu1/BiodataSonification-to-pc

[5] John Maeda. (2006). The Laws of Simplicity. MIT Press, Cambridge, UNITED STATES. Retrieved March 22, 2025 from http://ebookcentral.proquest.com/lib/standrews/detail.action?docID=3338618

[6] SendCutSend. (2022). How to Join Laser Cut Parts Without Fasteners. SendCutSend. Retrieved March 22, 2025 from https://sendcutsend.com/blog/how-to-join-laser-cut-parts-without-fasteners/

[7] Thingiverse.com. Ender 3 S1 Sprite Extruder NeoPixel Mount by egranto. Thingiverse. Retrieved March 22, 2025 from https://www.thingiverse.com/thing:5578073

[8] Thingiverse.com. Oddish Planter with Snap Together Legs! by 3DCentralVA. Thingiverse. Retrieved March 22, 2025 from https://www.thingiverse.com/thing:1112783

[9] Gabriel R. A. de Toledo, André G. Parise, Francine Z. Simmi, Adrya V. L. Costa, Luiz G. S. Senko, Marc-Williams Debono, and Gustavo M. Souza. (2019). Plant electrome: the electrical dimension of plant life. Theor. Exp. Plant Physiol. 31, 1 (March 2019), 21–46. https://doi.org/10.1007/s40626-019-00145-x

[10] GitHub - electricityforprogress/BiodataSonificationBreadboardKit. Retrieved March 16, 2025 from https://github.com/electricityforprogress/BiodataSonificationBreadboardKit

[11] Pure Data — Pd Community Site. Retrieved March 24, 2025 from https://puredata.info/

[12] Gallery - Boxes.py. Retrieved March 22, 2025 from https://boxes.hackerspace-bamberg.de/

[13] ElectronicsBox - Boxes. Retrieved March 22, 2025 from https://boxes.hackerspace-bamberg.de/ElectronicsBox?language=en

[14] BookHolder - Boxes. Retrieved March 22, 2025 from https://boxes.hackerspace-bamberg.de/BookHolder?language=en

License

This project builds upon open-source work from the biodata sonification community [2,4]. Hardware designs and firmware modifications are provided for educational and non-commercial use.

Acknowledgments

This artifact was developed by students 240019420 and 240030041 for CS5041 – Interactive Software and Hardware. We acknowledge the open-source biodata sonification community, particularly the MIDIsprout project, for foundational code and inspiration.


For technical support or inquiries, refer to the detailed report (CS5041 P2 Singing Plant Report.pdf) included in this repository.

About

Interactive museum exhibit for reading bio-electrical signals in plants, and converting them to MIDI messages to trigger music from analog or digital synthesisers.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages