From CSWiki
Revision as of 04:40, 16 May 2008 by Frostburn (talk | contribs) (ChucK Feature Requests: waveshaping and math)

Jump to: navigation, search

ChucK Feature Requests

For debates on priority for the next release(s) see ChucK/Features/Release

  • be able to do something like this (dt):
Event myevent;
1::second || myevent => now;
//waits for whichever happens first; 
  • Perhaps Std.mtof() could get support for Scala files?
  • TCP/IP support (dt)
  • Extend maybe to include possibly (25%) maybe (50%) & probably (75%)
  • run ChucK as a VST plugin inside other hosts
  • a debug/trace option and/or debugger for easier debugging and ChucK learning.
  • [Linux] ALSA sequencer support for MIDI control.
  • Ability to compile support for several IO schemes.
    • Maybe by making this kind of stuff modular (welcome to plugin land).
  • Maybe support for using/controlling LADSPA plugins?
  • Include statement. Would make it easier to reuse code
  • Ogg/Vorbis
  • FLAC
  • ChucK for Puredata
  • envelope ugen capable of curved envelopes
  • Auto-Fades for + - =
  • ChucK as a DSSI plugin,
  • Instructions/tips for people using ChucK on Windows XP
  • when using --add print out the status line (to VM console)
  • Function pointer types, so that sporked code can be pointed at controls as well as ugens.
  • anonymous function blocks. e.g. spork ~ { dosomething }. Why? because it would be really useful for scoring multiple voices when playing melodic instruments. Makes it possible to easily write scores in ChucK.
  • Either support for include files, or support for #line directives in the parser so that a C preprocessor can be used.
  • support for timed OSC messages.
  • Ability to pass in command-line parameters: Place any command-line arguments of the form "NAME=VALUE" into the environment, so that they it be access with getenv(). (or maybe -"-defineNAME=VALUE"). Or both.
  • Add support for Mac OS X CoreMIDI port aliases so synths can be easily assigned correctly to interfaces. (see MIDIpatchbay for implementation example)
  • Turn MIDI .msg parsing into a system of functions like was done with the HID (".isNoteOn()", ".isControlerChange()", etc) especially with a eye towards future incorporation of clock mesages and so on.
  • Make the data coming from --status available from inside ChucK as well as aditional functions to determine a shred's parent and childeren (if any). relevant quite from mailing list;
  • Jack support (especially on Linux)! Would take care of a couple of request above. 2 channels/shred would be nice, but not necessary.

Maybe something like a array returned by a function (something like "machine.shredList()" ?)that would list the active ID's and functions like "machine.children(shred-id)" that would return a array of a shred's childeren by id, " machine.sporkTime(shred-id)" and so on.

  • References for primitives.
  • Remove and replace shreds by name!
  • Declare dependencies between .ck files.
    • I use public classes a lot to share things between files (clock events, for instance) -- since there is only one public class allowed in each file, it is necessary to use several files for implementing various functionality, but remembering which ones need which becomes a challenge!
  • Check for existence of an identifier.
  • UAnas for pitch detection (autocorrelation, possibly YIN) and pitch shifting (maybe FFT). Useful for compensating for the lack of singing skill and monophonicity of the human voice. (It would be nice to be able to sing chords)
  • Something that can do fast convolution of signals. (Could be used for example to create realistic surround effects using raw impulse response data.)
  • Constructors that can take arguments.
  • Ability to unchuck everything connected to an UGen and the ability to unchuck the UGen from everything it might be connected to.
  • WaveShaper UGen that applies a user specified function to the input. These functions should include: trigonometric functions, exp, log, hyperbolic functions, sqr (input to the power of two), sqrt (square root of the input), cube, cuberoot, abs, sgn. And possibly: floor, ceil, step (0 for negative, 1 for positive inputs), sinc, the Error function, the Gamma function, Lambert W-function, and the rest of the single variable special functions that are in general use.
  • Extend namespace Math with the Error function and other useful special functions (multivarible functions included).

Good Ideas

  • arrays (DONE)
  • file inclusion (header files)
  • objects (DONE)
  • synchronous / asynchronous events (DONE)
  • implicit casting (DONE)
  • global value map
  • shred local adc/dac
  • cross chucking
    • what is cross chucking?
  • stereo (DONE)
  • multi-channel (DONE)
    • wow, it's only mono? (not anymore!)
  • OSC (OpenSound Control) ( SOME )
  • automatic OSC address spaces ; /machine/shred[1]/variables/foo , /machine/add ( ON THE WAY )
  • midi parsing/routing object ( SOME )
  • sndbuf proper sndbuf / sndplayer / sndrecorder collection
  • duration expressions
  • widgets ( once visuals are up )
  • synchronization
  • ability to remove a shred AND the shreds it sporked (its children) from the command line. (DONE)
  • Bluetooth HID support - makes Wiimote become an instrument position and orientation HID.

(potential) parallel efforts

  • GLucK: (OpenGL for ChucK) this is almost ready for release
  • TrucK: ChucK to C/C++ translator (for embedded platforms, and for non-on-the-fly native compilation). Paul Botelho and I talked about this last night. (I just now made up the name)
    • Would it be possible to run it on processors without floating point support, like StrongARM / Xscale?
  • JucK: Using Jave to build GUI's, communicate with chuck via OSC

Bad Ideas

  • make ChucK more like COBOL
  • port Chuck to ENIAC
  • implement a hardware version of ChucK using CMOS logic
  • sign an endorsement contract for ChucK with ChucK-E-Cheese
  • MucK: okay, this is going further into la-la land. MATLAB / ChucK extension.
    Diemo Schwarz and I had once envisioned this renegade concept of doing analysis in MATLAB and (somehow) using ChucK from within MATLAB to quickly (and concurrently) playback/synthesize/audisize on-the-spot. I wonder if anyone still wishes for this.
  • MUSHCK: Multi-User Shared Hallucination ChucK. Multiple users can log in to the VM process, chat with each other and interact with ChucK remotely, while ChucK sends audio streams back to them. ( Hey this is a ctually quiet good! We can already do this, except the audio streams. Decentralised, p2p, VM would be awesome (as well as risky for both your ears and system)!)
  • SucK: we need a really bad idea to go with this.
  • BucK: the commercial version
  • DucK: ChucK for migrating fowl
  • HucK: ChucK for those lazy afternoons floating down the Mississippi River
  • KucK: Realtime sauerkraut generator
  • LucK: A ChucK program that works the first time
  • Pluck: A ChucK program with strings attached.
  • PucK: Live performance version of ChucK in which the program is controlled by hockey players.
  • QucK: A ugen for DucK
  • RucK: A ChucK concert given by an unemployed Wall Street television personality.
  • StucK: A ChucK program that contains an infinite loop.
  • TucK: Any ChucK program that generates lullabies.
  • YucK: A ChucK program that executes correctly but which otherwise seems generally unpleasant.
  • ChucKy: A ChucK program that gives you scary nightmares the next time you sleep.
  • NunChucK: A ChucK program with Kung-Fu action.
  • ClucK: A Kentucky fried ChucK program.
  • ChucKlings: A group of little fuzzy yellow ChucK shreds that follow their parent shred around.
  • ChecK: A ChucK program that automatically deposits into your checking account.
  • CheeK: A ChucK program that turns red when it gets embarassed or in cold weather.
  • ShreK: A lovable giant green ChucK program made for kids of all ages.
  • WrecK: A ChucK program that collided with another ChucK program at CPU speed.
  • SpecK: A very small Chuck program.
  • ElecKt: A ChucK program that makes grand promises, but never keeps them.
  • HecK: The place where evil ChucK programs end up.
  • HucK: A ChucK program that travels down the Mississippi river and has many adventures.
  • ClarK: A ChucK program from another planet that saves the world with it's mighty powers.
  • ClerK: A ChucK program that makes tedious calculation in an office all day.
  • ChicK: An attractive young female ChucK program.
  • ShucK: A ChucK program that prepares corn for cooking on the cob.
  • ShucKs: A ChucK program that is a little bit disappointed at how things turned out.
  • TucKs: A medicated ChucK program for soothing relief of sore itching.
  • TeaK: A ChucK program with a dark colored wood grain on it's user interface window.
  • StacK: A group of ChucK programs that are arranged into a vertical pile on your desk.
  • SticK: A long pointy wooden ChucK program.
  • Drill ChucK: A ChucK program that strongly grips onto rotating metal cutting bits.
  • PicK: A ChucK program used in the 1800's to dig for gold.
  • GlocK: A ChucK program with seven bullets in a spring loaded linear array.
  • SlicK: A ChucK program that is dangerous when wet by rain.
  • RocK: 1. A ChucK program that grew out of Jazz and Blues to become a popular music style.
        2. A ChucK program from Philadelphia that gets a shot at the world boxing title and wins.  
        3. A pet Chuck program that was wildly popular in the 80's but was really just a pebble.  
  • Sock: A ChucK program that you should never wear with flip-flops unless you're a grad student.