Nick Collins
Home [Music] Research {Software} [Teaching] Contact
JavaScript
[Keras to Realtime Audio] Going from a python keras program to train a deep neural net on audio, to realtime deployment in a SuperCollider plugin written in C++, and Web Audio API javascript for a webpage.
[LINK] BBCut demo. Requires Web Audio API
[MMLL] Musical Machine Listening Library for Web Audio API
[LINK] Tempo Duet 2 (Dec 2017) This work, for two keyboardists sharing one instrument or on two, is driven by an animated score generated afresh each performance. The two players have opposing tempi, indicated graphically on screen for them to follow; as the piece proceeds, there is potential for more bitonal clashes to come into play against the diatonic default. Dynamic score in a web browser (javascript, HTML5)
[LINK] live codable breakpoint interpolation synthesis experiment. Set update functions for each or all breakpoint positions which return [newx, newy]; newx is the gap to the next breakpoint in samples, newy is the amplitude. Available arguments: oldx, oldy, index (which breakpoint) and t for time in seconds. The demoes also show use of a few Xenakisian statistical shortcuts. In principle, allows live codable GENDYN, and would be a possible engine for a future more dynamically editable web browser based iGendyn. The presets can store between browser sessions. Requires Web Audio API
[TOPLAPapp AudioWorkletNode version] [TOPLAPapp ScriptProcessorNode version] TOPLAPapp re-created in javascript via the Web Audio API (requires a compatible browser, like Chrome)
[LINK] Chasing Visuals, for string instrument (Feb 2013) Dynamic score in a web browser (javascript, HTML5)
[LINK] Stubject ody: Generative study in audiovisual synchrony; events are sometimes visual only, audio only, or together. Web Audio API again, uses audiolib.js here.
SCMIR SuperCollider Music Information Retrieval Library for audio content analysis. Feature extraction, plotting features, similarity matrix, novelty curve, section boundary detection, beat tracking, onset detection, arbitrary feature segmentation, dynamic time warping, machine learning, SCMIRLive. Associated SCMIRUGens plugins are now part of sc3-plugins.
LINK My SuperCollider tutorials
autocousmatic program for automatic generation of electroacoustic works, incorporating machine listening: standalone and source
stealthissound recipes from the first half of the 'Steal this Sound' book (Mitchell Sigman 2011) adapted for SuperCollider.
wavelets SC plug-ins for discrete wavelet transform analysis and resynthesis (analogous to FFT-PV_UGen-IFFT chains, you get DWT-WT_UGen-IDWT)
PolyPitch SC plug-in for multiple fundamental frequency tracking, after Anssi Klapuri's 2008 paper 'Multipitch analysis of polyphonic music and speech signals using an auditory model'
SourceSeparation SC3.6 plug-in for live source separation, using non-negative matrix factorisation on the power spectrogram to discover the sources and mixing matrix, and spectral masking on resynthesis
sc3-plugins contributions Including SC3 plug-ins for advanced sound analysis, such as the tracking phase vocoder, and spectral modeling synthesis, further machine listening UGens such as Tartini, Qitch (constant Q pitch tracker) and Concat (live concatenative synth), auditory modeling (gammatone filter and haircell models), and Anti Aliasing Oscillators (band-limited oscillators from research work by Vesa Valimaki, Juhan Nam, and colleagues)
SLUGens: set of SC3 plug-ins of my non-standard sound synthesis experiments. Includes new nonlinear oscillators, breakpoint set and buffer manipulations, miscellaneous filters and helpful functions.[pre-built for SC 3.6][source]
experimental Clang UGen code, precompiled for OS X 10.6, SC 3.5 only (though the source should be portable); a draft of putting an LLVM jit compiler inside a SuperCollider UGen. Uses Clang in the background to create LLVM intermediate code for compilation.
bbcut2 beat tracking, event analysis and automated audio cutting library (Released under the GNU GPL)
PCSet Library 1.0 SC3 code for generating pitch class universes released under GNU GPL
Reinforcement Learning research code; untidy, but may be helpful in accompaniment to my ICMC2008 paper on live musical agents
BBCut1.3 The SC3 port of the automated audio cutting library. Now with real-time Onset Detection support and an onset finder GUI. If you desire automated jungle, algorithmic drill and bass and recursive audio cutting, plus lots of sample and live audio processing power...(Released under the GNU GPL). Note that bbcut2 is the newer and more powerful version of this, but some people may desire to play around with the old version.
There also may be some material of use on this workshop page including MIDI File analysis and demoes of non standard sound synthesis
[LINK] A few Max/MSP externals, ported from SuperCollider, like ~weakly and ~lpcanalyzer
[LINK] ll~: On the fly learning system; extracts features, and discovers timbral clusters. See the help file; hit learn 1 button to start once audio is turned on. Give it some time to settle, learning about its inputs, then set it to finds clusters. The outputs give you the assigned cluster index closest to current input, and the recent feature data. More detail in the following research report:
(2011) [PDF] "LL: Listening and Learning in an Interactive Improvisation System"
[LINK] Code to accompany a paper on dictionary-based methods for cross-synthesis
[LINK] Code to accompany a paper on even more errant sound synthesis
[LINK] Code to accompany a paper on chord enumeration: Python counting code, and C++ brute force enumeration of representatives
[LINK] My iPhone/iPod Touch Apps
[AudioInOut.zip] Old demonstration Xcode project for audio input and output using RemoteIO; acts as a play through patch cord, ready for you to extend via your own audio processing/synthesis
[MusicLibraryRemoteIODemo.zip] Old demonstration Xcode project for getting float samples from any Music Library track for processing with RemoteIO (adapted from code for BBCut, requires OS 4.1 at least)
[TOPLAPapp.zip] Source code for TOPLAPapp 1.0
[iGendyn] Source code for iGendyn on github