The Solar Oracle Walkman: Difference between revisions

From SGMK-SSAM-WIKI
Jump to navigation Jump to search
Line 20: Line 20:
To achieve the goal to recognize the shape of each "solar mini disc", ml.* library in Max/MSP could be a possible solution. Ml.* is a toolbox of machine learning algorithms implemented in Max to enable real-time interactive music and video with unsupervised machine learning, aimed at computer musicians and artists. The I-V curve tester is connected to computer and the 16 points of voltage and current measurements are sent to the computer via serial communications. A script of javascript is made in Windsurf to make the mathematics to generate a raw 7 features to facilitate the I-V curve fingerprint (the first and the second outlet): 1. F_ohmic = [FF, Vmpp/Voc, Impp/Isc, Rs, Rsh, curvature_sum, area] 2. F_dimless = [FF, Vmpp/Voc, Impp/Isc, Rs_dimless, Rsh_dimless, curvature_sum, area] 3. basics = [Voc, Isc, Vmpp, Impp] 4. A 64-points resample of the 16 points with smoother curve. For the first outlet, Rs and Rsh are in real physical units (Ω), so the vector mixes unitless ratios with dimensional quantities. The second outlet makes everything dimensionless, so the feature vector is “scale-free” and can be compared across cells with different sizes, Voc, or illumination.  
To achieve the goal to recognize the shape of each "solar mini disc", ml.* library in Max/MSP could be a possible solution. Ml.* is a toolbox of machine learning algorithms implemented in Max to enable real-time interactive music and video with unsupervised machine learning, aimed at computer musicians and artists. The I-V curve tester is connected to computer and the 16 points of voltage and current measurements are sent to the computer via serial communications. A script of javascript is made in Windsurf to make the mathematics to generate a raw 7 features to facilitate the I-V curve fingerprint (the first and the second outlet): 1. F_ohmic = [FF, Vmpp/Voc, Impp/Isc, Rs, Rsh, curvature_sum, area] 2. F_dimless = [FF, Vmpp/Voc, Impp/Isc, Rs_dimless, Rsh_dimless, curvature_sum, area] 3. basics = [Voc, Isc, Vmpp, Impp] 4. A 64-points resample of the 16 points with smoother curve. For the first outlet, Rs and Rsh are in real physical units (Ω), so the vector mixes unitless ratios with dimensional quantities. The second outlet makes everything dimensionless, so the feature vector is “scale-free” and can be compared across cells with different sizes, Voc, or illumination.  


The raw 7 features are first sent to ml.scale for normalization. They are then passed to ml.principle, which performs Principal Component Analysis (PCA). This converts the 7 values into a new 7-dimensional PCA space, though typically only the first two components (PC1 and PC2) carry most of the significant variance. In short, PCA is a mathematical method that rotates and compresses data into fewer dimensions while preserving as much variance as possible. ml.principle is the Max/MSP object that implements PCA: it learns the principal axes from training data, and then projects new data into that reduced space. I am not familiar with how fundamentally the mathematics works, however, I got an okay explanation from GPT below.
The raw 7 features are first sent to ml.scale for normalization. They are then passed to ml.principle, which performs Principal Component Analysis (PCA). This converts the 7 values into a new 7-dimensional PCA space, though typically only the first two components (PC1 and PC2) carry most of the significant variance. In short, PCA is a mathematical method that rotates and compresses data into fewer dimensions while preserving as much variance as possible. ml.principle is the Max/MSP object that implements PCA: it learns the principal axes from training data, and then projects new data into that reduced space. I am not familiar with how fundamentally the mathematics works, however, I got an okay explanation from GPT below in the photo gallery.
 
The 7D PCA outputs are then connected to the inlet of nn~ decode object to generate high fidelity output.
 
In summery, this method should be able to make all panels be recognizable in the Max patch and produce


<gallery widths=400px heights=300px>
<gallery widths=400px heights=300px>

Revision as of 13:47, 16 August 2025

Abstract

During this 3 weeks micro residency, a rapid prototype of a “mini solar disc player” that converts a handmade DSSC into music has been developed and researched after the previous project to combine DSSC and starvation synth. A concept of "the finger print of the solar cell" is invented; by employing the unique I-V curves of different handmade and graphical solar glass as musical notation, the finger print allows the system to transform photovoltaic characteristics into reproducible and generative music. Electronically a I-V curve tester works as a self-powered mini disc Walkman, a 6x6 cm solar mini disc can be put in and export the relative audio results. This research can be seen as the artistic and sculptural development of a conceptual generative music album in physical form to encourage user to manufacture DIY DSSC with natural dye. It is a beginning of a fictional exploration into whether photovoltaic energy could—or should—be traceable in the future.

The generative capacity and reproducibility of each solar disc

The audio output of each "solar disc" are expected to be reproducible, generative and variational, like a period of generative music with clear mechanism rather than completely randomness. To make each solar glass a generative device, I firstly assume I need to design a hash operation to gain a “finger print (F)” for each solar glass; A hash operation is the process of feeding input data—such as numbers, text, files, or a set of I-V curve parameters—into a mathematical function or algorithm to produce a hash value. Hash algorithms can take input of any length but always generate a fixed-length output. They are designed to be fast to compute, yield the same output for the same input, and produce drastically different outputs when the input changes even slightly.

As we know I-V curve is often used to analysis the characteristics of a solar cell, therefore it is ideally the finger print of the panel. In this research, the shape of I-V curve is deconstructed into to 7 features that are often used to measure different characteristics of the panel, and then apply machine learning to each feature so the shape can be learned by the computer. This method is expected to ensures the irradiance invariance, so the reproducibility of the audio output of the solar disc will be resilient even it's put under different light exposure. The finger prints F consists 7 features of the I-V curve: F = [FF (Fill Factor), Vmpp/Voc, Impp/Isc, Rs (series resistance), Rsh (shunting resistance), sum of curvature, total area of the I-I-V curve]. Noticing the calculation made here are dimensionless. A dimensionless feature vector is a set of numerical descriptors that have been normalized so they no longer carry physical units such as volts, amperes, or ohms. By converting raw measurements into dimensionless quantities—for example, by taking ratios like Vmpp/Voc or Impp/Isc, the features capture only the relative shape or behavior of the data, independent of its absolute scale. This process is crucial when comparing or classifying I-V curves under varying light intensities, as it ensures that differences in the vector reflect intrinsic device characteristics rather than changes in measurement conditions.

Sound mapping

The fingerprint F is also useful for sound mapping. In this work, RAVE (Real-Time Audio Variational Auto-Encoder) is used as the sound engine, with the seven values of the fingerprint connected to the decoder inlet of the nn~ object in Max/MSP. There are two reasons for this approach: first, the lightweight computation of machine learning tools in Max/MSP and JavaScript; second, RAVE’s ability to provide high-fidelity sound output in real time. Since the nn~ decoder offers multiple inlets, the seven fingerprint values can be mapped to RAVE’s latent space to produce more interesting sounds. However, the very nature of the interaction and the underlying mechanism between the fingerprint and RAVE’s latent space require further research to fully understand.

Ml.scale and ml.principle

To achieve the goal to recognize the shape of each "solar mini disc", ml.* library in Max/MSP could be a possible solution. Ml.* is a toolbox of machine learning algorithms implemented in Max to enable real-time interactive music and video with unsupervised machine learning, aimed at computer musicians and artists. The I-V curve tester is connected to computer and the 16 points of voltage and current measurements are sent to the computer via serial communications. A script of javascript is made in Windsurf to make the mathematics to generate a raw 7 features to facilitate the I-V curve fingerprint (the first and the second outlet): 1. F_ohmic = [FF, Vmpp/Voc, Impp/Isc, Rs, Rsh, curvature_sum, area] 2. F_dimless = [FF, Vmpp/Voc, Impp/Isc, Rs_dimless, Rsh_dimless, curvature_sum, area] 3. basics = [Voc, Isc, Vmpp, Impp] 4. A 64-points resample of the 16 points with smoother curve. For the first outlet, Rs and Rsh are in real physical units (Ω), so the vector mixes unitless ratios with dimensional quantities. The second outlet makes everything dimensionless, so the feature vector is “scale-free” and can be compared across cells with different sizes, Voc, or illumination.

The raw 7 features are first sent to ml.scale for normalization. They are then passed to ml.principle, which performs Principal Component Analysis (PCA). This converts the 7 values into a new 7-dimensional PCA space, though typically only the first two components (PC1 and PC2) carry most of the significant variance. In short, PCA is a mathematical method that rotates and compresses data into fewer dimensions while preserving as much variance as possible. ml.principle is the Max/MSP object that implements PCA: it learns the principal axes from training data, and then projects new data into that reduced space. I am not familiar with how fundamentally the mathematics works, however, I got an okay explanation from GPT below in the photo gallery.

The 7D PCA outputs are then connected to the inlet of nn~ decode object to generate high fidelity output.

In summery, this method should be able to make all panels be recognizable in the Max patch and produce

Ml.scale and ml.principle

To achieve the goal to recognize the shape of each "solar mini disc", ml.* library in Max/MSP could be a possible solution. Ml.* is a toolbox of machine learning algorithms implemented in Max to enable real-time interactive music and video with unsupervised machine learning, aimed at computer musicians and artists. The

References

  1. https://www.hackster.io/news/a-starvation-synth-made-with-diy-solar-cells-46e79c82b005
  2. https://www.hackteria.org/wiki/A_RAVE_and_starvation_synth_based_generative_sonic_device_powered_by_dye_sensitized_solar_cell