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 >
2020-12-04 21:49:44 +00:00
Program for drawing objects, text, and images on an oscilloscope using audio output.
2020-01-22 23:33:22 +00:00
2020-11-22 13:29:29 +00:00
This allows for 3D rendering of `.obj` files, `.svg` images, and `.txt` files.
2020-02-11 22:28:00 +00:00
2021-05-10 20:48:46 +00:00
Some of this was built as part of a 24hr hackathon: IC Hack 20. The original repository can be found here: https://github.com/wdhg/ICHack20 It won 'Best Newcomers Prize' at the event.
2020-02-16 17:52:28 +00:00
2020-10-18 20:47:41 +00:00
### Video Demonstration
2020-05-08 19:43:19 +00:00
2021-05-15 22:11:43 +00:00
[![osci-render demonstration ](https://img.youtube.com/vi/feQzC_Tz5K4/0.jpg )](https://www.youtube.com/watch?v=feQzC_Tz5K4)
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
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-05-19 20:55:10 +00:00
- Save rendered audio to .wav file
2020-10-18 20:47:41 +00:00
## Proposed Features
2020-12-04 21:49:44 +00:00
- Tune and transpose audio output
2020-10-18 20:47:41 +00:00
- Support rendering of multiple objects
- (long term) Keyframing/animating objects and camera
## 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-10 20:48:46 +00:00
By default, the program loads the example rotating cube. 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
2020-12-04 21:49:44 +00:00
- Translation and speed of translation of the output
- Weight of the lines drawn
- Rotation speed
- Scale of the image
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
- Position of camera
2021-05-19 20:54:42 +00:00
- Rotation speed
- Rotation direction
Additional effects can be applied to the image such as:
- Vector cancelling
- Bit crush
2020-10-18 20:47:41 +00:00
2021-05-10 20:48:46 +00:00
## Screenshots
2021-05-26 19:44:18 +00:00
< img width = "524px" height = "330px" src = "gui.png" >
2021-05-10 20:48:46 +00:00
## Running
Head over to [Releases ](https://github.com/jameshball/osci-render/releases ) and download the latest `.exe` or `.jar` .
`.exe` is highly recommended if you're on Windows as it is much simpler to get up and running.
### Running using .exe
- Download the latest `osci-render-VERSION.exe` from [Releases ](https://github.com/jameshball/osci-render/releases )
- Open the `.exe` skipping any Windows security warnings (at your own risk!)
- 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 .jar
- Download the latest `osci-render-VERSION.jar` from [Releases ](https://github.com/jameshball/osci-render/releases )
- Download and install [Java 15 or later ](https://www.oracle.com/java/technologies/javase-jdk16-downloads.html )
- Donwload and unpack [JavaFX 16 or later ](https://gluonhq.com/products/javafx/ )
- Make sure you scroll down to `Latest Release`
- Download the SDK for your platform
- Unpack the `.zip` at your root directory (e.g. `C:\javafx-sdk-16` for me on Windows)
- The `lib` subfolder should be located at `/javafx-sdk-16/lib`
- Run the following command from your terminal to run the `.jar` , substituting the correct paths
- `java --enable-preview --module-path /javafx-sdk-16/lib --add-modules=javafx.controls,javafx.fxml -jar "path/to/osci-render-VERSION.jar"`
- 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.
- Download and install [Java 15 or later ](https://www.oracle.com/java/technologies/javase-jdk16-downloads.html )
- Run `git clone git@github.com:jameshball/osci-render.git`
- `cd` into the `osci-render` directory
- Run `mvn package`
- Open the project in IntelliJ
- Add `target/modules` as a library
- Right click the folder in IntelliJ and `Add as Library...`
- Select `osci-render` in the `Add to module` dropdown
- Navigate to `File -> Project Structure`
- Remove all external Maven libraries other than the `modules` folder just added
- You're good to go!
You should now be able to run `sh.ball.gui.Gui` 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
2020-11-08 22:27:37 +00:00
IC Hack 20 Team Members: [James Ball ](https://github.com/jameshball ), [William Grant ](https://github.com/wdhg ), [Jessica Lally ](https://github.com/jessicalally ), [Noor Sawhney ](https://github.com/noor-gate ), and [Andy Wang ](https://github.com/cbeuw )