All Projects → electro-smith → libDaisy

electro-smith / libDaisy

Licence: MIT license
Hardware Library for the Daisy Audio Platform

Programming Languages

c
50402 projects - #5 most used programming language
C++
36643 projects - #6 most used programming language
assembly
5116 projects
Makefile
30231 projects
CMake
9771 projects
python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to libDaisy

midi-grid
DIY midi controller project
Stars: ✭ 60 (-63.41%)
Mutual labels:  embedded, hardware, midi, stm32
rc-headless-transmitter
DIY 2.4 GHz RC transmitter without display, configurable through smartphone or web browser
Stars: ✭ 28 (-82.93%)
Mutual labels:  hardware, stm32
Shape-Your-Music
A web application for drawing music.
Stars: ✭ 106 (-35.37%)
Mutual labels:  midi, sound
midi-eye
Ruby MIDI input event listener
Stars: ✭ 24 (-85.37%)
Mutual labels:  hardware, midi
Iot Pt
A Virtual environment for Pentesting IoT Devices
Stars: ✭ 218 (+32.93%)
Mutual labels:  embedded, hardware
diy-synths
List of open-source synths 🎹
Stars: ✭ 56 (-65.85%)
Mutual labels:  hardware, sound
CureSynth Whip
Polyphonic MIDI Synthesizer for STM32F7
Stars: ✭ 45 (-72.56%)
Mutual labels:  midi, stm32
Soicbite
A compact PCB footprint which allows SOIC test clips to be used as a space-efficient programming and debugging connector
Stars: ✭ 161 (-1.83%)
Mutual labels:  embedded, hardware
linux-show-player
Linux Show Player - Cue player designed for stage productions
Stars: ✭ 147 (-10.37%)
Mutual labels:  midi, sound
V3 Hardware Design Files
Contains files created with Design Spark PCB Capture Software
Stars: ✭ 104 (-36.59%)
Mutual labels:  hardware, daisy
kikpad
KiKPad : the Midiplus SmartPad reinvented !
Stars: ✭ 31 (-81.1%)
Mutual labels:  midi, stm32
Jled
Non-blocking LED controlling library for Arduino and friends.
Stars: ✭ 197 (+20.12%)
Mutual labels:  embedded, stm32
Frosted
Frosted: Free POSIX OS for tiny embedded devices
Stars: ✭ 194 (+18.29%)
Mutual labels:  embedded, stm32
arduino-midi-footswitch
USB MIDI Pedal built with Arduino
Stars: ✭ 24 (-85.37%)
Mutual labels:  hardware, midi
Opensk
OpenSK is an open-source implementation for security keys written in Rust that supports both FIDO U2F and FIDO2 standards.
Stars: ✭ 2,114 (+1189.02%)
Mutual labels:  embedded, hardware
spc-player
SNES music player in your browser with original hardware and Arduino.
Stars: ✭ 37 (-77.44%)
Mutual labels:  hardware, sound
arm synth
Wavetable Synth Running on an STM32F 32-bit ARM Cortex M3 microprocessor
Stars: ✭ 23 (-85.98%)
Mutual labels:  embedded, midi
Lib Python
Blynk IoT library for Python and Micropython
Stars: ✭ 140 (-14.63%)
Mutual labels:  embedded, hardware
Tinyframe
A simple library for building and parsing data frames for serial interfaces (like UART / RS232)
Stars: ✭ 151 (-7.93%)
Mutual labels:  embedded, stm32
cala
Cross-platform system interface for hardware IO
Stars: ✭ 46 (-71.95%)
Mutual labels:  hardware, sound

libDaisy

Hardware Abstraction Library for the Daisy Audio Platform


libDaisy provides easy access to things such as Audio, Controls, GPIO, MIDI, USB communication, and more.

Features

  • Configurable Audio Callback

  • MIDI Drivers

  • USB Communication (Audio, MIDI, Serial, etc.)

  • Peripheral Device Drivers (SPI, I2S, I2C, etc.)

Code Example

int main(void)
{
    // Init
    float samplerate;
    hw.Init();
    samplerate = hw.AudioSampleRate();
    midi.Init(MidiHandler::INPUT_MODE_UART1, MidiHandler::OUTPUT_MODE_NONE);

    midi.StartReceive();
    hw.StartAdc();
    hw.StartAudio(AudioCallback);
    
    for(;;)
    {
        midi.Listen();
        // Handle MIDI Events
        while (midi.HasEvents())
        {
            HandleMidiMessage(midi.PopEvent());
        }
    }
}

Getting Started

Project Overview

Prefixes and their meanings:

  • sys - System level configuration (clocks, dma, etc.)
  • per - Peripheral level, internal to MCU (i2c, spi, etc.)
  • dev - External device support (external flash chips, DACs, codecs, etc.)
  • hid - User level interface elements (encoders, switches, audio, etc.)
  • ui - User interface building blocks like menu systems, event queues, etc.
  • util - library level elements used within the library (not included via daisy.h)
  • daisy - core API files (specific boards and platforms have extended user APIs that configure libDaisy more below).

Also included is a core/ folder containing:

  • a generic Makefile that can be included in a project Makefile to simplify getting started
  • a linker script for defining the sections of memory used by the firmware
  • core files for starting the hardware (system_stm32h7xx.c, startup_stm32h750xx.s, etc.)

Unit Tests can be found in the test/ folder. Here's a tutorial on how to develop unit tested code for libDaisy.

daisy.h

The base-level include file. This is all you need to include to create your own custom hardware that uses libDaisy.

daisy_seed.h is an example of a board level file that utilizes libDaisy to define some hardware, and provide flexible access.

daisy_seed.h

The SOM-level include file. This can be used with any boards that use the Daisy Seed hardware.

Additional configuration files, with more specific hardware access are provided below for supported hardware platforms.

daisy_platform.h

Several other pairs of files exist for each of the supported hardware platforms that work with Daisy Seed.

These are:

  • daisy_field
  • daisy_patch
  • daisy_petal
  • daisy_pod

With these files a number of additional initialization, and configuration is done by the library.

This allows a user to jump right in without needing a complete understanding of what's going on under the hood.

Contributing

Here are some ways that you can get involved:

  • Proof read the documentation and suggest improvements
  • Test existing functionality and make issues
  • Add new functionality to the library. See issues labeled "feature"
  • Fix problems with existing codebase. See issues labeled "bug" and/or "polish"

Before working on code, please check out our Contribution Guidelines and Style Guide.

Support

Here are some ways to get support and connect with other users and developers:

License

libDaisy is licensed with the permissive MIT open source license.

This allows for modification and reuse in both commercial and personal projects. It does not provide a warranty of any kind.

For the full license, read the LICENSE file in the root directory.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].