All Projects → libcala → cala

libcala / cala

Licence: Apache-2.0 and 2 other licenses found Licenses found Apache-2.0 LICENSE_APACHE_2_0.txt BSL-1.0 LICENSE_BOOST_1_0.txt MIT LICENSE_MIT.txt
Cross-platform system interface for hardware IO

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to cala

Bluetooth-Speaker
MouDio: a compact and portable Bluetooth speaker with high-quality components for powerful, clear sound. Moudio is built using four PCBs and laser-cut acrylic grills with 3D printed parts, and it can be easily assembled using the provided instructions.
Stars: ✭ 27 (-41.3%)
Mutual labels:  hardware, bluetooth, speaker
Modiy
Modiy is an open-source hardware interface for modular synthesis.
Stars: ✭ 21 (-54.35%)
Mutual labels:  hardware, sound
daydream-node
Quick Node.js module to connect to the Daydream controller and receive all the data
Stars: ✭ 17 (-63.04%)
Mutual labels:  hardware, bluetooth
Daisysp
A Powerful, Open Source DSP Library in C++
Stars: ✭ 291 (+532.61%)
Mutual labels:  hardware, sound
openEMSstim
openEMSstim: open-hardware module to adjust the intensity of EMS/TENS stimulators.
Stars: ✭ 90 (+95.65%)
Mutual labels:  hardware, bluetooth
gobot
Golang framework for robotics, drones, and the Internet of Things (IoT)
Stars: ✭ 7,869 (+17006.52%)
Mutual labels:  hardware, bluetooth
Blynk Library
Blynk library for embedded hardware. Works with Arduino, ESP8266, Raspberry Pi, Intel Edison/Galileo, LinkIt ONE, Particle Core/Photon, Energia, ARM mbed, etc.
Stars: ✭ 3,305 (+7084.78%)
Mutual labels:  hardware, bluetooth
Salamandra
Salamandra is a tool to find spy microphones that use radio freq to transmit. It uses SDR.
Stars: ✭ 657 (+1328.26%)
Mutual labels:  microphone, sound
Bluesmirf
RN-41/42 bluetooth module breakout boards, available from SparkFun Electronics
Stars: ✭ 9 (-80.43%)
Mutual labels:  hardware, bluetooth
Plus
Otto DIY+ ("Otto DIY with steroids" + Bluetooth + APP + switch + sensors + strength +...
Stars: ✭ 100 (+117.39%)
Mutual labels:  hardware, bluetooth
diy-synths
List of open-source synths 🎹
Stars: ✭ 56 (+21.74%)
Mutual labels:  hardware, sound
SmartSpin2k
Transform your spin bike into a Smart Trainer!
Stars: ✭ 88 (+91.3%)
Mutual labels:  hardware, bluetooth
Wad
Web Audio DAW. Use the Web Audio API for dynamic sound synthesis. It's like jQuery for your ears.
Stars: ✭ 1,540 (+3247.83%)
Mutual labels:  microphone, sound
libDaisy
Hardware Library for the Daisy Audio Platform
Stars: ✭ 164 (+256.52%)
Mutual labels:  hardware, sound
Figaro
Real-time voice-changer for voice-chat, etc. Will support many different voice-filters and features in the future. 🎵
Stars: ✭ 80 (+73.91%)
Mutual labels:  microphone, sound
Ubertooth
Software, firmware and hardware designs for Ubertooth
Stars: ✭ 1,551 (+3271.74%)
Mutual labels:  hardware, bluetooth
morse-pro
Library for manipulating Morse code text and sound. Understands prosigns and Farnsworth speed. Can create WAV files and analyse input from the microphone or audio files.
Stars: ✭ 85 (+84.78%)
Mutual labels:  microphone, sound
Spectro
🎶 Real-time audio spectrogram generator for the web
Stars: ✭ 383 (+732.61%)
Mutual labels:  microphone, sound
Node Escpos
🖨️ ESC/POS Printer driver for node
Stars: ✭ 752 (+1534.78%)
Mutual labels:  hardware, bluetooth
spc-player
SNES music player in your browser with original hardware and Arduino.
Stars: ✭ 37 (-19.57%)
Mutual labels:  hardware, sound

Cala

Make portable apps and video games in Rust!

docs.rs crates.io Zulip Chat

About | Source | Changelog | Tutorials | Blog

Are you sad that the standard library's only system interface is the filesystem? This crate is for you! This crate provides a safe abstraction over windowing, audio, accessibility, input, and video. This crate, however, is not intended to support multimedia format parsing - that's developed as a separate crate: Caved.

Cala is intended to be an "oxidized re-implementation" of both Flutter/GTK and SDL/other SDL projects in one library! Flutter is mostly intended for mobile applications, and GTK is just for desktop applications, but what if you want to develop the same app for both? Then you use this crate (a lot of features are still WIP)! Cala additionally targets the web and bare metal systems. Note also that even if you're not trying to make your application / video game extremely portable, you can still use this crate!

You might ask, "Shouldn't apps and video games use separate libararies; Why are they combined?". They usually need do the same thing, and some desktop application depend on SDL, like VLC, and some video games depend on GTK, like Veloren (at least when built on Linux). There's clearly a shared interest; so they should be combined. That said, Cala is extremely modular, and doesn't include any modules at all unless you enable some features. The modules are named exactly the same as the features, so you enable the camera feature to be able to use the camera module.

Naming

The name cala is derived from the fungus known as calafate rust.

Feature Support

Each system interface can be enabled with a feature. Names of features match the module names where the API is located. Just add it to your Cargo.toml:

[dependencies.cala]
version = "0.9"
features = ["log", "speaker"]

Here's a list of all of the targeted platforms and what they support.

  • ✓: supported
  • —: not planned / possible
  • ?: untested
Feature Linux MacOS Windows Web Android
bluetooth
camera
client
database
graphics 9 8
haptic
info
input 7 6
log
microphone 5 4 ?
port
random ?
server
speaker 4 ?
task
timer
usb
when
window 9

Module documentation may include simple tutorials. More in depth tutorials may be found here.

Not Yet Attempted Support, But Planned

  • iOS
  • Fuchsia
  • Redox
  • Nintendo Switch
  • XBox
  • PlayStation
  • BSD variants
  • Others not on this list that you will make a pull request for adding them

License

Licensed under any of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Contributors are always welcome (thank you for being interested!), whether it be a bug report, bug fix, feature request, feature implementation or whatever. Don't be shy about getting involved. I always make time to fix bugs, so usually a patched version of the library will be out a few days after a report. Features requests will not complete as fast. If you have any questions, design critques, or want me to find you something to work on based on your skill level, you can email me at [email protected]. Otherwise, here's a link to the issues on GitHub. Before contributing, check out the contribution guidelines, and, as always, make sure to follow the code of conduct.

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].