All Projects → kevinresol → React Native Sound Recorder

kevinresol / React Native Sound Recorder

Licence: mit
Simplest Sound Recorder for React Native

Projects that are alternatives of or similar to React Native Sound Recorder

Webmidikit
Simplest MIDI Swift library
Stars: ✭ 100 (-2.91%)
Mutual labels:  audio, sound
Audiosegment
Wrapper for pydub AudioSegment objects
Stars: ✭ 63 (-38.83%)
Mutual labels:  audio, sound
Peep
Easy Sound Generator 🐥
Stars: ✭ 59 (-42.72%)
Mutual labels:  audio, sound
Pandoraplayer
🅿️ PandoraPlayer is a lightweight music player for iOS, based on AudioKit and completely written in Swift.
Stars: ✭ 1,037 (+906.8%)
Mutual labels:  audio, sound
Minibae
The platform-neutral Beatnik Audio Engine, Mini Edition (miniBAE) is an exceptionally mature, well-rounded, and reliable computer music and sound system specially customized for small-footprint and embedded applications.
Stars: ✭ 82 (-20.39%)
Mutual labels:  audio, sound
Soloud
Free, easy, portable audio engine for games
Stars: ✭ 1,048 (+917.48%)
Mutual labels:  audio, sound
Javascript Media Recorder
WebRTC video recorder library for Javascript
Stars: ✭ 61 (-40.78%)
Mutual labels:  recorder, audio
Minimumaudioplugin
Minimum implementation of a native audio plugin for Unity
Stars: ✭ 33 (-67.96%)
Mutual labels:  audio, sound
Figaro
Real-time voice-changer for voice-chat, etc. Will support many different voice-filters and features in the future. 🎵
Stars: ✭ 80 (-22.33%)
Mutual labels:  audio, sound
Soundable
Soundable allows you to play sounds, single and in sequence, in a very easy way
Stars: ✭ 78 (-24.27%)
Mutual labels:  audio, sound
Simpletones.js
The goal of simpleTones.js is to provide every JavaScript developer with a lightweight solution for creating custom sounds in their web applications. This documentation has been written in hopes that the least experienced developer can read, understand and go on to do great things. You can check out several examples at this link:
Stars: ✭ 45 (-56.31%)
Mutual labels:  audio, sound
Pizzicato
Library to simplify the way you create and manipulate sounds with the Web Audio API.
Stars: ✭ 1,296 (+1158.25%)
Mutual labels:  audio, sound
Swiftysound
SwiftySound is a simple library that lets you play sounds with a single line of code.
Stars: ✭ 995 (+866.02%)
Mutual labels:  audio, sound
Chime
🎵 Python sound notifications made easy
Stars: ✭ 56 (-45.63%)
Mutual labels:  audio, sound
Sound
core sound data structures and interfaces
Stars: ✭ 37 (-64.08%)
Mutual labels:  audio, sound
React Mp3 Recorder
Microphone recorder for React that captures mp3 audio 🎵
Stars: ✭ 59 (-42.72%)
Mutual labels:  recorder, audio
Blipkit
C library for creating the beautiful sound of old sound chips
Stars: ✭ 23 (-77.67%)
Mutual labels:  audio, sound
Chipkizi
a recording app for up and coming artists
Stars: ✭ 26 (-74.76%)
Mutual labels:  recorder, audio
Soundswitch
C# application to switch default playing device. Download: https://soundswitch.aaflalo.me/
Stars: ✭ 1,190 (+1055.34%)
Mutual labels:  audio, sound
Audiokitsynthone
AudioKit Synth One: Open-Source iOS Synthesizer App
Stars: ✭ 1,258 (+1121.36%)
Mutual labels:  audio, sound

react-native-sound-recorder

No-hassle Sound Recorder for React Native.

There are existing libraries out in the wild

Why reinvent the wheel?

At the time of writing, the above libaries are either inconsistent or incomplete.

For example, the same startRecording call returns a Promise on Android but null in iOS.

Or stopRecording doesn't give a promise/callback at all. So forcing user to do silly things like "wait for 1 second" in order to make sure file is well written to disk.

Getting started

$ npm install react-native-sound-recorder --save

or

$ yarn add react-native-sound-recorder

if RN >= 0.60.0

Autolink should work

if RN < 0.60.0

Mostly automatic installation

$ react-native link react-native-sound-recorder

Manual installation

iOS

  1. In XCode, in the project navigator, right click LibrariesAdd Files to [your project's name]
  2. Go to node_modulesreact-native-sound-recorder and add RNSoundRecorder.xcodeproj
  3. In XCode, in the project navigator, select your project. Add libRNSoundRecorder.a to your project's Build PhasesLink Binary With Libraries
  4. Run your project (Cmd+R)<

Android

  1. Open up android/app/src/main/java/[...]/MainActivity.java
  • Add import com.kevinresol.react_native_sound_recorder.RNSoundRecorderPackage; to the imports at the top of the file
  • Add new RNSoundRecorderPackage() to the list returned by the getPackages() method
  1. Append the following lines to android/settings.gradle:
    include ':react-native-sound-recorder'
    project(':react-native-sound-recorder').projectDir = new File(rootProject.projectDir, 	'../node_modules/react-native-sound-recorder/android')
    
  2. Insert the following lines inside the dependencies block in android/app/build.gradle:
      compile project(':react-native-sound-recorder')
    

Permissions

iOS: Add the following entry to Info.plist:

<key>NSMicrophoneUsageDescription</key>
<string>This sample uses the microphone to record your speech and convert it to text.</string>

Android: Add the following entry to AndroidManifest.xml:

<uses-permission android:name="android.permission.RECORD_AUDIO" />

Usage

import SoundRecorder from 'react-native-sound-recorder';

// Note: You may need to request runtime permission(s) first.

SoundRecorder.start(SoundRecorder.PATH_CACHE + '/test.mp4')
	.then(function() {
		console.log('started recording');
	});

SoundRecorder.stop()
	.then(function(result) {
		console.log('stopped recording, audio file saved at: ' + result.path);
	});
	

API

function start(path:String, ?options:Object):Promise<Void>;
function stop():Promise<{path:String, duration:Int}>;
function pause():Promise<Void>;
function resume():Promise<Void>;

Options:

iOS:

  • quality:Enum (Check out the constants prefixed with "QUALITY_")
  • format:Enum (Check out the constants prefixed with "FORMAT_")
  • bitRate:Int, default: not set (will fail on iPhone5 if set)
  • channels:Int (1 or 2), default: 1
  • sampleRate:Int default: 16000

Android:

  • source:Enum (Check out the constants prefixed with "SOURCE_")
  • format:Enum (Check out the constants prefixed with "FORMAT_")
  • encoder:Enum (Check out the constants prefixed with "ENCODER_")
  • channels:Int (1 or 2), default: 1
  • encodingBitRate:Int, default: 64000
  • sampleRate:Int default: 16000

Note that the above enums are platform-specific.

Path Constants

  • PATH_CACHE
  • PATH_DOCUMENT
  • PATH_LIBRARY (N/A on Android)
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].