Code Monkey home page Code Monkey logo

oscar's Introduction

Oscar

Image

Overview

Oscar is a three channel oscilloscope, spectrum analyser and MIDI event viewer designed for use in a Eurorack modular synthesiser. Each of the three channels has a buffered through allowing use any where in the signal chain.

The oscilloscope can display up to three channels at once, either in separate lanes or overlaid. Horizontal and vertical zoom are available and a trigger with adjustable x/y can be applied to any channel.

Image

The spectrum analyser is used to show the frequency components of any signal. The frequencies of the principal harmonics are shown both graphically and numerically. An autotune function dynamically adjusts the sample rate to lock on the fundamental frequency of the signal. This gives an extremely clear view of the frequency spectrum whilst being fast enough for real-time use.

Image

A waterfall plot shows the frequency spectrum over time in a 3 dimensional view.

Image

A MIDI event viewer displays the MIDI channel, note on/off status, pitchbends, control changes and aftertouch. Clock speed is indicated with a flashing dot.

Image

Technical

Oscar uses an SMT32F446 microcontroller to capture incoming signals with the internal ADC and display the results on a 320x240 LCD display via SPI. Code is written in C++ 20 using the STM32CubeIDE Eclipse-based IDE. Hardware interfacing is carried out through custom code (ie no STM HAL libraries).

Image

Analog signal capture is carried out via the internal 12 bit ADCs. Capture is controlled by a timer that is adjusted to the desired horizontal display frequency in oscilloscope mode. In Spectrum Analyser mode the autotune function dynamically alters the sampling rate to attempt to capture an integer multiple of the fundamental frequency of the incoming signal. This is done by inspecting the side-lobes of the FFT and altering the sampling rate to minimise the offset.

The internal UART is used to capture MIDI data for display.

Image

The microcontroller is clocked at 180MHz via an external 8MHz crystal oscillator.

The display is a 320x240 TFT LCD controlled with an ILI9341 driver. Screen refreshes are sent using SPI via DMA from the microcontroller. Owing to memory limitations updates are carried out in double-buffered blocks rather than via full screen buffers.

Image

Power Supply

The Eurorack +/-12V rails have reverse polarity protection and filtering. The 3.3V MCU and DAC digital power supplies are provided by an LD1117-3.3 linear regulator. A common digital/analog ground plane is used.

  • +12V Current Draw: 157mA
  • -12V Current Draw: 6mA

oscar's People

Contributors

dchwebb avatar

Stargazers

 avatar  avatar Dave Pearson avatar  avatar  avatar Juan Uicich avatar  avatar Peter Zimon avatar Peter Knoot avatar Pavlo Shelemba avatar  avatar ijnekenamay avatar  avatar  avatar Cody Deschenes avatar

Watchers

James Cloos avatar  avatar  avatar  avatar

Forkers

modulamodula

oscar's Issues

Ready for an amateur to build?

This looks like a fun build and with the MCU chips finally becoming available, it looks like it won't be too difficult.
A few questions.
Is the code stable in the current build or would I need to update it later on?
and probably a stupid question...but would it be a big deal to rotate the screen 90 degrees? I can do this in kicad, but does it require a lot of work in the code too?

Thanks for sharing this great module!

Screen Blank problem?

1717245024755

After assembling the hardware, I flashed the Oscar446.elf firmware directly, but the screen displays as white with no information. What could possibly be the issue here? Is it likely a problem with the bootloader or some other hardware malfunction?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.