Intune
Intune
Suyash Singh
Posted by Suyash Singh
19 days ago on July 13, 2024
Photo by on Unsplash

Motivation for building Intune

The motivation for creating Intune comes from my love for learning music as a hobby. Since I often need to tune my instruments, I found existing free tuning apps too cluttered with ads. I wanted to build something simple and ad-free for myself and other musicians like me. Intune aims to be a straightforward solution for hassle-free instrument tuning.

I anticipated needing to perform complex calculations quickly, which led me to choose Rust for its high-speed capabilities. With the technical aspects secured, the next challenge was accessibility. I opted for React Native to develop both Android and iOS applications powered with React Native Animations, transforming this endeavor from learning an instrument into crafting a completely new user experience.

Screens

Features

Intune provides a chromatic musical tuner which can be used to tune any musical instrument, even drums!

Tech Stack

  • React Native
  • React Native Animations
  • Rust
  • FFT
  • Oboe
  • Android
  • Kotlin

App architecture

High Level

High Level Architecture for Intune

Rust layer

High Level Architecture for FFT Calculation

Frontend in React Native

React Native serves as the frontend framework, managing the user interface and application logic.

Rust for Audio Processing

Rust is integrated as a library for efficient audio processing on Android, utilizing Oboe for real-time audio management and FFT for converting time domain data to frequency domain.

Communication via Native Modules

Native modules act as a bridge between React Native’s JavaScript and the Rust library, facilitating seamless communication and function invocation.

Event Loop and Data Flow

Kotlin’s event loop on Android polls data processed by Rust, such as frequency calculations from FFT, and sends it to React Native’s JavaScript engine via an event emitter stream.

Benefits of the Approach

This architecture combines the performance benefits of Rust with the cross-platform capabilities of React Native, ensuring efficient audio processing and a unified development environment for Android applications.

Further Documentation

I have expanded further in my blog posts on essential topics such as integrating Rust code into React Native Android applications, performing Fast Fourier Transform (FFT) using Rust for advanced audio processing capabilities, and setting up Oboe in conjunction with Rust for optimizing Android React Native applications. These articles delve into detailed tutorials and insights aimed at enhancing developers’ understanding and proficiency in leveraging Rust’s efficiency and performance benefits within the React Native ecosystem, particularly in the realm of audio processing and native module integration.