SakeTami
James H Ball
James H Ball

gumroad


osci-render

You'll get osci-render as a standalone application, VST3, or AU audio plugin, on Windows, macOS, and Linux.

A synthesizer audio plugin for making music by drawing objects, text, and images on an oscilloscope.

Read more, and contribute to osci-render here!

Share your art, and give feedback on the osci-render Discord!

Get osci-render premium here to get the following features:

  • Super-realistic oscilloscope

  • The ability to record visuals

  • Support for MP4 and MOV video formats

  • Syphon/Spout input

  • Improved text rendering

Free Version 2.5.1.0

WINDOWS USERS: Make sure you install the latest C++ runtime redistributable here https://aka.ms/vs/17/release/vc_redist.x64.exe

osci-render-free-mac.pkg
osci-render-free-windows.exe
osci-render-free-linux.zip

Release notes:

  • There is now a timeline for GPLA files on the standalone version, so that you can easily scrub the video or animation

  • You can now link certain parameters together, such as scale, to allow you to use one slider to control multiple parameters

  • You can now easily mute audio using the volume icon above the volume meter on the left

  • The visualiser settings window is now resizable horizontally to allow finer control of the sliders

  • If there is an unexpected crash, you can choose to reset to a new project

  • The volume meter has been redesigned to look more modern

  • A warning message now appears when trying to open very large .obj files

  • The last opened directory is now saved globally across projects and VSTs

Free Version 2.4.11.0

WINDOWS USERS: Make sure you install the latest C++ runtime redistributable here https://aka.ms/vs/17/release/vc_redist.x64.exe

osci-render-free-mac-installer.pkg
osci-render-free-windows-installer.exe
osci-render-free-linux.zip
osci-render-blender-plugin.zip

Release notes:

  • Fixed the visualiser not appearing, being black, or having glitches on many Intel graphics computers

  • Applications on Windows are now properly DPI and scale-aware, so there should be fewer issues when switching between windows with different scales set.

  • Replaced the slider range button with a more generic settings button that allows you to control all slider settings

  • Added new LFO start and end parameters that manage the LFO's range, effectively enabling you to automate each slider's minimum and maximum values.

  • Added a new parameter to each slider that allows you to control how quickly the slider changes value, called 'Smooth Value Change Speed'

  • Improved the sizing and spacing of the recording and visualiser settings

  • Added the current file name to the window title

Version 2.4.10.3

  • Added support for MP3, OGG, and FLAC audio file types in osci-render

  • Added better error messages when osci-render fails to open a file type

  • Fixed a crash when opening projects

WINDOWS USERS: Make sure you install the latest C++ runtime redistributable here https://aka.ms/vs/17/release/vc_redist.x64.exe

osci-render-free-installer-mac.pkg
osci-render-free-installer-windows.exe
osci-render-free-linux.zip

Version 2.4.8

This version adds several quality-of-life and performance improvements.

  • Massively improved performance when streaming live from Blender and saving GPLA files

    • Reduced file size of GPLA files

    • Grease pencil line art baking is no longer required (but still helps performance)

  • You can now randomize the Blender port in the About menu, and choose a specific port in the Blender plugin

  • Overhauled the trace effect behaviour

    • Instead of 'Trace Start' and 'Trace End', it is now controlled with 'Trace Start' and 'Trace Length'

  • Fixed and improved the wobble effect

    • The wobble effect now has a 'Wobble Phase' parameter that controls the position of the wobble

  • Make the visualiser settings window resizable

  • You can now drag-and-drop to open files and .osci projects

  • Changing slider values with arrow keys is now more reliable

  • Double-clicking sliders now correctly resets slider values

  • Improved visualiser settings interface

  • The size and layout of the application and audio plugin is now saved with the project

WINDOWS USERS: Make sure you install the latest C++ runtime redistributable here https://aka.ms/vs/17/release/vc_redist.x64.exe

osci-render-free-installer-mac.pkg
osci-render-free-installer-windows.exe
osci-render-free-linux.zip

Version 2.4.3

This adds a lot of small quality-of-life improvements, including:

  • Make visualiser fullscreen mode hide the bottom bar and your cursor when it's still

  • Add space to pause the visualiser

  • Make popout visualiser always stay on top

  • Add double-click and alt-click to reset parameter values

  • Add more decimal places to effects and LFOs (requires creating a new project to activate)

  • Fix crash when loading a project in a VST

  • Show an error if a GIF fails to open

WINDOWS USERS: Make sure you install the latest C++ runtime redistributable here https://aka.ms/vs/17/release/vc_redist.x64.exe

osci-render-free-installer-mac.pkg
osci-render-free-installer-windows.exe
osci-render-free-linux-app.zip
osci-render-free-linux-vst3.zip
osci-render-blender-plugin.zip

Major Version 2.4

This version brings massive performance and quality improvements to the software oscilloscope visualiser, and brings several more visualiser settings, including:

  • Saturation

  • Focus

  • Noise

  • Glow

  • Ambient Light

  • Smoothing (low-pass filter)

  • Sweep

This also adds buttons to get osci-render premium which includes all the features included with sosci, a new audio plugin that simulates the look and feel of a real analogue oscilloscope from the 20th century.

You can learn more about sosci here: https://osci-render.com/sosci

Major Version 2.3

This version brings a massively improved software oscilloscope visualiser, several helper functions for Lua custom effects and files, and support for opening .wav and .aiff audio files!

Scroll down below to see some of the new features, or download here:

New software oscilloscope visualiser

Here's a look at the new visualiser, making the preview far more realistic!

New Software Oscilloscope Visualiser.mp4

The new visualiser uses the same renderer as dood.al/oscilloscope (thanks @pishtaq for letting me use this!) which is widely regarded to be the best quality software oscilloscope.

This version comes with several improvements such as:

  • Improved quality when full-screen

  • Ability to change the intensity of the beam

  • Control over the smudging effect applied to the image

If you find that you are having performance or stability issues using the new visualiser, you can always switch back to the old visualiser by going to View > Use Legacy Visualiser in the menu bar at the top.

.wav and .aiff audio file support

You can now open .wav and .aiff audio files in osci-render, allowing you to import audio from other software and apply osci-render's effects to it! This gives additional flexibility to the standalone app, where it was previously clunky to use with existing audio.

Lua helper functions

The new helper functions for Lua open up a lot more possibilities when making custom Lua files and effects. They simplify creating shapes and waves, and also allow multiple images to be mixed together using the osci_mix() function. Here's the full documentation of the new functions added:

osci_line()

return osci_line(phase)start = { slider_a, slider_b } finish = { slider_c, slider_d } line = osci_line(phase, start, finish) return line

osci_rect()

return osci_rect(phase)width = slider_a height = slider_b rect = osci_rect(phase, width, height) return rect

osci_square()

return osci_square(phase)width = slider_a square = osci_rect(phase, width) return square

osci_arc()

return osci_arc(phase)radius_x = slider_a radius_y = slider_b start_angle = slider_c * 2 * math.pi end_angle = slider_d * 2 * math.pi arc = osci_arc(phase, radius_x, radius_y, start_angle, end_angle) return arc

osci_ellipse()

return osci_ellipse(phase)radius_x = slider_a radius_y = slider_b ellipse = osci_ellipse(phase, radius_x, radius_y) return ellipse

osci_circle()

return osci_circle(phase)radius = slider_a circle = osci_circle(phase, radius) return circle

osci_polygon()

return osci_polygon(phase)num_sides = math.floor(slider_a * 10) polygon = osci_polygon(phase, num_sides) return polygon

osci_bezier()

return osci_bezier(phase)start = { slider_a, slider_b } control_point = { slider_c, slider_d } finish = { slider_e, slider_f } quadratic_bezier = osci_bezier(phase, start, control_point, finish) return quadratic_bezierstart = { slider_a, slider_b } control_point_1 = { slider_c, slider_d } control_point_2 = { slider_e, slider_f } finish = { slider_g, slider_h } cubic_bezier = osci_bezier(phase, start, control_point_1, control_point_2, finish) return cubic_bezier

osci_lissajous()

return osci_lissajous(phase)radius = slider_a ratio_a = slider_b ratio_b = slider_c theta = math.sin(step / 1000) lissajous = osci_lissajous(phase, radius, ratio_a, ratio_b, theta) return lissajous

osci_translate()

translate = { slider_a, slider_b } square = osci_square(phase) square = osci_translate(square, translate) return square

osci_scale()

scale = { slider_a, slider_b } square = osci_square(phase) square = osci_scale(square, scale) return square

osci_rotate()

angle = slider_a * 2 * math.pi square = osci_square(phase) square = osci_rotate(square, angle) return square

osci_saw_wave()

return { osci_saw_wave(10 * phase), osci_saw_wave(phase)}

osci_square_wave()

square_wave = osci_square_wave(phase) return { osci_saw_wave(phase), square_wave }

osci_triangle_wave()

triangle_wave = osci_triangle_wave(phase) return { osci_saw_wave(phase), triangle_wave }

osci_mix()

ellipse = osci_ellipse(phase) square = osci_square(phase) offset = 2 * math.pi * osci_saw_wave(step / 1000) weight = osci_square_wave(phase + offset) return osci_mix(ellipse, square, weight)

Minor changes and bug fixes

  • Removed support for connections to james.ball.sh/oscilloscope

  • Changed renderer on Windows to Direct2D for better performance

  • Visualiser now stays in full screen upon closing and opening osci-render

  • Fixed bug on Windows on some DAWs where separate opened windows would not render correctly

  • Fixed several minor bugs

Version 2.2.1

  • Fixes bugs when opening .osci files before version 2.2.0

  • The last opened folder is now remembered when opening files

Major Version 2.2

Osci-render 2.2 is the second major release of osci-render 2!

This version brings support for animated GIFs, as well as wider image support, allowing you to open PNG and JPEG images! Here's a little showcase of what's new:

Osci-render 2.2 new features.mp4

There's also a new About section that provides some credits, as well as the current version of osci-render:

Here's a full changelog for this version:

  • Support for animated GIFs

  • Support for PNG and JPEG images

  • Improved software oscilloscope controls

    • Includes ability to pop-out software oscilloscope into a separate window

  • Various fixes and improvements

Version 2.1.7

  • Support for opening pre-rendered Blender scenes, and syncing them to music

    • This allows you to connect with several instances of osci-render and Blender at once

    • It also massively improves performance when using Blender this way

    • This comes as a new file type, .gpla, which stands for Grease Pencil Line Art

    • Blender scenes can be animated within osci-render, and synced to the BPM of your DAW

    • Thanks so much to DJ_Level_3 for making this feature, and for writing the tutorial below!

Using the new Blender features

  • Install the latest Blender plugin above

  • Create an animation in Blender

Create an animation in Blender.mp4
  • Add a Scene Line Art object, or Collection Line Art object if using collections

Add a Collection Line Art object.mp4
  • Change the following settings from default

    • Edge Types

      • Intersections: Enable

    • Geometry Processing

      • Overlapping Edges as Contour: Enable

      • Crease on Smooth: Enable

    • Composition

      • Overscan: Set to 0

      • Image Boundary Trimming: Enable

Change the settings from default.mp4
  • Bake the line art. If keyframes appear on the timeline, great! If not, clear the baked line art and bake again.

  • When seen from the side, the line art is only visible on some edges, which are the edges that are visible to the camera.

Line art is only visible on some edges.mp4
  • This becomes clear when viewed from the camera’s perspective.

Viewed from the camera’s perspective.mp4
  • In the osci-render Blender plugin, click “Save line art to file” and name the file to which the line art will be saved. Note: The plugin automatically adds the extension .gpla if there is no extension or if the extension is not .gpla.

Save line art to file.mp4
  • In a DAW (in this tutorial, Ableton was used), open the osci-render VST3 plugin and (optionally) enable MIDI. If using MIDI, it is recommended (but not required) to set the number of voices to 1 and increase the sustain level to 1.000.

Opening osci-render in a DAW.mp4
  • Using the “Choose File(s)” button in osci-render, open the .gpla file exported from Blender. This will open the Line Art Settings panel and begin rendering the line art from the file.

Open the .gpla file.mp4
  • To synchronize the animation with the BPM of the song, tick the “BPM Sync” box and set the framerate in frames per beat. For animations that have a length of a power of 2, setting the rate to a lower power of 2 makes the animation loop exactly at the beginning of a bar. In this example, where the animation is 32 frames and the rate is 8 frames per beat, the animation loops every 4 beats or 1 bar at 4/4.

Synchronize the animation with the BPM of the song.mp4

Version 2.1.6

  • Fixed bug where custom Lua effect code would be blank when opening and closing a VST window

  • Fixed bug where enabling sidechain on the first parameter in an effect causes sidechain on all parameters to be enabled

  • Fixed crash when reordering effects

  • Changed AU plugin type so it appears correctly as an instrument in GarageBand

  • Osci-render now automatically opens the code editor when a Lua or text file is created

Version 2.1.5

  • Fixed bug causing audio input to be disabled

  • Improved checkbox design

  • Allow LFO sliders to be more granular, supporting increments of up to 0.01Hz

Version 2.1.4

  • Tweaked the interface to make it more responsive, modern, and clear

    • Corners are rounded

    • White outlines removed from buttons and text boxes

    • Increased contrast between parts of the interface

    • Improved performance when moving and resizing the window

    • File editor now includes the file name

  • Lua now throws an error if the script runs for too long, helping stop infinite loops without freezing osci-render

  • You can clear the console from within Lua using the clear() function

  • Fixed various bugs

Version 2.1.3

  • Fixes bug on macOS when changing the range of sliders

  • Replaces effect checkboxes with toggle switches

Version 2.1.2

  • Adds debug console for Lua, to allow you to view messages printed to the console using the print function

    • The console is closed by default, and can be opened by clicking the console title

    • Click the pause button to pause printing to the console, allowing you to scroll through the console history

    • Click the delete button to clear the console

  • Fixes a bug that caused a crash when opening multiple files at once

  • Adds a button next to sliders to allow you to change the range of the slider, and LFOs that control this slider

    • This was previously possible by right-clicking the slider name, but has been moved to a button to make it easier to find

Version 2.1.1

  • Lua sliders can now be animated with LFOs!

  • Lua slider values now smoothly change between values

  • Lua slider values can now be used in effects

  • PLEASE NOTE: Performance when using Lua may be worse. Let me know if you notice a difference!

Major Version 2.1

Osci-render 2.1 is the first major release of osci-render 2, packed with new features, bug fixes, and lots of quality-of-life improvements.

PLEASE NOTE: This is a major release, and old .osci projects or old DAW projects may break if you are upgrading osci-render to 2.1

New features & improvements

  • New audio effects!

    • 3D Ripple

      • Applies a 3D ripple effect to the image in the Z direction

      • Ripple Depth controls the size of the ripples applied to the image

      • Ripple Phase controls the position of the ripple

        • By default, this is animated to make the image ripple inwards

      • Ripple Amount controls how many ripples are applied to the image - increasing this will reduce the space between ripples

    • 3D Rotation

      • Controls rotation of the image and object in X, Y, and Z directions

      • By default, the image rotates around the Y axis

    • Scale

      • Scales the image and object in X, Y, and Z directions

      • Make this negative to invert the image

    • Swirl

      • Applies a swirl distortion to the image

    • Dash

      • Traces along the image in dashed-lines - increase this to increase the length of the dashes

  • Modified audio effects

    • All existing effects now operate in 3D rather than 2D

      • This means effects like bit crush apply the effect in X, Y, and Z directions, like below:

    • Added Z dimension to Distortion and Translation effects

    • Simplified and expanded 2D Rotate effect into 3D rotation without a rotation speed slider

      • Rotation speed can now be more easily controlled by animating rotation using a Sawtooth or Reverse Sawtooth LFO, and setting the exact speed in Hz

      • Removed any fixed-rotation axis buttons since these are no longer required

    • Trace effects are now more consistent

    • 3D perspective effect has been removed since everything is now treated as a 3D object

      • This has been replaced with the Lua Effect, for programmable audio effects

      • You can now create 3D custom effects, using the variable z, which is the Z coordinate of the input audio

  • Lua can now output 3D coordinates, as well as 2D coordinates like before

    • This means you can now program 3D shapes, objects, fractals, or anything else you want!

  • New button to randomise all the audio effects

    • This gives you a really quick way to experiment with new audio effects

  • The default shape is now a square rather than a circle

  • Slightly rearranged the interface

  • Improved the file opening and navigation interface

    • You can now switch between files using left and right arrow buttons, instead of pressing j and k

    • Close files by using the delete icon to the right of the file name

Bug fixes

  • frequency, phase, sample_rate, and step variables are now available in custom Lua effects, just like in Lua files

  • Lua slider values can now be changed when editing a custom Lua effect

  • 3D objects that are behind the camera, or out of the range of the camera are now clipped

    • This removes undesirable audio and visual glitches when objects are in strange places

  • 3D objects are now consistently sized when opening them

Old Versions

Version 2.0.8

  • Fixes min trace and max trace effects, so they work as expected

  • Improves audio performance

  • Fixes a bug that meant osci-render could crash when rendering a Blender scene

  • Adds a button to open the Audio and MIDI settings from the MIDI panel when running the standalone version

Version 2.0.7

  • Adds automatic timed recording, and manual recording of audio

    • Click on the circular record icon to start recording, showing a preview of the audio as you record

    • Click the timer icon to configure how long you want to record for, automatically stopping after the time has elapsed

Version 2.0.6

  • Adds MIDI pitch-bend support

Version 2.0.5

  • Adds sidechaining, allowing you to change the value of effects based on the volume of the input audio

    • You can enable this for any slider by clicking the microphone icon next to it

    • When enabled, the microphone icon and slider turn red

    • Now, any audio input controls the value of the effect

  • Sliders are now more usable when the interface is made smaller

  • When loading a project, the DAW is now properly notified of any changes in values

  • Reduce how dark disabled audio effects are, so they are easier to read

Version 2.0.4

  • You can now view the software oscilloscope in full-screen by double-clicking it

    • Note, that you can also improve the quality of the oscilloscope by right-clicking and reducing the roughness, though this may lead to worse performance

Version 2.0.3

  • Massively improve performance of interface and software oscilloscope on Windows

Version 2.0.2

  • Properly support mono output so that the plugin works in Logic.

Version 2.0.1

  • Remove cap on drawing speed that led to inaccurate pitch of objects drawn at high frequency

Version 2.0.0 official release


osci-render

More Creators