All Projects → cannc4 → Siren

cannc4 / Siren

Licence: gpl-3.0
Algorithmic Composition Interface

Programming Languages

javascript
184084 projects - #8 most used programming language
haskell
3896 projects
javascipt
17 projects

Projects that are alternatives of or similar to Siren

tracker-mode
a music tracker/sequencer for emacs
Stars: ✭ 25 (-81.75%)
Mutual labels:  tracker, supercollider
Flok
Web-based P2P collaborative editor for live coding sounds and images
Stars: ✭ 119 (-13.14%)
Mutual labels:  supercollider
Foxtracker
Facial Head Pose Tracker for Gaming
Stars: ✭ 78 (-43.07%)
Mutual labels:  tracker
Snail
基于Java、JavaFX开发的下载工具,支持下载协议:BT(BitTorrent、磁力链接、种子文件)、HLS(M3U8)、FTP、HTTP。人家才不要你的⭐⭐呢,哼
Stars: ✭ 102 (-25.55%)
Mutual labels:  tracker
Bug Tracker Pern Ts
Bug Tracking app with project members support. Made with PERN stack + TypeScript.
Stars: ✭ 79 (-42.34%)
Mutual labels:  tracker
Prototracker
Prototracker
Stars: ✭ 110 (-19.71%)
Mutual labels:  tracker
Ixilang
A live coding language. An extension to SuperCollider, currently Cocoa only.
Stars: ✭ 76 (-44.53%)
Mutual labels:  supercollider
Location Tracker Background
Periodically tracking user's location in the background
Stars: ✭ 126 (-8.03%)
Mutual labels:  tracker
Pygoturn
PyTorch implementation of GOTURN object tracker: Learning to Track at 100 FPS with Deep Regression Networks (ECCV 2016)
Stars: ✭ 116 (-15.33%)
Mutual labels:  tracker
Phone Tracker
Phone tracker is an Android library to gather environment signals, like cell towers, wifi access points and gps locations.
Stars: ✭ 102 (-25.55%)
Mutual labels:  tracker
Manga Tracker
A cross-site manga-tracker.
Stars: ✭ 93 (-32.12%)
Mutual labels:  tracker
Atom Supercollider
SuperCollider development environment for Atom.io
Stars: ✭ 85 (-37.96%)
Mutual labels:  supercollider
U360gts
The Universal 360º Continous Rotation Tracker System for Drones (UAVs, RPAs and FPV).
Stars: ✭ 113 (-17.52%)
Mutual labels:  tracker
Lnx studio
Stars: ✭ 81 (-40.88%)
Mutual labels:  supercollider
Deep sort yolov3
Real-time Multi-person tracker using YOLO v3 and deep_sort with tensorflow
Stars: ✭ 1,590 (+1060.58%)
Mutual labels:  tracker
Baralga
Baralga open-source time tracker for the desktop.
Stars: ✭ 77 (-43.8%)
Mutual labels:  tracker
Unit3d Community Edition
🚀 A Next Generation Private Torrent Tracker (Community Edition)
Stars: ✭ 1,305 (+852.55%)
Mutual labels:  tracker
Ttgo T Beam Car Tracker
TTGO-T-Beam Arduino Car Tracker - ESP32 + LoRa + GPS + GSM (optional)
Stars: ✭ 106 (-22.63%)
Mutual labels:  tracker
Color Tracker
Color tracking with OpenCV
Stars: ✭ 128 (-6.57%)
Mutual labels:  tracker
Sclorksynths
Collection of SuperCollider SynthDefs (synth definitions) for use with Patterns
Stars: ✭ 121 (-11.68%)
Mutual labels:  supercollider

Siren

Siren, is a tracker interface that embodies abstractions where programming is realized as the medium for pattern sequencing in a modular fashion. It is based on a hierarchical structure that consists of scenes and channels. Separate channels have independent patterns; a complete song consists of a master list of repeated patterns.

Supported programming languages :

  • SuperCollider
  • Haskell/TidalCycles

Note: This is a beta release (*v0.6), and it has not been tested comprehensively. If you come across a bug, please do submit an issue, and/or create a pull request of you feel like participating in its development.

Download

You can get Siren either by downloading repository as a ZIP file at https://github.com/cannc4/siren, or by using the command line to clone the repository.

git clone https://github.com/cannc4/Siren.git

Build

Dependencies:

Make sure the latest versions of following software are installed for your system user

After setting up Haskell, run following command :

cabal install aeson

Then follow these lines to install package dependencies:

cd path/to/downloaded/repo
npm i
npm run siren
npm start

Setup

In order for Siren to find the local dependencies, you need to edit full paths in the Config Paths modules in the software according to your file system formatting, and save the file (Alternatively, this can be done directly in ./server/save/paths.json).

Copy paste your startup code to ./config/scd-start-default.scd and ./config/tidal-boot-default.hs, and make sure you don't modify the required code for Siren

Note: Make sure SuperCollider is either idle or closed before moving on.

Now you can start the server and interface separately:

npm run siren
npm start

This will start the app in browser at localhost:3000

You can also run the electron app with:

npm run sirenc

alternatively on MacOS:

./siren.sh

and on Windows, double click on:

siren.bat

Tested with Chrome on Windows 10 and MacOS High Sierra

New Features

Conditional pattern triggers:

let (trigLookup,trigLookup_p)  = pS "trigLookup" (Nothing)
    (trigEvery,trigEvery_p)  = pF "trigEvery" (Nothing)
    (trigSound,trigSound_p)  = pS "trigSound" (Nothing) 

d1 $ note "0 1" #s "synth" #trigLookup "0" #trigEvery "7" #trigSound (pure "d2 $ note "c3" # s \"superpwm\"")

Modules

You can toggle visibility of every module using the right-click context menu.

1. Scenes

Scenes are the core of Siren and a scene serves as a framework to the composition. Each scene comprises of unique channels, global modifiers and patterns.

2. Grid

Channels

Different channel types can be added with right mouse click. Once a channel is added to the sequencer, the parameters and layout can be adjusted dynamically. Each cell is a textbox allowing any type of text input. Patterns can be looked up from the dictionary with their names and parameters. When a cell is active, it triggers the pattern with appropriate name and applies parameters in an ordered fashion. See parameters for various types.

Please note that Tidal channel names has to be defined appropriately in tidal-boot-default.hs or compiled using console.

Cells

The cells of the channels serve as a canvas for pattern names and pattern parameters. Pressing Enter on the cells selects the cell. Once in selection mode, you can navigate the cells with arrow keys. The selected cell can be compiled with Alt + Enter. Multiple cells can be selected using the Shift + arrow keys which then can be copied and pasted to other parts of the grid.

Cell Parameters

Siren allows patterns to be parameterized and can be called with different parameters from different cells in the channel.

Random Parameters

|x,y| returns a random value within the x and y

3. Patterns

Disclaimer: Please omit the channel number and dollar sign on Tidal commands (instead of d1 $ sound "bd" just write sound "bd")

Tidal patterns are stored in the dictionary on the right hand side of the interface. This dictionary is unique for each scene and interacts with the sequencer in terms of parameters and calls.

Temporal parameter

t represents the temporal parameter for each timer and it can be used in expressions to create complex values, especially with math expressions.

Mathematical expressions

Mathematical expressions can be used in the patterns in the dictionary, parser evaluates the expressions when enclosed with & symbol.

Value Parameters

Any character sequence inside Siren pattern can be parameterized by surrounding desired spot with ` symbol (like surrounding a phrase for Markdown code block). Using this feature, you can not only pass well-tuned values dynamically, but also pass anything you want.

n `x` # s `y` 

4. Pattern History

This module stores the successfully compiled Tidal patterns to keep track of the running sequences.

5. Console

This module serves as a CLI (Command-Line-Interface) to Haskell and SuperCollider.

6. Globals

There are two sections dedicated to appending and prepending to the running code. ctrl+enter activates the code and sections can be recalled by creating presets. Pressing Rec button saves the active modifiers. shift+ click clears the desired slot and alt+ click overwrites it. These modifiers are applied to the patterns shown in the pattern history section (i.e. active patterns). Channels that you want to target can also be specified using the channel section in the submenu. Writing 1 2 will make the modifiers only affect the first two channels, 0 is a special case and means modifiers will be applied to all channels in the scene. Last row is the global parameter that can be dynamically added to the system.

7. Config Paths

In this module, it’s possible to set various settings of Siren such as startup config.

8. Debug Console

This module serves as a debug console for GHC.

9. Pattern Roll

(Under Development) Inspired by the piano-roll in traditional DAWs, operates as the playback visualization tool. It fetches the future trigger values from Tidal and places them on top of the current playback information. To be able to use this tool, pattern names needs to be written with x prefix instead of the usual d such as x1 instead of d1.

The horizontal axis denotes quantized time bins, and vertical lists the names of unique samples and notes. Default sequence length is 8 seconds and each second is quantized into 12 bins. Both parameters can be edited using the dedicated fields on the interface.

10. Playback

(Under Development) It's possible to record a live coding sessions by using the record button located in the menubar. Patterns get time-stamped according to their compilation time and stored in a JSON file under server/save/ directory. With using the Playback module, it's possible to play the patterns stored in JSON file or automagically create a new scene with them.

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