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
The completed Singing Plant interactive installation
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.
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.
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.
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
The firmware is based on the open-source MIDI Psycho-Galvanometer codebase [2], implementing the following signal processing pipeline:
- Signal Acquisition: Interrupt-driven sampling captures pulse widths from the 555 timer circuit
- Statistical Analysis: Calculates mean, standard deviation, and delta of sample arrays
- Change Detection: Compares delta against configurable threshold (multiplied by standard deviation)
- MIDI Generation: Converts detected changes to MIDI note-on/note-off messages with pitch and duration derived from signal characteristics
- Musical Scaling: Maps raw values to user-selected musical scales (Chromatic, Major, Diatonic Minor, Indian, Minor)
Key Libraries:
EEPROMex: Non-volatile parameter storageBounce2: Button debouncingLEDFader: Non-blocking LED animationMIDI: MIDI protocol implementationAdafruit_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.
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
Figure 1: On-Off switch mounted on the side of the enclosure
Configuration Modes (color-coded LED feedback):
- Threshold Mode (Red LED): Adjusts sensor sensitivity (range: 1.61–3.71)
- Scale Mode (Yellow LED): Selects musical scale (5 options)
- Channel Mode (Green LED): Sets MIDI channel (1–16)
- 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
Figure 2: The NeoPixel strip (left) and colour-coded LEDs (centre) providing visual feedback
Mode button and potentiometer controls for system configuration
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.
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.
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)
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
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 USB connection routed through the back of the enclosure
Central placement of LEDs and NeoPixels for optimal user engagement
.
├── 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
- Assemble the galvanic conductance circuit on a breadboard or PCB
- Upload
cs5041_arduino_code.inoto Arduino Uno - Flash MocoLufa dual-boot firmware using ISP programmer [5]
- Mount components in laser-cut enclosure
- Insert electrodes into plant soil and leaf/stem
- Connect Arduino via USB
- Select Arduino as MIDI input device in your DAW/audio software
- Configure synthesizer parameters (recommend harmonic-rich timbres)
- Adjust threshold and scale settings using hardware controls
Pure Data Setup:
- Install Pure Data [7]
- Load included patch
- Select MIDI input from Arduino
- Adjust volume and processing parameters
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.
- Multi-Plant Systems: Compare signals from multiple plants or healthy vs. stressed specimens
- Environmental Stimuli: Integrate light, temperature, humidity, or airflow sensors
- Standalone Operation: Embedded audio synthesis eliminates computer dependency
- Voltage Display: Add secondary Arduino with OLED for real-time conductance visualisation
- Improved CV Output: Implement RC low-pass filter for hardware synthesizer connectivity
- Cross-Platform Audio: Finalise Pure Data patch for OS-agnostic deployment
The project evolved through multiple iterations of sketching, prototyping, and refinement:
Early stage sketches exploring different layouts, lighting options with NeoPixels, and user interface designs
More detailed sketches experimenting with interactions and TUI layouts, including potential external stimuli (wind, temperature, water, light)
Making precise measurements before laser cutting for accurate prototype dimensions
Testing component placement and accuracy of measurements on cardboard prototype before final fabrication
[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
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.
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.