Skip to content

billguastalla/visualisations

Repository files navigation

alt text

Introduction

Visualisations is a desktop application which can draw a number of visualisations: 3D graphical effects, Cellular Automata, and geometric features. Emphasis is placed on the interaction between 3D graphics and real-time audio, and visualisations are able to respond to real-time audio from a microphone. Individual visualisations can be encoded and written to file to mpg video files within the application.

Disclaimer

This is a personal project for implementing audio-visual ideas. The development process, when it happens, is fast and loose: unlike for projects that are built as part of a team and relied on by a user base, here it is a secondary priority to organise the source in the interest of clarity, stability, speed and security.

Running

Installers for releases are made available for Windows 10 x64, and the binaries are available here.

Installers are produced using NSIS.

Platforms and Development Environments

The project is developed on a Windows 10 x64 environment, on Visual Studio 2019, version 16.1.3. It is possible to build it on linux environments, and this should be reasonably easy, as there is little to no platform-specific code.

Projects in this Repository

The directory of the main project is in Projects\Visualisations.

root
|----- Configurations
|----- Projects
|-----|----- StandaloneFeatures
|-----|-----|----- AudioAttributes
|-----|-----|----- HighDimensionalSandbox
|-----|-----|----- Oscilloscope
|-----|-----|----- RenderToFile
|-----|----- Visualisations
|----- {...}

Under Projects\StandaloneFeatures, there are four other projects. These exist to demonstrate specific features used or to be used in the main project, as standalone projects.

One justification for this is that as a developer of your own software, you might just want to see the how video rendering capabilities were designed in this project. If so you can go to root\StandaloneFeatureDev\RenderToFile, and see how FFMPEG is used in this OpenGL desktop application.

alt text

Dependencies & Install Instructions

The project uses a mixture of shared and static libraries. It's advisable for contributors to build the dependencies locally, rather than to rely on binaries found online. For each dependency, obtain the source code, use CMake to set up a build environment for the dependency-project, and then build it.

In this project, in Visual Studio, the libraries and includes are maintained through project property sheets. If you find issues with dependencies, check that the names and locations in these sheets match up with your locally built libraries.

Dependencies: Shared/Static Libraries

The list of link library files used in this project are listed here.

  • avcodec-58.dll
  • avdevice-58.dll
  • avfilter-7.dll
  • avformat-58.dll
  • avutil-56.dll
  • portaudio_x64.dll
  • postproc-55.dll
  • swresample-3.dll
  • swscale-5.dll

Below are descriptions of each library used, and links to find their sources.

FFMPEG (Last used version 4.1)

FFMPEG is a comprehensive tool for encoding/decoding audio and video. It is used here to write visualisations to video files.

GLFW3 (Last used version 3.2)

GLFW is a window manager to provide contexts to draw OpenGL framebuffers, and to retrieve events from human-interface devices.

PORTAUDIO (Last used version 1246720)

PortAudio is a general multi-platform interface to audio hardware. It is used here to record real-time audio.

Dependencies: Header-only

GLM (Last Used Version: 0.9)

GLM is a mathematics and vector library for use with OpenGL. One of the reasons it is useful is because it aligns data types on the CPU closely with the native types of the GLSL shading language.

IMGUI (Last Used Version: 1.6.2)

IMGUI is an Immediate-Mode-GUI system. In Visualisations, it is library which produces the window manager within the OpenGL viewport.

STB-Image (Last Used Version: 2.1.9)

STB Image is a C/C++ image loading library, as a single header, stb_image.h.

Unit Tests

Unit tests are written in a project called UnitTests, under the main solution. The framework for unit testing used here is called Catch2. To add new unit tests, look at TestSuite.cpp.

Credits & Licensing

The author expresses gratitude to the writers and contributors of each library that has been used by Visualisations.

This project owes a huge amount to the OpenGL tutorial provided by Joey De Vries. A number of OpenGL-based components in this project are derived from these OpenGL tutorials. The author of this project is grateful to Joey's contributions to computer graphics.

Currently, Visualisations itself is not licensed. If you would like to use the program, send me an email. My email is my github username @gmail.com.

The components that are modified works from Joey De Vries, are licensed under Creative Commons 4.0 Non-commercial Attribution, and are labelled as such at the top of the file. (see LICENSE-CC4.0NA.md)

About

A small graphics engine with live audio input and video rendering; a sandbox to generate audio-visual interactions.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages