📺🔊 Synthesiser audio plugin for making music by drawing objects on an oscilloscope using audio.
 
 
 
 
 
 
Go to file
James Ball 5c105cb400 Add dimensions to rotation to prevent confusion 2021-07-15 22:56:09 +01:00
.github Add mac build to workflow 2021-07-04 19:32:16 +01:00
src/main Add dimensions to rotation to prevent confusion 2021-07-15 22:56:09 +01:00
.gitignore Un-modularize project to massively clean-up build process and pom.xml 2021-06-06 21:54:40 +01:00
LICENSE Create LICENSE 2020-02-11 22:40:41 +00:00
README.md Add MIDI instructions to README 2021-07-14 20:25:57 +01:00
gui.png Update GUI image in README 2021-07-10 22:05:36 +01:00
osci.png Update image for mobile 2021-05-02 23:44:10 +01:00
pom.xml Add dimensions to rotation to prevent confusion 2021-07-15 22:56:09 +01:00

README.md

Program for drawing objects, text, and images on an oscilloscope using audio output.

This allows for 3D rendering of .obj files, .svg images, and .txt files on Windows, macOS, and Linux.

Read more about 'Rendering shapes through audio signals' in this article featuring osci-render!

Send an email to james@ball.sh if you have any issues, feedback, feature requests, or anything else!

Video Demonstration

osci-render demonstration

Current Features

  • Render .obj files on an oscilloscope
  • Render .svg files
  • Render text
  • Rotation of objects
  • Scaling images
  • Translating images
  • Applying image effects
  • Save rendered audio to .wav file
  • Show current frequency of audio

Currently Working On

  • MIDI control

Proposed Features

  • Move to a frequency-based rather than weight-based drawing system
  • Implement a trace effect
  • Tune and transpose audio output
  • Support rendering of multiple objects
  • (long term) Keyframing/animating objects and camera

Screenshots

Usage

Using osci-render is very easy; run the program and choose the file you would like to render, and it will output as audio to visualise on your oscilloscope.

By default, the program loads the example cube object. If this is working, you're good to go and should be able to load your own objects, files, or images!

Control the output using the sliders and text boxes provided. Currently the following can be controlled:

  • Translation and speed of translation of the output
  • Weight of the lines drawn
  • Rotation speed
  • Scale of the image

There are some additional controls for .obj files:

  • Focal length of camera
  • Position of camera
  • Rotation speed
  • Rotation direction

Additional effects can be applied to the image such as:

  • Vector cancelling
  • Bit crush
  • Horizontal/Vertical distortion
  • Wobble (plays sin wave at same frequency as output)

MIDI

To control the sliders using a MIDI slider or knob from a physical device, do the following:

  • First, plug-in MIDI device
  • Open osci-render
  • Click MIDI logo next to the slider you want to control
  • Red means the slider is 'armed' and waiting for you to choose a MIDI key to associate it with
  • Move a slider/knob etc. on your MIDI device
  • The MIDI logo now turns green, and is controlled by your MIDI device!

Running

Head over to Releases and download the latest .exe, .deb, or .jar.

.exe or .deb is recommended, if possible, as it is simpler to get up and running.

Running using .exe

  • Download the latest osci-render-VERSION.exe from Releases
  • Open the .exe skipping any Windows security warnings
  • It should open briefly and then close without any user input
  • Check your start menu for osci-render or open osci-render.exe at C:\Program Files\osci-render
  • Start rendering!

Updating to later versions is as simple as running the latest osci-render-VERSION.exe again.

To uninstall, use Windows control panel, as you would expect.

Running using .deb

  • Download the latest osci-render_VERSION-1_amd64.deb from Releases
  • Install as usual, according to your distro
    • e.g. on Ubuntu, just double click to open and choose software installer
  • After installing, you can execute /opt/osci-render/bin/osci-render to run!
  • Start rendering!

Running using .jar

  • Download the latest osci-render-os-VERSION.jar from Releases
    • Download the version that is relevant to your OS, otherwise the program will not open
    • i.e. osci-render-win-VERSION.jar for Windows and osci-render-unix-VERSION.jar for Linux
  • Download and install Java 16 or later
  • Run the following command from your terminal to run the .jar, substituting the correct path to your .jar file
  • java "-Dfile.encoding=UTF8" -jar "PATH/TO/osci-render-os-VERSION.jar"
  • Start rendering!

Building

I am using Maven for dependency management and to package the program. Doing the following will setup the project. I highly recommend using IntelliJ.

  • Download and install Java 16 or later
  • Run git clone git@github.com:jameshball/osci-render.git
  • Open the project in IntelliJ
  • You're good to go!

You should now be able to run sh.ball.gui.Launcher and start the program 😊

Contact

James Ball, james@ball.sh

Special Thanks

IC Hack 20 Team Members: James Ball, William Grant, Jessica Lally, Noor Sawhney, and Andy Wang

'Rendering shapes through audio signals' article author: Sudarshan Sreeram