Commit f88d7062 authored by Dan Stowell's avatar Dan Stowell

Imported Upstream version 3.6.3~repack

parent 3e296dce
......@@ -148,7 +148,14 @@ option(SSE41 "Compile with support for SSE4.1 instructions.")
option(SSE42 "Compile with support for SSE4.2 instructions.")
set(AUDIOAPI "default" CACHE STRING "Audio API to use (one of {default,coreaudio,jack,portaudio})")
option(LIBSCSYNTH "Compile libscsynth as shared library" OFF)
if(NOT WIN32)
option(LIBSCSYNTH "Compile libscsynth as shared library" OFF)
else()
# libscsynth has unresolved symbols, which are resolved when linked with server executable.
# On Windows, this is not supported for static libraries, so we build dynamic by default.
option(LIBSCSYNTH "Compile libscsynth as shared library" ON)
endif()
option(INSTALL_HELP "Install help docs and examples along with the software" ON)
option(SC_DOC_RENDER "Pre-render SCDoc documentation. (For putting online, etc)" OFF)
......@@ -167,8 +174,8 @@ option(SC_MEMORY_DEBUGGING "Build sclang&scsynth for memory debugging (disable m
option(GC_SANITYCHECK "Enable sanity checks in the sclang garbage collector.")
option(NO_LIBSNDFILE "Disable soundfile functionality. (Not recommended.)" OFF)
option(NO_AVAHI "Disable Avahi support. (Not recommended.)" OFF)
option(NO_GPL3 "Disable GPL3 code, for pure-GPL2 situations. (Not recommended.)" OFF)
option(SCLANG_SERVER "Build with internal server." ON)
......@@ -181,11 +188,6 @@ if (SC_QT)
message( STATUS "Compiling with Qt GUI" )
endif (SC_QT)
if(WIN32)
option(SC_WIN_DEP_DIRS
"A list of directories where dependencies will be searched for when packaging.")
endif()
if(CMAKE_COMPILER_IS_GNUCXX)
option(NATIVE "Optimize binary for this architecture (binaries may not run on other machines, requires gcc-4.3 or higher).")
option(LTO "Use GCC's link time optimizer' (experimental).")
......@@ -285,6 +287,15 @@ if (SC_MEMORY_DEBUGGING)
add_definitions(-DDISABLE_MEMORY_POOLS)
endif()
if(MINGW)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mstackrealign")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mstackrealign")
endif()
if (NO_GPL3)
add_definitions(-DNO_GPL3)
endif()
#############################################
# subdirectories
add_subdirectory(external_libraries)
......@@ -294,6 +305,10 @@ if(NOT YAMLCPP_FOUND)
set(YAMLCPP_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/external_libraries/yaml-cpp-0.3.0/include)
endif()
configure_file(common/SC_Version.hpp.in common/SC_Version.hpp)
include_directories(${CMAKE_CURRENT_BINARY_DIR}/common)
add_subdirectory(server)
add_subdirectory(lang)
add_subdirectory(editors)
......@@ -386,9 +401,6 @@ else()
)
endif()
configure_file(platform/SCVersion.sc.in SCVersion/SCVersion.sc)
install(DIRECTORY "${CMAKE_BINARY_DIR}/SCVersion" DESTINATION "${auxresourcesdir}/SCClassLibrary")
install(DIRECTORY sounds
DESTINATION ${auxresourcesdir}
)
......
......@@ -20,8 +20,8 @@ Examples::
compare:
code::
{ BrownNoise.ar(0.5) }.play;
{ WhiteNoise.ar(0.5) }.play;
{ BrownNoise.ar(0.1) }.play;
{ WhiteNoise.ar(0.1) }.play;
::
brownian noise as a frequency modulator:
......@@ -33,4 +33,3 @@ filtered brown noise:
code::
{ BPF.ar(BrownNoise.ar(0.1.dup), MouseX.kr(40, 17000, 1), 0.2) }.play;
::
......@@ -101,7 +101,7 @@ Get a new Bus that is a subset of this bus (see code::newFrom::).
subsection:: Asynchronous Control Bus Methods
The following commands apply only to control buses and are asynchronous. For synchronous access to control busses please
consult link::Classes/Bus#synchronous_control_bus_methods::.
consult link::#Synchronous control bus methods::.
method:: value
Set all channels to this float value. This command is asynchronous.
......
......@@ -12,7 +12,7 @@ Akin to link::Classes/StaticText:: they can store arbitrary content in the link:
strong::DragBoth::, specifically, strong::accepts any:: dropped data and stores it into the strong::-object:: variable, as well as gives that variable as data strong::for dragging::.
See: link::Classes/View#drag_and_drop:: for a general description of the drag and drop mechanism.
See: link::Classes/View#Drag and drop:: for a general description of the drag and drop mechanism.
......
......@@ -12,7 +12,7 @@ Akin to link::Classes/StaticText:: they can store arbitrary content in the link:
strong::DragSink::, specifically, strong::accepts any:: dropped data and stores it into the strong::-object:: variable, but allows strong::no dragging::.
See: link::Classes/View#drag_and_drop:: for a general description of the drag and drop mechanism.
See: link::Classes/View#Drag and drop:: for a general description of the drag and drop mechanism.
......
......@@ -12,7 +12,7 @@ Akin to link::Classes/StaticText:: they can store arbitrary content in the link:
strong::DragSource::, specifically, gives the strong::-object:: variable as the data strong::for dragging::, but strong::accepts no drop::.
See: link::Classes/View#drag_and_drop:: for a general description of the drag and drop mechanism.
See: link::Classes/View#Drag and drop:: for a general description of the drag and drop mechanism.
......
......@@ -440,7 +440,7 @@ is used as a simple trigger. If it is an sustaining envelope
(e.g. Env.adsr, Env.asr), the envelope is held open until the
gate becomes 0, at which point is released.
If strong::gate:: < 0, force release with time code:: -1.0 - gate ::, see link::#forced_release:: below.
If strong::gate:: < 0, force release with time code:: -1.0 - gate ::. See link::Classes/EnvGen#Forced release:: example.
argument::timeScale
......
......@@ -39,7 +39,7 @@ is used as a simple trigger. If it is an sustaining envelope
(e.g. Env.adsr, Env.asr), the envelope is held open until the
gate becomes 0, at which point is released.
If strong::gate:: < 0, force release with time code:: -1.0 - gate ::, see link::#forced_release:: below.
If strong::gate:: < 0, force release with time code:: -1.0 - gate ::. See link::#Forced release:: below.
argument::levelScale
......
......@@ -141,6 +141,9 @@ METHOD:: connect
argument:: connections
An Array of Integers - indexes of nodes, each to become the second end to a new connection created.
METHOD:: selection
note::Only in Qt GUI::
Returns an array of indexes of all selected nodes.
SUBSECTION:: Appearance
......
......@@ -49,7 +49,7 @@ METHOD:: rows
You can make an item span more than one cell by wrapping it into an Array, followed by pairs of (\rows, number) and/or (\columns, number). You can also assign an alignment to an item by following it with a pair of (\align, alignment). \rows, \columns, and \align can be abbreviated with \r, \c, and \a, respectively.
The simplified syntax for placing key-value pairs into an array comes handy (see link::Reference/Syntax-Shortcuts#creating_arrays_with_key-value_pairs::, and the example below).
The simplified syntax for placing key-value pairs into an array comes handy (see link::Reference/Syntax-Shortcuts#Creating Arrays with key-value pairs::, and the example below).
Example:
Code::
......
......@@ -9,7 +9,7 @@ Any time the bus is "touched" ie. has its value set (using "/c_set"
etc.), a single impulse trigger will be generated. Its amplitude is the
value that the bus was set to.
If the bus is set link::Classes/Bus#synchronous_control_bus_methods#synchrounosly:: no trigger will be generated.
If the bus is set link::Classes/Bus#Synchronous control bus methods#synchronously:: no trigger will be generated.
classmethods::
......
......@@ -16,7 +16,7 @@ argument::gate
This triggers the envelope and holds it open while > 0.
If strong::gate:: < 0, force release with time code:: -1.0 - gate ::, see link::Classes/EnvGen#forced_release::.
If strong::gate:: < 0, force release with time code:: -1.0 - gate ::. See link::Classes/EnvGen#Forced release::.
argument::attackTime
......
......@@ -41,6 +41,9 @@ METHOD:: value
METHOD:: valueAction
Sets link::#-value:: and triggers the link::#-action::.
METHOD:: selection
note::Only in Qt GUI::
Returns an array of all selected indexes. See also: link::#-selectionMode::.
SUBSECTION:: Appearance
......
......@@ -90,7 +90,7 @@ a = Pbind(\degree, Prand([1, 2, 3, [0, 5]], inf), \bend, Pwhite(0, 76, inf));
(a <> (type: \midi, midiout: m)).play;
::
See link::Tutorials/A-Practical-Guide/PG_08_Event_Types_and_Parameters#midi_output#PG_08_Event_Types_and_Parameters: MIDI Output:: for a list of midi commands supported by the 'midi' event type.
See link::Tutorials/A-Practical-Guide/PG_08_Event_Types_and_Parameters#MIDI output:: for a list of midi commands supported by the 'midi' event type.
subsection::Linux specific: Connecting and disconnecting ports
......
......@@ -149,13 +149,13 @@ subsection::Setting the source
NodeProxy keeps a number of slots which can be sources and are mixed on the same bus.. The default source is the slot 0. All objects can be exchanged while running, and also before and after. Normally, the source is active immediately. If sources are to be exchanged "quietly", set the node proxy to sleep (awake = false), or use the message prime().
See the list under section link::#supported_sources::
See the list under section link::#Supported sources::
method::source
Play a new synth through proxy and release/remove any old ones.
argument::obj
can be one of the supported inputs (see link::#supported_sources::)
can be one of the supported inputs (see link::#Supported sources::)
method::prime
Set source without starting the synth. To start it, link::#-send:: can be used later. Running synths are released and proxy is initialized if still neutral.
......@@ -176,7 +176,7 @@ argument::index
where the object should be placed in the internal order. if code::-1::, all objects are freed
argument::obj
A valid source (see link::#supported_sources::).
A valid source (see link::#Supported sources::).
argument::channelOffset
using a multichannel setup it can be useful to set this, when the objects numChannels is smaller than the proxy
......
......@@ -8,7 +8,7 @@ description::
Pbind combines several value streams into one event stream. Each value stream is assigned to one or more keys in the resulting event stream. It specifies a stream of strong::Events:: in terms of different patterns that are strong::bound:: to different keys in the Event.
The patterns bound to keys are referred to as emphasis::value patterns:: and the Pbind itself is termed an event pattern.
The keys used in a Pbind are usually determined by link::Classes/Event::'s default mechanism and the controls defined for the link::Classes/SynthDef:: to be played. (See link::#synthdef_and_event:: below for a brief discussion of both in relation to Pbind.)
The keys used in a Pbind are usually determined by link::Classes/Event::'s default mechanism and the controls defined for the link::Classes/SynthDef:: to be played. (See link::#SynthDef and Event:: below for a brief discussion of both in relation to Pbind.)
ClassMethods::
......
......@@ -503,7 +503,7 @@ method:: beginPath
Discard any previous path.
method:: beginTransparencyLayer
Begins a new transparency layer. Transparency layers are useful when you want to apply an effect to a group of objects or create a composite graphic. See link::#transparency_layer_example:: for an example.
Begins a new transparency layer. Transparency layers are useful when you want to apply an effect to a group of objects or create a composite graphic. See link::#Transparency layer example::.
method:: endTransparencyLayer
Ends the current transparency layer.
......@@ -623,7 +623,7 @@ Set the opacity level.
method:: blendMode
Set the blending mode to use.
See link::#blending_modes:: for more information.
See link::#Blending modes:: for more information.
method:: lineDash
Set the line dash pattern.
......
......@@ -31,7 +31,7 @@ Each item can be a strong::view::, a strong::layout::, strong::nil:: (for stretc
discussion::
You can assign a strong::stretch factor:: and/or strong::alignment:: to an item by wrapping it into an array, followed by pairs of ('stretch', factor) and/or ('align', flag). 'stretch' and 'align' may be abbreviated with 's' and 'a'. Simplified syntax for placing key-value pairs into an array comes handy (see link::Reference/Syntax-Shortcuts#creating_arrays_with_key-value_pairs::, and the example below).
You can assign a strong::stretch factor:: and/or strong::alignment:: to an item by wrapping it into an array, followed by pairs of ('stretch', factor) and/or ('align', flag). 'stretch' and 'align' may be abbreviated with 's' and 'a'. Simplified syntax for placing key-value pairs into an array comes handy (see link::Reference/Syntax-Shortcuts#Creating arrays with key-value pairs::, and the example below).
If the item is a stretchable empty space (nil) alignment will have no effect; if the item is a fixed-size empty space (an Integer), it is unaffected by both the stretch factor and alignment.
......
......@@ -43,7 +43,7 @@ occurs when a signal changes from negative value to positive
value.
argument:: doneAction
an integer representing an action to be executed when the buffer is finished playing. This can be used to free the enclosing synth, etc. See link::Reference/UGen-doneActions:: for more detail. code::doneAction:: is only evaluated if loop is 0.
an integer representing an action to be executed when the buffer is finished recording. This can be used to free the enclosing synth, etc. See link::Reference/UGen-doneActions:: for more detail. code::doneAction:: is only evaluated if loop is 0.
Examples::
......
......@@ -43,7 +43,7 @@ In general, when working with a single machine one will probably be using one of
The difference between the two is that the local server runs as a separate application with its own address space, and the internal server runs within the same space as the language/client app.
Both local and internal server supports link::#-scope#scoping:: and link::Classes/Bus#synchronous_control_bus_methods#synchronous bus access::.
Both local and internal server supports link::#-scope#scoping:: and link::Classes/Bus#Synchronous control bus methods#synchronous bus access::.
The local server, and any other server apps running on your local machine, have the advantage that if the language app crashes, it (and thus possibly your piece) will continue to run. It is thus an inherently more robust arrangement. But note that even if the synths on the server continue to run, any language-side sequencing and control will terminate if the language app crashes.
......@@ -294,7 +294,7 @@ method:: pid
Get process ID of running server (if not internal).
method:: hasShmInterface
Returns true if a link::Classes/ServerShmInterface:: is available. See also link::Classes/Bus#synchronous_control_bus_methods#Synchronous Control Bus Methods::.
Returns true if a link::Classes/ServerShmInterface:: is available. See also link::Classes/Bus#Synchronous control bus methods::.
discussion::
The shared memory interface is initialized after first server boot.
......
......@@ -452,12 +452,12 @@ g.close;
::
method::split
Returns an Array of Strings split at the separator. The separator is a link::Classes/Char::, a link::Classes/String::, or anything that can be converted into a string. It is strong::not:: included in the output array. The default separator is $/, handy for Unix paths.
Returns an Array of Strings split at the separator. The separator is a link::Classes/Char::, and is strong::not:: included in the output array.
code::
"This/could/be/a/Unix/path".split;
"These are several words".split($ );
"These are several words".split(" ");
"accgcagcttag".split("gc");
// The default separator $/ is handy for Unix paths.
"This/could/be/a/Unix/path".split;
::
subsection:: Stream support
......
......@@ -186,9 +186,6 @@ argument:: mdPlugin
(optional) The metadata plug-in class that will be used to persist metadata. If not supplied, the default plug-in is used. See the SynthDesc help file for details.
method:: memStore
This method has been deprecated, use add instead.
method:: play
A convenience method which compiles the def and sends it to target's server. When this asynchronous command is completed, it create one synth from this definition, using the argument values specified in the Array args. For a list of valid addActions see link::Classes/Synth::. The default is \addToHead.
Returns:: a corresponding Synth object.
......
......@@ -189,7 +189,7 @@ METHOD:: autohidesScrollers
SUBSECTION:: Drag and Drop
note:: Default drag-and-drop behavior of TextView is not defined in standard SC methods (see link::Classes/View#subclassing::), but in the view implementation instead (except for link::#-defaultGetDrag:: in Qt GUI). It may or may not be overridable by adding your own handlers (see link::Classes/View#drag_and_drop::), depending on the GUI kit in use.
note:: Default drag-and-drop behavior of TextView is not defined in standard SC methods (see link::Classes/View#subclassing::), but in the view implementation instead (except for link::#-defaultGetDrag:: in Qt GUI). It may or may not be overridable by adding your own handlers (see link::Classes/View#Drag and drop::), depending on the GUI kit in use.
::
Dragging from TextView will give the selected text in a String as drag data, while dropping will accept any object and insert it link::Classes/Object#-asString#as String:: at the drop location.
......
......@@ -13,7 +13,7 @@ To define how the view is drawn you set the link::#-drawFunc:: variable to a lin
This class offers convenient mechanisms for creating animations, that is, to automatically redraw itself in regular time intervals. See the link::#animation#Animation:: section of this document.
For a guide to using this view, see the link::Guides/GUI-Introduction.html#custom_views#Custom Views:: section of the 'Introduction to GUI'. For a tutorial on how to write a emphasis::subclass:: of UserView to make your own custom view classes, see the link::Guides/UserView-Subclassing:: guide.
For a guide to using this view, see link::Guides/GUI-Introduction#Custom views::. For a tutorial on how to write a emphasis::subclass:: of UserView to make your own custom view classes, see the link::Guides/UserView-Subclassing:: guide.
......@@ -109,13 +109,13 @@ METHOD:: frame
SUBSECTION:: Actions
The UserView by itself does not respond to any interaction by the user. You can define the modes of interaction entirely on your own using mouse and keyboard actions. See link::Guides/GUI-Introduction#actions_and_hooks:_make_that_button_do_something!#Actions and Hooks:: section of the 'Introduction to GUI' for detailed explanation.
The UserView by itself does not respond to any interaction by the user. You can define the modes of interaction entirely on your own using mouse and keyboard actions. See link::Guides/GUI-Introduction#Actions and hooks: make that button do something!#Actions and Hooks:: for detailed explanation.
Note that there is no default mode of interaction with the UserView, so link::Classes/View#-action:: will never be triggered, if you don't implement that yourself.
EXAMPLES::
'Introduction to GUI' contains an link::Guides/GUI-Introduction#custom_views#example:: with elaborate explanation on how to use UserView. Below are further examples.
'Introduction to GUI' contains an link::Guides/GUI-Introduction#Custom views#example:: with elaborate explanation on how to use UserView. Below are further examples.
For a tutorial on how to write a emphasis::subclass:: of UserView to make your own custom view classes, see the link::Guides/UserView-Subclassing:: guide.
......@@ -171,7 +171,7 @@ w.refresh;
SUBSECTION:: Responding to mouse clicks and movement
Using the link:: Classes/View#mouse_actions#mouse actions :: you can make UserView change the way it is drawn in response to mouse interaction. The sequence of examples below will guide you through the various possibilities.
Using link::Classes/View#Mouse actions#mouse actions:: you can make UserView change the way it is drawn in response to mouse interaction. The sequence of examples below will guide you through the various possibilities.
Clicking and moving the mouse on each of the painted squares in the following example will redraw them differently. See interpreter output for posted information that you can use in the mouse actions.
......
......@@ -518,28 +518,28 @@ list::
METHOD:: mouseDownAction
The object to be evaluated when a mouse button is pressed on the view.
The following arguments are passed at evaluation: strong::view, x, y, modifiers, buttonNumber, clickCount::.
The following arguments are passed at evaluation: strong::view, x, y, modifiers, buttonNumber, clickCount::. See link::#Mouse actions:: for explanation of arguments.
The return value of evaluation controls the event propagation to parent view. See link::#Key and mouse event processing:: for details.
METHOD:: mouseUpAction
The object to be evaluated when a mouse button is released after it was pressed on the view.
The following arguments are passed at evaluation: strong::view, x, y, modifiers::.
The following arguments are passed at evaluation: strong::view, x, y, modifiers::. See link::#Mouse actions:: for explanation of arguments.
The return value of evaluation controls the event propagation to parent view. See link::#Key and mouse event processing:: for details.
METHOD:: mouseMoveAction
The object to be evaluated whenever the mouse pointer moves after a mouse button was pressed on the view.
The following arguments are passed at evaluation: strong::view, x, y, modifiers::.
The following arguments are passed at evaluation: strong::view, x, y, modifiers::. See link::#Mouse actions:: for explanation of arguments.
The return value of evaluation controls the event propagation to parent view. See link::#Key and mouse event processing:: for details.
METHOD:: mouseOverAction
The object to be evaluated when the mouse pointer moves over the view with no mouse buttons pressed.
The following arguments are passed at evaluation: strong::view, x, y::.
The following arguments are passed at evaluation: strong::view, x, y::. See link::#Mouse actions:: for explanation of arguments.
The object is evaluated only when link::Classes/Window#-acceptsMouseOver:: of the containing Window (or, in Qt, link::#-acceptsMouseOver:: of the top View) is code::true::.
......@@ -550,7 +550,7 @@ METHOD:: mouseWheelAction
The object to be evaluated when the mouse wheel is used while the mouse is pointing onto the view.
The following arguments are passed at evaluation: strong::view, x, y, modifiers, xDelta, yDelta::.
The following arguments are passed at evaluation: strong::view, x, y, modifiers, xDelta, yDelta::. See link::#Mouse actions:: for explanation of arguments.
The xDelta and yDelta arguments express rotation in horizontal and vertical direction, respectively. The value is in degrees (typically, an event occurs every 15 degrees), and can be positive or negative, depending on the direction of rotation.
......@@ -561,14 +561,14 @@ METHOD:: mouseEnterAction
The object to be evaluated when the mouse pointer enters the view.
The following arguments are passed at evaluation: strong::view, x, y::.
The following arguments are passed at evaluation: strong::view, x, y::. See link::#Mouse actions:: for explanation of arguments.
METHOD:: mouseLeaveAction
note:: strong:: Only in Qt GUI :: ::
The object to be evaluated when the mouse pointer leaves the view.
The following arguments are passed at evaluation: strong::view, x, y::.
The following arguments are passed at evaluation: strong::view, x, y::. See link::#Mouse actions:: for explanation of arguments.
SUBSECTION:: Key actions
......@@ -591,6 +591,8 @@ list::
## strong::unicode:: - The Integer unicode number associated with the 'char' passed.
## strong::keycode:: - The hardware dependent keycode indicating the physical key. This will vary from machine to machine, but is useful for building musical interfaces using the computer keyboard. warning::Function key modifier in combination with another key may change the latter's keycode.::
## strong::key:: - In Qt GUI, an Integer denoting a key, corresponding to the "Key" enum of the Qt C++ API. Comparing this value is the most reliable way to check which key was pressed. For a list of possible values, see: link::http://qt-project.org/doc/qt-4.8/qt.html#Key-enum::.
::
note::
......@@ -607,7 +609,7 @@ list::
METHOD:: keyDownAction
The object to be evaluated when a key is pressed.
The following arguments are passed at evaluation: strong::view, char, modifiers, unicode, keycode::.
The following arguments are passed at evaluation: strong::view, char, modifiers, unicode, keycode, key::. See link::#Key actions:: for explanation of arguments. Note that they 'key' argument is only passed in Qt GUI.
The return value of evaluation controls the event propagation to parent view. See link::#Key and mouse event processing:: for details.
......@@ -616,7 +618,7 @@ METHOD:: keyDownAction
METHOD:: keyUpAction
The object to be evaluated when a key is released.
The following arguments are passed at evaluation: strong::view, char, modifiers, unicode, keycode::.
The following arguments are passed at evaluation: strong::view, char, modifiers, unicode, keycode, key::. See link::#Key actions:: for explanation of arguments. Note that they 'key' argument is only passed in Qt GUI.
The return value of evaluation controls the event propagation to parent view. See link::#Key and mouse event processing:: for details.
......@@ -710,7 +712,7 @@ METHOD:: defaultKeyDownAction
The method called when a key is pressed and link::#-keyDownAction:: is nil. Subclass it to define your own functionality on key presses.
See link::#key_actions#Key actions :: for explanation of arguments.
See link::#Key actions:: for explanation of arguments.
The return value controls the event propagation to parent view. See link::#Key and mouse event processing:: for details.
......@@ -718,7 +720,7 @@ METHOD:: defaultKeyUpAction
The method called when a key is released and link::#-keyUpAction:: is nil. Subclass it to define your own functionality on key-release.
See link::#key_actions#Key actions :: for explanation of arguments.
See link::#Key actions:: for explanation of arguments.
The return value controls the event propagation to parent view. See link::#Key and mouse event processing:: for details.
......@@ -727,10 +729,10 @@ METHOD:: keyDown
Handles response to a key press event. First evaluates link::#*globalKeyDownAction::, then calls link::#-handleKeyDownBubbling::.
note::
In Qt GUI, instead of calling link::#-handleKeyDownBubbling::, this method directly triggers the action and returns, forwarding the action's return value. See link::#key_actions#Key Actions :: for detailed explanation.
In Qt GUI, instead of calling link::#-handleKeyDownBubbling::, this method directly triggers the action and returns, forwarding the action's return value. See link::#Key actions:: for detailed explanation.
::
See link::#key_actions#Key actions :: for explanation of arguments.
See link::#Key actions:: for explanation of arguments.
returns:: strong:: Only in Qt GUI: :: A Boolean, stating whether the event was handled or not (and will not or will propagate to the parent view, respectively), or the view, in which case it lets the Qt view implementation handle the event.
......@@ -739,10 +741,10 @@ METHOD:: keyUp
Handles response to a key release event. Sets link::#-keyTyped:: to 'char', evaluates link::#*globalKeyUpAction::, and then calls link::#-handleKeyUpBubbling::.
note::
In Qt GUI, instead of calling link::#-handleKeyUpBubbling::, this method directly triggers the action and returns, forwarding the action's return value. See link::#key_actions#Key Actions :: for detailed explanation.
In Qt GUI, instead of calling link::#-handleKeyUpBubbling::, this method directly triggers the action and returns, forwarding the action's return value. See link::#Key actions:: for detailed explanation.
::
See link::#key_actions#Key actions :: for explanation of arguments.
See link::#Key actions:: for explanation of arguments.
returns:: strong:: Only in Qt GUI: :: A Boolean, stating whether the event was handled or not (and will not or will propagate to the parent view, respectively), or the view, in which case it lets the Qt view implementation handle the event.
......@@ -753,7 +755,7 @@ METHOD:: keyModifiersChanged
In Qt GUI, instead of calling link::#-handleKeyModifiersChangedBubbling::, a modifier key press or release event also produces a normal key press or release event, and it is the handling of those events that will determine propagation to the parent.
::
See link::#key_actions#Key actions :: for explanation of arguments.
See link::#Key actions:: for explanation of arguments.
METHOD:: handleKeyDownBubbling
note:: Only in Cocoa and SwingOSC GUI ::
......@@ -776,24 +778,24 @@ METHOD:: keyTyped
METHOD:: mouseDown
Handles response to a mouse button press event. Evaluates link::#-mouseDownAction::.
See link::#mouse_actions#Mouse actions :: for explanation of arguments.
See link::#Mouse actions:: for explanation of arguments.
METHOD:: mouseUp
Handles response to a mouse button release event. Evaluates link::#-mouseDownAction::.
See link::#mouse_actions#Mouse actions :: for explanation of arguments.
See link::#Mouse actions:: for explanation of arguments.
METHOD:: mouseMove
Handles response to mouse pointer moving after a mouse button has been pressed on the view. Evaluates link::#-mouseMoveAction::.
See link::#mouse_actions#Mouse actions :: for explanation of arguments.
See link::#Mouse actions:: for explanation of arguments.
METHOD:: mouseOver
Handles response to mouse pointer moving over the view with no mouse buttons pressed. Evaluates link::#-mouseOverAction::.
This method is called only if link::Classes/Window#-acceptsMouseOver:: of the containing Window (or, in Qt, link::#-acceptsMouseOver:: of the top View) is code::true::.
See link::#mouse_actions#Mouse actions :: for explanation of arguments.
See link::#Mouse actions:: for explanation of arguments.
METHOD:: mouseEnter
note:: strong:: Only in Qt GUI :: ::
......
......@@ -229,7 +229,7 @@ Views and windows can be assigned strong::actions:: that they will perform whene
Objects can also be given to views and windows to evalute on events that are not a direct result of user's interaction, but convey useful information about the view's operation and the state it moved in. In this case they are often differentiated from actions and called strong::hooks::.
Here, we will give an overview of different kinds of actions and hooks. See link::Classes/View#actions_in_general:: and following sections for precise explanation of how to assign and make use of them.
Here, we will give an overview of different kinds of actions and hooks. See link::Classes/View#Actions in general:: and following sections for precise explanation of how to assign and make use of them.
subsection:: Default actions
......@@ -252,7 +252,7 @@ All the views can be assigned actions to specific mouse and keyboard events, no
You can assign actions to strong::mouse events:: generated when the mouse pointer enters the space of a view, when it moves over them, and when a mouse button is pressed or released.
See link::Classes/View#mouse_actions#View: Mouse Actions:: for details.
See link::Classes/View#Mouse actions:: for details.
In the following example the StaticText will report whether the Button is pressed or released.
......@@ -266,7 +266,7 @@ b.mouseUpAction = { t.string = "Button released" };
You can assign actions to strong::keyboard events:: generated whenever a key is pressed or released while the view has keyboard focus. Keyboard focus is a state of a view in which it has exclusive priority to respond to keyboard events. A view that has keyboard focus typically in a way visually indicates so. On most platforms, pressing the Tab key will switch the keyboard focus between views in the active window and clicking on a view will give it focus.
See link::Classes/View#key_actions#View: Key Actions:: for details.
See link::Classes/View#Key actions:: for details.
Typing text into any of the TextFields in the following example will change the color of the rectangle bellow, for each TextField a different color.
......@@ -291,7 +291,7 @@ When a mouse button is pressed on a view together with Cmd(Mac OS) or Ctrl(Other
It is possible to customize what object a view exports when dragged from and how a view reacts to objects dropped by assigning custom drag and drop actions.
See link::Classes/View#drag_and_drop:: for details.
See link::Classes/View#Drag and drop:: for details.
code::
(
......
......@@ -2,9 +2,11 @@ title:: News in 3.6
summary:: A summary of news in SC 3.6
categories:: News
SECTION:: ScIDE
SECTION:: SuperCollider IDE
link::Guides/SCIde::
A new cross-platform SuperCollider coding environment.
Read link::Guides/SCIde##the guide::!
SECTION:: Language-side news
......@@ -25,7 +27,7 @@ ERROR: syntax error, unexpected BINOP, expecting ']'
^
123;
-----------------------------------
ERROR: Command line parse failed
ERROR: Command line parse failed
::
subsection:: Remove old syntax
......@@ -55,8 +57,8 @@ Positioning of SplayAz was broken. The semantics of the TELETYPE::spread:: and T
been changed in order to fix the behavior.
subsection:: Array primitives respect mutability
The array primitives now respect object mutability: writing to an immutable object now fails and changing an
immutable object with TELETYPE::add::, TELETYPE::addAll::, TELETYPE::insert::, TELETYPE::extend::,
The array primitives now respect object mutability: writing to an immutable object now fails and changing an
immutable object with TELETYPE::add::, TELETYPE::addAll::, TELETYPE::insert::, TELETYPE::extend::,
TELETYPE::growClear:: and TELETYPE::overwrite:: will return a newly allocated object.
SECTION:: Server-side news
......
......@@ -46,7 +46,7 @@ The Qt layout system allows you to forget about pixels - it manages the size and
SUBSECTION:: Intrinsic view sizes
You may have noticed in the examples above that, besides omitting the code::parent:: argument, we sometimes omitted the code::bounds:: argument as well, at view construction. This is possible because views have intrinsically defined preferred and minimum sizes. See the link::Guides/GUI-Layout-Management#intrinsic_view_sizes#Intrinsic view sizes:: section of the Layout Management guide.
You may have noticed in the examples above that, besides omitting the code::parent:: argument, we sometimes omitted the code::bounds:: argument as well, at view construction. This is possible because views have intrinsically defined preferred and minimum sizes. See link::Guides/GUI-Layout-Management#Intrinsic view sizes:: for further explanation.
SUBSECTION:: Layout classes
......@@ -163,7 +163,7 @@ t.mouseWheelAction = { |v,x,y,mod,dx,dy|
SUBSECTION:: Hooks for position and size change
Since views can be automatically repositioned and resized by link::#layout_management#layouts::, or by the user (if they are windows), it may come handy to make your view respond to these changes using link::Classes/View#-onMove:: and link::Classes/View#-onResize::.
Since views can be automatically repositioned and resized by link::#Layout management#layouts::, or by the user (if they are windows), it may come handy to make your view respond to these changes using link::Classes/View#-onMove:: and link::Classes/View#-onResize::.
code::
(
......@@ -277,7 +277,7 @@ w = Window()
SUBSECTION:: ScrollView
link::Classes/ScrollView:: allows to strong::replace the canvas:: that holds its child views with an arbitrary view. This allows great flexibility, including using a link::#layout_management#layout:: to manage the child views. See link::Classes/ScrollView#-canvas:: for explanation, and this link::Classes/ScrollView#examples#example::.
link::Classes/ScrollView:: allows to strong::replace the canvas:: that holds its child views with an arbitrary view. This allows great flexibility, including using a link::#Layout management#layout:: to manage the child views. See link::Classes/ScrollView#-canvas:: for explanation, and this link::Classes/ScrollView#examples#example::.
SECTION:: New views
......
......@@ -142,7 +142,7 @@ fork {
timer = Sweep.ar(1);
// 'i' must be audio-rate for BufWr.ar
BufWr.ar(timer, resultbuf, K2A.ar(i), loop: 0);
BufWr.ar(i, resultbuf, DC.ar(0), 0); // # of points in index 0
BufWr.kr(i, resultbuf, DC.kr(0), 0); // # of points in index 0
}).asBytes]],
[0, Synth.basicNew(\onsets, s, 1000).newMsg],
[dur, resultbuf.writeMsg(resultpath, headerFormat: "AIFF", sampleFormat: "float")]
......
This diff is collapsed.
......@@ -11,7 +11,7 @@ SuperCollider's out of the box MIDI support is fairly thorough (although not as
The main MIDI classes are:
definitionList::
## link::Classes/MIDIClient:: || This class connects to the operating system's MIDI layer, and obtains the lists of available MIDI sources and destinations. The information about the hardware is stored in code::MIDIClient.sources:: and code::MIDIClient.destinations:: as link::Classes/MIDIEndPoint:: objects. MIDIClient must be initialized before MIDI can be received. See the example at link::#playing_notes_on_your_midi_keyboard#Playing notes on your MIDI keyboard::.
## link::Classes/MIDIClient:: || This class connects to the operating system's MIDI layer, and obtains the lists of available MIDI sources and destinations. The information about the hardware is stored in code::MIDIClient.sources:: and code::MIDIClient.destinations:: as link::Classes/MIDIEndPoint:: objects. MIDIClient must be initialized before MIDI can be received. See the example link::#Playing notes on your MIDI keyboard::.
## link::Classes/MIDIFunc:: || The optimal way to receive the most typical MIDI messages: note on/off, controller, pitch bend, aftertouch, poly-touch and program change.
## link::Classes/MIDIdef:: || Related to link::Classes/MIDIFunc::, this class keeps several MIDIFunc objects in global storage, by name. Especially helpful for live or interactive use.
## link::Classes/MIDIOut:: || Supports MIDI output to hardware ports or inter-application MIDI buses.
......@@ -28,7 +28,7 @@ For most uses, the preferred way to receive MIDI input is using the link::Classe