0%

Two Lives Installation

Explore algorithms as creators in non-human environments to generate experimental sounds and music. Presenting an algorithmic sense of order, from a certain perspective, is a non-human poetic feeling.

Check this article

Pulsar Synthesiser

I performed in the Reid School of Music Symposium on 12/5/2025, demonstrating how my vocal recordings and chords undergo noticeable variations. I have implemented the pulsar synthesis method proposed by Curtis Roads, but made some changes, mainly including the introduction of euclid masking and the fact that it generates individual pulsars to form a pulsar train. In my implementation, specific pulsars are generated based on the pre-set train information.

Midi Note Generator

  • Max/MSP (with Javascript)
    I use a quicksort algorithm to organize an array of pitches. Rather than only outputting the final sorted sequence, I convert each intermediate state of sorting the array into MIDI notes (different tracks/instruments). As the algorithm progresses, the listener hears the pitches gradually approaching an ordered state, creating a dynamic musical process in which the evolution of order itself is experienced sonically. The process of generating in this way can continue indefinitely, and during this process, many parameter changes are supported, resulting in subtle variations in the process of generating musical notes.

AV Live Performance

  • Max/MSP (with Java, Javascript, BEAP module)
    This work aims to present a live music performance that generates all the sound inside Max/MSP and supports both automatic and manual playback. And I collaborated with PhD student Hal Xu, who specializes in Creative Music Practice at University Of Edinburgh, and he also has a background in Sound Design. Hal focused on the visual elements, while I was responsible for the audio and music components. On December 3rd, we delivered an engaging performance as part of his informal concert featuring audiovisual performance works.

patcher1
patcher1
patcher2

Audio Programming Music Piece

This piece is entirely written in C++, with add and sub synthesis methods.

Soundtrack For Screen Live Performance (And Stereo Version)

I used mediapipe to implement gesture control to trigger wall pushing sound (wall sound is pre recorded with several different tones, triggered by supercollider), while other team members were responsible for foley, piano, and guitar respectively.

In addition to this live performance version, I have also created my own version (stereo & 5.1) for the animated short film. Here is the stereo version.

Three Short Poems Sound Design

Here are my early three short poems, designed with sound based on the copywriting, but the sound material itself is limited (the quantity and type cannot be arbitrarily found in other materials), which is conducive to cultivating awareness of sound. binaural version:

  1. Neon Lights
    The city lights up the night.
    Neon lights stream into my room,
    And burn my home to ash.
  1. Sunset
    The sunset has packed its bags,
    Ready to go.
    I’ve thought about going home too.
  1. Vine Film
    It’s a no-entry, long-abandoned corridor.
    Golden railings now overgrown with lush green vines,
    A winding, suspended place hanging mid-air.
    In the sunlight, I glimpse green sprung from dirty patches of mud.

Graphic Score

This track is a graphic score based on a paragraph from the Neighbouring Sounds film, and then a soundtrack is created based on the score.
graphic score

Hand Gesture Supercollider Music

This small project generates sound through gesture control.

Project:
Two Lives: A Generative Audiovisual Installation Exploring Algorithmic Composition Through Concatenative Synthesis, L-System, and the Visualisation of Artificial and Natural Life

This work is a audiovisual installation themed on “life”, composed of two independently running sub-modules: artificial life and natural life. The artificial life module features an alife-based visual, together with a concatenative synthesiser. The natural life module consists of a Max patcher (presenting video of human fertilised eggs and generating melodies) and an Ableton project (receiving MIDI notes from Max to drive instrumental performance). Each sub-module is equipped with an interaction tool, allowing the audience to manipulate sound and visuals in real time through hand gestures. At the same time, internal interconnections exist within each module: In artificial life, visuals directly influence sound generation in real time; In natural life, sound drives changes in the visual effects.

Initially, I was inspired by Gyuchul Moon’s project, Organic Algorithm with AI, which sonifies data derived from simulating Physarum. Even earlier, Sage Jenson had implemented the Physarum polycephalum algorithm to generate stunning dynamic visuals. The fascination of these cases lies in the “natural growth” processes of artificial life, which simulate the complexity and unpredictability of real life. However, as Jack has pointed out, in the field of AI—both in industry and in the arts—artificial life has been far less popular than machine learning. Nevertheless, in recent years, ALife has shown signs of revival. In this context, Jack created Tölvera, an open-source Python library for building alife visuals. He has also collaborated with other artists on some projects: Hreyfivera (2024), which integrates dance and alife through Mediapipe; FerroNeural (2023), which is a duo for magnetic discs and artificial life; MOTHERBIRD (2023), which combines live instrumental performance with alife visuals; and Pandora’s Mycophony (2023), a live coding performance using holographic displays. On the other hand, I was also inspired by projects rooted in real biological life—for instance, Italian artist Gaia Leandra’s performance in the European project On-the-Fly: by observing microorganisms under a microscope, she transformed visual data into sound in real time, enabling the audience to hear the sonic presence of microbial life from a microscopic perspective. Taken together, these recent works converge on the key notions of life, science, data, code, the non-human, and art. They demonstrate that artificial life constitutes a powerful medium for visual expression and interaction.

installation
installation
installation
installation
installation
installation
installation
installation
installation
installation

performance with l system

First Max Patcher

It’s a max for live patcher. It provides some basic sound modifications for sampling, such as speed, pitch, pitch shift, form, etc. It’s a tool for quickly transforming sound.

patcher1

Huiyang Glitch Slicer on MaxForLive

本文介绍如何用ditto构建wiki静态站点,发布到github pages可随时随地进行访问,ditto构建的wiki支持站内查询和在线编辑,适合搭建个人wiki。

几种wiki搭建技术的比较

在使用ditto之前我还尝试了xwiki,gollum,MDWiki,xwiki偏向企业级,当时考虑到github pages提供免费的静态站点发布以及个人wiki的简洁性,就最终使用了hexo。MDWiki跟ditto类似,都是通过一个html来处理写作好的markdown文件,但是ditto的布局更简洁,搭建简单,用github pages就能发布到公网了。

下载ditto

执行命令 curl -L https://git.io/v6T7r > install.sh && sh install.sh

ditto相关的文件会下载到当前目录,具体包含了:

  • sidebar.md
  • install.sh
  • index.html
  • docs
    • api.md
    • faq.md

sidebar.md是侧边栏,install.sh启动程序,启动会自动生成上述文件,服务器默认访问的主页面即index.html,docs有api.md和faq.md,只是例子,具体是在sidebar.md引入链接,引入链接时不用写后缀名,会自动加上的。

写作

我们在docs下面创建要写作的markdown文件,我用sublime text 3来进行markdown的写作,需装markdown相关插件

运行服务器

我在win7系统安装了python,在工程根目录下打开git bash或者其他命令行窗口执行server命令运行wiki,cmd用python.exe -m http.server 8000可开启指定端口(此处设置为8000)的服务器,方便快速查看本地效果。可用其他服务器。

部署发布

上述步骤已完成wiki的搭建和运行,现在需要部署发布到github上。
首先你得有github账号,在上面创建一个srepository,然后clone到本地,即你的本地工程,本地工程中加入,如下文件(从ditto源码中拿,源码传送):

  • sidebar.md

  • index.html

  • js

    • marked.js
    • highlight.js
    • ditto.js
  • css

    • github.css
    • ditto.css
  • docs
    观察index.html,发现引用的js和css不是cdn就是ditto的github上的地址,我拷贝js和css到自己的工程来,保证js和css不会因为ditto更新而变化,若要更新所用ditto可自行clone后再拷贝,另,cdn的引入我改成了国内的cdn,提高访问速度。如下:

观察sidebar.md中有个[ditto:searchbar]这是搜索框,没有则加上,要使用搜索功能,则要在index.html中修改加载的js,设置上ditto.github_username和ditto.github_repo以及ditto.base_url,依次表示你的github用户名,github上工程仓库名(二者负责告诉ditto去github搜索页面信息进而展示在wiki上),github的页面修改地址(ditto的修改是直接跳转到github的修改链接),同时还设置了ditto.highlight_code为true,让搜索的结果代码高亮,如下

<!-- DITTO -->
<script>
    $(function($) {
      // essential settings
      ditto.index = "README.md",
      ditto.sidebar_file = "sidebar.md",
      // optional settings if you want github search
      ditto.github_username = "GrayOxygen";   // <------- EDIT ME!!
      ditto.github_repo = "ShineOxygenWiki";       // <------- EDIT ME!!
      ditto.highlight_code = true;    // <------- EDIT ME!!
      // where the docs are actually stored on github - so you can edit
      // e.g. https://github.com/chutsu/ditto/edit/gh-pages
      ditto.base_url = "https://github.com/GrayOxygen/wiki/edit/master";            // <------- EDIT ME!!
      // run
      ditto.run();
    });
</script>

打开git bash执行git push origin master同步到github仓库

在github的项目主页面,找到setting按钮,进入更改GitHub Pages选项,如图save后提示你已发布

save保存你所选分支后,提示已发布,wiki已发布到公网,访问吧

具体效果参考我的wiki