Code Monkey home page Code Monkey logo

264-tools's Introduction

264 Tools

A modular kit providing high-level sound playback, processing and performance tools for students of Music 264 at Harvard University.

264 Tools modules

Installation

  1. If you have previously installed a copy of 264 Tools, delete it from your Max Packages directory.

  2. Download the latest release (click ‘Source code’ under Assets)

  3. Uncompress your download to your Max Packages directory.
    You can find this under ~/Documents/Max 8/Packages for Max 8
    You should end up with file paths that look like ~/Documents/Max 8/Packages/264-tools/ALL-THE-FILES-GO-HERE.

  4. Open (or restart) Max.

Alternatively if you prefer using the command line:

# move to your packages directory
cd ~/Documents/Max 8/Packages
# download 264 Tools to your packages directory
git clone https://github.com/mus264/264-tools.git

Getting Started

After you have installed 264 Tools, open Max’s Extras menu to find 264 Tools > 264 Tools Overview for an introduction to the various modules.

For a quick list of all available modules check out 264 Tools > Module Finder in the Extras menu.

Checking for Updates

From Max’s Extras menu, select 264 Tools > Check for Updates. This will let you know if you need to update. (You will need to be connected to the internet for this to work.)

Current Functionality

The toolkit currently includes the following modules, which should be loaded in a bpatcher.

Audio

Sound Files

  • 264.sfplay~ — a simple sound file player
  • 264.sfrecord~ — a monophonic sound file recorder

Processing

  • 264.delay~ — a single, flexible delay line
  • 264.filter~ — a highpass, lowpass or bandpass filter
  • 264.grains~ — a live audio granulation module
  • 264.ringmod~ — modulate a signal with a single frequency oscillator
  • 264.reverb~ — a basic reverb module
  • 264.transpose~ — a pitch shifter with 3 octave range above & below source
  • 264.freeze~ — a spectral audio freezer
  • 264.loop~ — a buffer-based loop recorder and manipulator
  • 264.limit~ — a no-options audio limiter (implementing omx.peaklim~)
  • 264.gate~ — an amplitude gate

Analysis

  • 264.envelope~ — an envelope follower compatible with other modules
  • 264.pitchtrack~ — a fundamental frequency tracker
  • 264.trigger~ — an attack detector

Utility

  • 264.audiotest~ — display audio status & test loudspeakers

Control

  • 264.key-learn — a utility permitting quick linking of keyboard shortcuts
  • 264.midi-learn — a utility permitting quick linking of inputs with a MIDI controller
  • 264.line — a breakpoint function module for line playback
  • 264.tog — a MIDI-ready toggle switch
  • 264.go! — a MIDI-ready button
  • 264.midi-presets — manage mapping presets for your 264.key-learn and 264.midi-learn objects
  • 264.audio-presets — manage presets for parameters across 264 Tools modules
  • 264.fullscreen — toggle a patch to display fullscreen
  • 264.lockstatus — check if a patch is currently locked

Compatibility

The latest release of these modules requires Max 8. Please report bugs under the issues tab above.

If you need to support Max 6 or 7, you can download v0.17.0 or lower.

Acknowledgments

264.grains~ relies on the munger~ granulation external, which has a substantial ancestry including work by Ivica Ico Bukvic, Ji-Sun Kim, Dan Trueman, and R. Luke DuBois, most recently for percolate.

The original versions of 264.midi-presets, 264.audio-presets, 264.loop~, 264.sfplay~, and 264.sfrecord~ relied on Patrick Delges’s filesys Java class to manage file locations. (This is now done via a custom Node.js script.)

The 264.reverb~ core is heavily based on Randy Jones’s yafr2 example.

264.pitchtrack~ is built around the sigmund~ sinusoidal analysis and pitch tracking external, originally developed by Miller Puckette, ported to Max/MSP by Miller Puckette, Cort Lippe & Ted Apel. Included here is Volker Böhm’s 64-bit version.

264.freeze~ is adapted from Jean-François Charles’s spectral freezing patches.

264.loop~ is built around Rodrigo Constanzo & raja’s amazing karma~, which is Copyright © 2015, Rodrigo Constanzo All rights reserved. Please see the module for detailed redistribution information.

264.line relies on an adapted version of simplify-js, which is Copyright © 2017, Vladimir Agafonkin All rights reserved and distributed under a BSD 2-Clause license.

License

This software is free to use, modify, and redistribute under a GNU General Public License.

264-tools's People

Contributors

delucis avatar julienvincenot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  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  avatar  avatar  avatar  avatar

264-tools's Issues

Improve 264.sfplay~ sound file loading

Currently files are loaded into an sfplay~ object using the open message. Any file loaded — including from the drop-down menu — has to be read from disk every time. The delay before a file is fully loaded makes play messages fail if they arrive before the file finishes loading.

Preloading all files in soundfiles/ into an sflist~ would alleviate that delay. However, each 264.sfplay~ module would load its own independent sflist~ (although they would all be identical, there is no way to share sflist~ names to consolidate the memory usage). This, coupled with a potentially large number of sound files, might create a heavy demand on available memory.

Another solution might be to introduce an internal buffer for messages that depend on files being loaded. When a file starts loading, the play/stop/pause input might be cached temporarily and only fed through to the internal sfplay~ once the file is loaded. (Or, if that is impossible to detect, using defer?)

Complete reference

Currently in progress in the documentation branch.

Control

  • 264.go!
  • 264.tog

Presets

  • 264.audio-presets
  • 264.midi-presets
  • 264.midi-learn

Utility

  • 264.fullscreen
  • 264.lockstatus

Audio

Processing

  • 264.delay~
  • 264.filter~
  • 264.freeze~
  • 264.grains~
  • 264.limit~
  • 264.reverb~
  • 264.ringmod~
  • 264.transpose~

Analysis

  • 264.envelope~
  • 264.trigger~
  • 264.pitchtrack~

Sound Files

  • 264.sfplay~
  • 264.sfrecord~
  • 264.loop~

Utility

  • 264.audiotest~

64-bit Windows Issues

I'm having some issues loading 264 Tools in 64-bit Max 8 on Windows 10. Specifically, no modules are loaded and the console displays the following error on startup:

Could not load package '264 Tools', 64-bit architecture unsupported.

I just cloned this repo directly into ~/Documents/Max 8/Packages. Here's my Max version information:

When I attempt to manually load patches like the module finder, I get errors related to jsui: can't find file 264.helptext.js. Happy to provide any other information required for debugging, thanks!

Create documentation for non-user-facing patches

Some patches are not designed to be used outside of other 264 Tools modules, but should probably be documented nonetheless.

To do

Reference

  • 264.pattr-control
  • 264.preset-toggle

Help files

  • 264.pattr-control
  • 264.preset-toggle

Create `key` shortcut module

Add module that makes using keyboard shortcuts easy, using key + sel analogous to 264.midi-learn

Features:

  • enable/disable shortcut
  • allow “toggle” functionality using keyup as well as key
  • store shortcuts in 264.midi-presets
  • toggle to enable/disable shift modifier (Max’s ASCII codes already distinguish shift presses sufficiently)

Complete helpfiles

Currently in progress in the helpfiles branch.

Control

  • 264.go!
  • 264.tog

Presets

  • 264.audio-presets
  • 264.midi-presets
  • 264.midi-learn

Utility

  • 264.fullscreen
  • 264.lockstatus

Audio

Processing

  • 264.delay~
  • 264.filter~
  • 264.freeze~
  • 264.gate~
  • 264.grains~
  • 264.limit~
  • 264.reverb~
  • 264.ringmod~
  • 264.transpose~

Analysis

  • 264.envelope~
  • 264.pitchtrack~
  • 264.trigger~

Sound Files

  • 264.sfplay~
  • 264.sfrecord~
  • 264.loop~

Utility

  • 264.audiotest~

sflist~ bug impacting 264.sfplay~

Just reported an apparent Max 8 bug to @Cycling74 that impacts 264.sfplay~.

We depend on sflist~ outputting preload and preload_error messages to detect when a file has been loaded, but it appears that in recent versions of Max sflist~ no longer outputs these so there’s no way to detect if a file has been preloaded successfully or not.

Impact

  • Can’t hide a “file loading…” overlay once preloading is complete. For now, I have hidden this overlay entirely.

  • Can’t show the currently loaded filename once it is loaded.

  • Our seek functionality also relied on these messages so currently you can’t scroll to a time point with 264.sfplay~ or play from a specific position in a file as part of a cue.

Post here if you spot any other odd behaviour you think might be related!

Update, 23 Jan 2023

Confirmed the bug is only present in Max 8.3 and up. Until this is fixed, we recommend using Max 8.2!

Update, 26 Jan 2023

Response from Cycling '74 support:

I am able to reproduce this error and have brought it to the attention of engineering to take a look at.

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.