Giter Site home page Giter Site logo

jatinchowdhury18 / newmixer Goto Github PK

View Code? Open in Web Editor NEW
22.0 5.0 6.0 322.88 MB

A unique and revolutionary audio mixing tool

License: GNU General Public License v2.0

C++ 98.53% Shell 1.01% Inno Setup 0.46%
juce-application audio-processing audio-effect audio-applications

newmixer's Introduction

NewMixer

Build Status Download Latest Github All Releases Codacy Badge

Pic

An audio mixing tool that allows the user to visualize audio sources by their location in space rather than as channels on a mixing board. See a demo video here.

This is part of a class project for Music 256a at Standford University (CCRMA).

Installation

For Users: Download

  • Download the latest release →
  • Windows users can run the installer to set up NewMixer
  • Mac users can download and run NewMixer.app (Note that you must change your settings to run programs from unidentified developers)

For Developers: Clone repository

# Clone the repository
$ git clone --recursive https://github.com/jatinchowdhury18/NewMixer.git

# Enter repository
$ cd NewMixer

# Initialize JUCE submodule
$ git submodule update --init --recursive

Instructions for building from scratch can be found here.

Getting Started: Mixing

Creating and opening sessions

  • To create a new session, right-click and select "New Session"
  • To open an existing session, right-click and select "Open Session"
    • Select a ".chow" file from your computer to open

Add tracks:

  • Right-click and select "New Track"
  • Select wav audio files from your file explorer
  • N.B: All files in a session must be exactly the same length

Mixing Tracks

  • Use the space bar to play/pause (All tracks are muted initially)
  • Each circle represents a track, hover your mouse to see the track name, click to select
    • Move the track around the virtual space by dragging or using the arrow keys
    • Make the track louder/softer by using "ALT + click" and drag
    • Press "m" to mute/unmute, "s" to solo/unsolo
    • For more actions and keyboard shortcuts, right-click the track

Automation

  • To record automation for a track, press "a"
  • When a track is armed, a pink circle will appear around it, when it starts recording automation, the circle will turn red
  • Automation will automatically stop recording at the end of the song, or when the song is paused
  • To delete recorded automation, press "SHIFT + DEL"

Saving sessions

  • To save your session, right-click and select "Save Session"
  • If this is your first time saving your session, you will be asked to name your session and choose a save location.
    • The files for your tracks will be copied into a "Stems" folder

Developer Instructions

Building

  • Navigate to "JUCE/extras/Projucer/Builds/"
  • Build the Projucer using XCode (Mac), Visual Studio (Windows), or Makefile (Linux)
  • From the Projucer, open NewMixer.jucer
  • From the "File" menu, open "Global Paths..."
    • Set "Path To JUCE" to "...\NewMixer\JUCE"
    • Set "JUCE Modules" to "...\NewMixer\JUCE\modules"
    • Close "Global Paths" window
  • Select "Save and open in IDE"
  • Build NewMixer

Rules for collaboration

  • Clone repository
  • Create local develop branch
  • After pushing changes to your develop branch, make a pull request against the remote develop branch
  • Once your changes have been reviewed, and all checks are passing, your code can be merged into master

Thank you and enjoy!

newmixer's People

Contributors

jatinchowdhury18 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

newmixer's Issues

any update?

Hi,
I can't load this project on JUCE :) Do you think that it's possible to check this project again?
Thank you,
Jean

Save device settings

Hi,

NewMixer does not keep device settings stored in it's Settings.xml. So its needed to reconfigure at startup each time .

Compilation on Linux.

Hi,

I could compile NewMixer under Linux. But it has to do some changes:

  1. Fix SIMD call:

In file included from /home/kv/src/audio/NewMixer/JUCE/modules/juce_dsp/juce_dsp.h:245,
from ../../JuceLibraryCode/JuceHeader.h:25,
from ../../Source/Processors/ProcessorBase.h:4,
from ../../Source/Processors/TrackBase.h:4,
from ../../Source/Processors/TrackProcessor.h:4,
from ../../Source/Processors/TrackProcessor.cpp:1:
/home/kv/src/audio/NewMixer/JUCE/modules/juce_dsp/containers/juce_SIMDRegister.h: In instantiation of ‘struct juce::dsp::SIMDRegister’:
../../Source/Processors/TrackProcessor.cpp:82:97: required from here
/home/kv/src/audio/NewMixer/JUCE/modules/juce_dsp/containers/juce_SIMDRegister.h:86:11: error: invalid use of incomplete type ‘struct juce::dsp::SIMDNativeOps’
86 | using vSIMDType = typename NativeOps::vSIMDType;

by commenting template in juce_SIMDRegister_Impl.h

> // Extend some common used global functions to SIMDRegister types
> //template <typename Type>
> //inline dsp::SIMDRegister<Type> JUCE_VECTOR_CALLTYPE jmin (dsp::SIMDRegister<Type> a, dsp::SIMDRegister<Type> b) { return dsp::SIMDRegister<Type>::min (a, b); } 
> //template <typename Type>
> //inline dsp::SIMDRegister<Type> JUCE_VECTOR_CALLTYPE jmax (dsp::SIMDRegister<Type> a, dsp::SIMDRegister<Type> b) { return dsp::SIMDRegister<Type>::max (a, b); }

https://forum.juce.com/t/dsp-module-breaks-compilation-on-linux/27346

  1. call expf and logf from global (it's not in std in gcc) in TrackMeter.cpp:
> //    float rmsFactor = 1.0f + std::expf (std::logf (track->getProcessor()->getRMSLevel()) / skewFactor);
> float rmsFactor = 1.0f + expf (logf (track->getProcessor()->getRMSLevel()) / skewFactor);
  1. Comment out in Track.h:
    // void mouseDoubleClick (const MouseEvent& e) override;

because it gives linking error.

Forking/"fixing"/pull requesting is not problem. But I'm not programmer yet, so I prefer You decide how to resolves these issues better.

Processing I/O

Setup processing chain within track component, that is then connected by audio graph master component

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.