Giter VIP home page Giter VIP logo

konduktiva's Introduction

Konduktiva

Using-Konduktiva-With-MIDI initial author: Renick Bell ([email protected])

initial creation date: Wed Jun 28 10:08:48 AM CST 2023

contributors: Yiler Huang ([email protected]);Steve Wang ([email protected])

license: GPL 3.0

This code allows Konduktiva to work with music synthesizers that use MIDI.

This document works as both a documentation and a tutorial about how to use the code and how to install the code. These sections follow in this order:

  1. The first part covers the installation process.
  2. Next, it covers the basics of just playing some sounds.
  3. Next, a part about (controlling music)[#controlling-musc], then how to put those configurations into the musical environment and about assigning players for music synthesizer sessions
  4. Finally, there is a section that might help if installation or playing music does not work and some configuration specifics about different operating systems.

Installation:

  1. Install Nodejs. If npm does not automatically get installed with Nodejs, install npm.

    2.1. Check if nodejs is installed by running this command in the terminal:

    node -v
    

    2.2. Check if npm is installed by running this command in the terminal:

    npm -v
    

    2.3. You can close the terminals you have opened prior to this step.

  2. Install Konduktiva by using NPM:

    npm i konduktiva
    
  3. Install a Digital Audio Workstation. Ardour is recommended

Setting Up Other related software (MIDI routing in device)

Here

Setting Up An Editor (VIM + TMUX)

Here

Tutorials:

Here

OS Specific Tips:

MacOs:

Launching surge:

When installing Surge music synthesizer, you get Surge XT and Surge ET Effects. Open this application called Hosting AU and choose surge as the instrument in the application. Surge will be launched automatically by Hosting AU

Debugging:

Issue 1:

Function updateMidiOutputList might not work correctly for your midi configuration. That function is in midi.js so you might want to edit it to work properly for you.

To edit this function run this code in nodejs: easymidi.getOutputs()

This will give you all the outputs easymidi detects and you can edit the function so that it works properly for you.

Issue 2:

MIDI configuration. Configure your system so that easymidi can detect midi outputs.

This is OS specific.

konduktiva's People

Contributors

mrname5 avatar renickbell avatar yiler7274 avatar

Stargazers

Wasawat Somno avatar Karnpapon Boonput avatar

Watchers

 avatar

Forkers

mrname5

konduktiva's Issues

example in jsdoc for increaseDensity is wrong

The example is this:

console.log(increaseDensity(0, 10, [0, 1, 2, 3, 5])) //[ 0, 1, 2, 3, 50, -45 ]

The problem is that the minVal should never be 0, and the ratio should always be greater than 0 and less than 1. Probably the function should check for this and return an error if the values are outside these specifications. The input array also should not contain 0s, only positive floating point numbers.

The example should be fixed as well. This would be better.

increaseDensity(0.25, 0.5, [1, 1, 2, 3, 5])

densityStack is "blowing up", Uncaught RangeError: Maximum call stack size exceeded

These revised versions fix it (as well as removing some console logging from previous debugging):

function decreaseDensity (inputArray) {
    if (inputArray.length == 1) {return inputArray}
    else if (inputArray.length ==2) {
        return [inputArray[0] + inputArray[1]]
    }
    else {
        let target = (K.randomRangeInt(0,inputArray.length - 2));
        let outputA = inputArray.slice(0,target);
        let outputB = [inputArray[target] + inputArray[target+1]].concat(inputArray.slice(target+2))
        return outputA.concat(outputB)
    }
}

function recursiveDecreaseDensity (stack) {
   let targetArray = stack[(stack.length -1)];
   if (targetArray.length > 1) {
       return recursiveDecreaseDensity(stack.concat([decreaseDensity(stack[stack.length -1])]))
   }
    return stack
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.