All Projects → soundshed → soundshed-app

soundshed / soundshed-app

Licence: other
Desktop app to browse and manage guitar amp tones. Control your bluetooth amp, jam to video backing tracks.

Programming Languages

typescript
32286 projects
javascript
184084 projects - #8 most used programming language
CSS
56736 projects
HTML
75241 projects

Projects that are alternatives of or similar to soundshed-app

open-watch
An open-source handmade smartwatch. All of the codes, PCBs and schematics are available. ⌚
Stars: ✭ 35 (-2.78%)
Mutual labels:  bluetooth
pyrinas-ble-client
nRF52 SDK(v16) based OS for use with Particle Xenon and other nRF52840 boards.
Stars: ✭ 15 (-58.33%)
Mutual labels:  bluetooth
mijia-homie
A Homie MQTT bridge for the Xiaomi Mijia 2 hygrometer-thermometer. This repo also serves as the monorepo for a handful of helper crates related to Homie and Bluetooth.
Stars: ✭ 40 (+11.11%)
Mutual labels:  bluetooth
hcitool
Bluetooth Host Controller Interface Command Line Tool for for sending HCI commands on macOS and Linux
Stars: ✭ 72 (+100%)
Mutual labels:  bluetooth
BluetoothOperator
实现Android手机蓝牙设备的扫描、过滤、连接,通过蓝牙串口功能向设备发送指定的信息。
Stars: ✭ 14 (-61.11%)
Mutual labels:  bluetooth
alfred-wf-bluetooth-manager
Connect and disconnect a bluetooth device easily
Stars: ✭ 58 (+61.11%)
Mutual labels:  bluetooth
pi-stomp
pi-stomp is a DIY high definition, multi-effects stompbox platform for guitar, bass and keyboards
Stars: ✭ 42 (+16.67%)
Mutual labels:  guitar
microbit-ble
Read data from micro:bit using Bluetooth from Linux
Stars: ✭ 40 (+11.11%)
Mutual labels:  bluetooth
Bluetooth-ble-beamer-and-scanner-for-tracing-corona-virus-infected-individual
Bluetooth ble beacon beamer and scanner for tracing corona virus infected person similar to Trace Together app
Stars: ✭ 26 (-27.78%)
Mutual labels:  bluetooth
IoT-Developer-Boot-Camp
Quickly get started with Silicon Labs IoT product.
Stars: ✭ 104 (+188.89%)
Mutual labels:  bluetooth
NeewerLite
NeewerLite is an un-official Neewer LED light control app for macOS.
Stars: ✭ 54 (+50%)
Mutual labels:  bluetooth
fretonator
The ultimate interactive free guitar theory tool.
Stars: ✭ 42 (+16.67%)
Mutual labels:  guitar
BOSCH-GLM-rangefinder
Python script to remote control a BOSCH GLM 100C rangefinder via its Bluetooth serial interface
Stars: ✭ 41 (+13.89%)
Mutual labels:  bluetooth
pycalima
Python interface for Pax Calima Fan via Bluetooth LE
Stars: ✭ 34 (-5.56%)
Mutual labels:  bluetooth
blue-pair
Simple Bluetooth Android app for handling device discovery and pairing.
Stars: ✭ 52 (+44.44%)
Mutual labels:  bluetooth
bluetooth-serial-port
multi-platform bluetooth serial port library for C++
Stars: ✭ 59 (+63.89%)
Mutual labels:  bluetooth
guitar-tabs-to-MIDI
A program that converts Guitar Tabs into MIDI files.
Stars: ✭ 38 (+5.56%)
Mutual labels:  guitar
awesome-bluetooth-security
List of Bluetooth BR/EDR/LE security resources
Stars: ✭ 220 (+511.11%)
Mutual labels:  bluetooth
Blazm.Bluetooth
No description or website provided.
Stars: ✭ 58 (+61.11%)
Mutual labels:  bluetooth
MarzWorkbench
FreeCAD Workbench for guitar design
Stars: ✭ 40 (+11.11%)
Mutual labels:  guitar

Soundshed

Desktop and Web UI which can be used to:

  • manage tone library and browse tone communities
  • connect to supported amp via bluetooth, manage basic settings and set presets.
  • browse and favourite video backing tracks

Download from https://soundshed.com or check out the web app version.

Windows, macOS and Linux. 64-but OS and Bluetooth (BLE) connectivity required.

Supported amps:

Known Issues

  • Device controls (summary level - hidden) not hooked up
  • More keyword search/paging etc required
  • Amp sometimes returns garbled info
  • Invalid settings may crash amp, requiring amp to be switched off and on again.

Roadmap

Possible future features include:

  • More reliable amp communication
  • UI refinements
  • Code refactoring and tidy
  • More tone community features
  • Lessons (community supplied links to video lessons etc)
  • artist and song metadata for correct cross reference of tones, backing tracks and lessons.

Event Mapping

Input event from keyboard or midi can be mapped to either a preset slot (e.g. channels 1-4) or

Default FX

  • default slot settings (fx type, parameter settings) can be applied, e.g a default Noise Gate configuration which can either be applied all the time or on demand.

Build

app build

  • Prerequisites: Node JS 14.x or higher, npm 6.14 or higher. Windows, macOS or Linux

  • Building the bluetooth-serial-port node module has various requirements depending on the platform you are developing for: https://github.com/tinyprinter/node-bluetooth-serial-port - we are using a custom fork with minor fixes.

  • VS Code is the recommended editor

  • If working on the Lessons portion, you will need to add your youtube-data-api key to the /src/env.ts file. More information available here. Please do not submit this file in pull requests.

  • Clone this repository

  • run npm install on the repo path

Run Web Version

  • edit platformUtils.ts to include platformUtils.web.ts, edit env.ts to be web mode
  • Run npm run watch-web in one terminal to continuously rebuild the UI code or npm run build-web to just build once. Note that there is a build for the app UI and a build for the electron main process, some of which use the same files (types etc).
  • Run http-server build to start local web server on http://localhost:8080/
  • Example with SSL enabled: http-server build --ssl -K C:/Work/Misc/ssl/localhost-key.pem -C C:/Work/Misc/ssl/localhost.pem

Run Electron Version

  • edit platformUtils.ts to include platformUtils.electron.ts, edit env.ts not to be web mode
  • Run npm run watch-electron in one terminal to continuously rebuild the UI code or npm run build-electron to just build once. Note that there is a build for the app UI and a build for the electron main process, some of which use the same files (types etc).
  • Run npm run start-electron to launch the UI

The final installable app is packaged using electron-forge: npm run make

Toggle between web and electron mode

  • edit env.ts, set IsWebMode true/false
  • edit platformUtils.ts, import required platform

Release Process

  • Electron
    • ensure electron config selected
    • ensure webpack.electron.config is set to production
    • Increment version in package.json, run installer Github Action, run Release Github Action, Edit release notes.
  • Web
    • ensure web config selected
    • ensure webpack.web.config is set to production
    • Run build and deploy files

Architecture

The app is built using TypeScript. For the electron version, electron/node is the host process, talking to the electron renderer and back again (the standard electron way of working). For the web app version bluetooth is Web Bluetooth (BLE) instead of the bluetooth RFCOMM used by the electron version.

The UI is React (TypeScript variant) with bootstrap for UI css. The Pullstate library is use for app state management and a couple of view model classes exist to centralise common points of interaction with APIs, the devices and state.

In the electron version, communication with the device works by connection/handling serial bluetooth comms events in the main process (electron/node), this then sends an IPC message to the renderer which has listeners in the appViewModel, these then pass relevant data to the react UI. Actions in the UI invoke appViewModel methods which in turn fire IPC messages back to the main process in order to perform bluetooth actions.

Original template is loosely based on https://www.sitepen.com/blog/getting-started-with-electron-typescript-react-and-webpack

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