From CSWiki
Revision as of 05:52, 5 March 2008 by Frostburn (talk | contribs) (ChucK Feature Requests)

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.)

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)

(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
  • 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.