2021-05-02 22:19:47 +00:00
< p align = "center" >
2021-05-02 22:44:10 +00:00
< img width = "267" height = "256" src = "osci.png" / >
2021-05-02 22:19:47 +00:00
< / p >
2021-07-15 22:21:51 +00:00
Program for making music by drawing objects, text, and images on an oscilloscope using audio output.
2020-01-22 23:33:22 +00:00
2022-05-01 16:40:53 +00:00
This allows for 3D rendering of `.obj` files, `.svg` images, `.txt` files, and Blender scenes on Windows, macOS, and Linux.
2020-02-11 22:28:00 +00:00
2021-07-15 22:21:51 +00:00
You can use MIDI to interface with osci-render to make and record music.
2021-06-04 11:07:01 +00:00
Read more about '[Rendering shapes through audio signals](https://felixonline.co.uk/issue/1773/science/rendering-shapes-through-audio-signals)' in this article featuring osci-render!
2021-06-15 12:25:33 +00:00
Send an email to [james@ball.sh ](mailto:james@ball.sh ) if you have any issues, feedback, feature requests, or anything else!
2020-10-18 20:47:41 +00:00
### Video Demonstration
2020-05-08 19:43:19 +00:00
2022-05-22 07:38:59 +00:00
[![osci-render full overview ](https://img.youtube.com/vi/PKVCx7rs_r8/0.jpg )](https://www.youtube.com/watch?v=PKVCx7rs_r8)
[youtube.com/watch?v=PKVCx7rs_r8 ](https://www.youtube.com/watch?v=PKVCx7rs_r8 )
2020-06-23 20:06:09 +00:00
2020-10-18 20:47:41 +00:00
## Current Features
- Render `.obj` files on an oscilloscope
2020-11-08 22:27:37 +00:00
- Render `.svg` files
2020-11-22 13:29:29 +00:00
- Render text
2022-05-01 16:40:53 +00:00
- [Blender integration ](https://www.youtube.com/watch?v=pCn297Ejvlw )
2022-05-09 21:00:50 +00:00
- [Software oscilloscope visualisation ](https://james.ball.sh/oscilloscope )
2020-10-18 20:47:41 +00:00
- Rotation of objects
2021-05-10 20:48:46 +00:00
- Scaling images
- Translating images
- Applying image effects
2021-12-06 23:10:39 +00:00
- Bit Crush
- Vertical/Horizontal Distortion
- Image Wobble
- Smoothing
- Image Tracing
2021-05-19 20:55:10 +00:00
- Save rendered audio to .wav file
2021-05-26 19:53:24 +00:00
- Show current frequency of audio
2021-07-15 21:44:03 +00:00
- MIDI control!
2021-12-06 23:10:39 +00:00
- Frequency control
2022-03-12 23:06:11 +00:00
- Animating image effects
2020-10-18 20:47:41 +00:00
2021-07-14 19:25:57 +00:00
## Screenshots
< img width = "100%" src = "gui.png" >
2020-10-18 20:47:41 +00:00
## Usage
2020-12-04 21:49:44 +00:00
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.
2020-10-18 20:47:41 +00:00
2021-05-27 21:59:31 +00:00
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!
2020-10-18 20:47:41 +00:00
2020-12-04 21:50:29 +00:00
Control the output using the sliders and text boxes provided. Currently the following can be controlled:
2020-10-18 20:47:41 +00:00
2022-03-12 23:06:11 +00:00
- Translation and speed of translation
2020-12-04 21:49:44 +00:00
- Weight of the lines drawn
- Rotation speed
2022-03-12 23:06:11 +00:00
- Volume/scale of the image
- Frequency
2020-10-18 20:47:41 +00:00
2020-12-04 21:49:44 +00:00
There are some additional controls for `.obj` files:
2020-10-18 20:47:41 +00:00
2020-12-04 21:49:44 +00:00
- Focal length of camera
2021-05-19 20:54:42 +00:00
- Rotation speed
- Rotation direction
Additional effects can be applied to the image such as:
2021-12-06 23:10:39 +00:00
- Vector cancelling (every other audio sample is inverted)
2021-05-19 20:54:42 +00:00
- Bit crush
2021-05-27 21:59:31 +00:00
- Horizontal/Vertical distortion
2021-12-06 23:10:39 +00:00
- Image Wobble (plays sin wave at same frequency as output)
- Smoothing
- Image Trace (traces out the image, drawing only a portion of the whole image)
2020-10-18 20:47:41 +00:00
2022-05-01 16:40:53 +00:00
### Using osci-render with Blender
This [video ](https://www.youtube.com/watch?v=pCn297Ejvlw ) explains how to install and use osci-render with Blender. Below is an overview of the process, assuming you've already [installed osci-render ](#installing ).
- Download the latest Blender add-on from [Releases ](https://github.com/jameshball/osci-render/releases ) named `osci-render-blender-addon.zip`
- [Install and enable the add-on ](https://docs.blender.org/manual/en/latest/editors/preferences/addons.html#installing-add-ons ) in Blender
- 'osci-render settings' menu will now appear under 'Render Properties'
- Open osci-render
- Click 'Connect to osci-render'
- If the filename in osci-render changes to 'Rendering from external input' you have successfully connected
- Add a camera to the scene (if not already present)
- Add a Scene Line Art object to the scene
- Press Shift+A and navigate to Grease Pencil > Scene Line Art
- Go to 'Modifier Properties' of the newly created Line Art object
- Click 'Bake Line Art' under the the 'Bake' settings to generate line art for the current animation/scene/camera
- You should now see the scene on your oscilloscope!
If there are any problems, please create an [issue ](https://github.com/jameshball/osci-render/issues )!
2021-12-24 10:30:36 +00:00
### Using osci-render without an oscilloscope
2022-05-09 21:00:50 +00:00
osci-render now has a software oscilloscope built-in! It is a modified version of [m1el/woscope ](https://github.com/m1el/woscope ), an amazing web-based software oscilloscope.
You can open it from Window > Open Software Oscilloscope which will open [james.ball.sh/oscilloscope ](https://james.ball.sh/oscilloscope ) in your default browser.
If there are any problems, please create an [issue ](https://github.com/jameshball/osci-render/issues )!
2021-12-24 10:30:36 +00:00
2021-07-14 19:25:57 +00:00
### MIDI
2021-07-15 21:44:03 +00:00
You can use MIDI to control the frequency of the output - just plug in or open a MIDI software/hardware device and open osci-render and start playing notes!
2021-07-14 19:25:57 +00:00
To control the sliders using a MIDI slider or knob from a physical device, do the following:
2021-05-10 20:48:46 +00:00
2021-07-14 19:25:57 +00:00
- 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
2021-12-06 23:10:39 +00:00
- Move a CC slider/knob etc. on your MIDI device
2021-07-14 19:25:57 +00:00
- The MIDI logo now turns green, and is controlled by your MIDI device!
2021-05-10 20:48:46 +00:00
2021-12-12 23:26:55 +00:00
## Installing
2021-05-10 20:48:46 +00:00
2021-12-12 23:26:55 +00:00
Head over to [Releases ](https://github.com/jameshball/osci-render/releases ) and download the latest `.exe` , `.pkg` , `.deb` , or `.jar` .
2021-05-10 20:48:46 +00:00
2021-12-12 23:26:55 +00:00
`.exe` , `.pkg` , or `.deb` is recommended, if possible, as it is simpler to get up and running.
2021-05-10 20:48:46 +00:00
2021-12-12 23:26:55 +00:00
### Installing using .exe (Windows)
2021-05-10 20:48:46 +00:00
- Download the latest `osci-render-VERSION.exe` from [Releases ](https://github.com/jameshball/osci-render/releases )
2021-06-07 08:37:22 +00:00
- Open the `.exe` skipping any Windows security warnings
2021-05-10 20:48:46 +00:00
- 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.
2021-12-12 23:26:55 +00:00
### Installing using .pkg (macOS)
- Download the latest `osci-render-VERSION.pkg` from [Releases ](https://github.com/jameshball/osci-render/releases )
- Since I haven't paid for a developer licence, you'll be warned that it is from an 'unidentified developer' when trying to run the installer
- To mitigate this, do the following (explained on the [macOS User Guide ](https://support.apple.com/en-gb/guide/mac-help/mh40616/mac ))
- Locate the downloaded `.pkg` file in Finder
- Control-click the file, and choose Open from the shortcut menu
- Click Open
- Follow the steps in the installer
- Open `osci-render` from the Launchpad
- Start rendering!
### Installing using .deb (Ubuntu)
2021-06-07 08:37:22 +00:00
- Download the latest `osci-render_VERSION-1_amd64.deb` from [Releases ](https://github.com/jameshball/osci-render/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!
2021-12-12 23:26:55 +00:00
### Running using .jar (all platforms)
2021-05-10 20:48:46 +00:00
2021-06-07 08:37:22 +00:00
- Download the latest `osci-render-os-VERSION.jar` from [Releases ](https://github.com/jameshball/osci-render/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
2021-12-06 00:25:12 +00:00
- Download and install [Java 17 or later ](https://www.oracle.com/java/technologies/downloads/ )
2021-06-07 08:37:22 +00:00
- 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"`
2021-05-10 20:48:46 +00:00
- Start rendering!
2020-10-18 20:47:41 +00:00
## Building
2021-05-10 20:48:46 +00:00
I am using Maven for dependency management and to package the program. Doing the following will setup the project. I highly recommend using IntelliJ.
2021-12-06 00:25:12 +00:00
- Download and install [Java 17 or later ](https://www.oracle.com/java/technologies/downloads/ )
2021-05-10 20:48:46 +00:00
- Run `git clone git@github.com:jameshball/osci-render.git`
- Open the project in IntelliJ
2021-12-24 10:30:36 +00:00
- I use [SceneBuilder ](https://gluonhq.com/products/scene-builder/ ) to edit the GUI
2021-12-30 14:20:04 +00:00
- The FXML project files for each GUI element are located in `src/main/resources/fxml`
2021-05-10 20:48:46 +00:00
- You're good to go!
2021-06-07 08:37:22 +00:00
You should now be able to run `sh.ball.gui.Launcher` and start the program 😊
2020-10-18 20:47:41 +00:00
## Contact
James Ball, [james@ball.sh ](mailto:james@ball.sh )
2020-06-23 20:06:09 +00:00
## Special Thanks
2020-10-18 20:47:41 +00:00
2021-06-04 11:07:01 +00:00
'Rendering shapes through audio signals' article author: [Sudarshan Sreeram ](https://github.com/Sudarshan-Sreeram )
2022-02-28 23:31:23 +00:00
[@javierplano_videonix ](https://www.instagram.com/javierplano_videonix/ ) for testing and providing advice as an artist