{% set pageTitle = "Get an isolation note prototype" %} {% extends "includes/layout.html" %} {% block content %}
Changed mentions of NHS Direct Wales to NHS 111 Wales - this went live on 28 August 2020
yxz
Updated info for users who select "I'm at higher risk from coronavirus" because shielding advice is changing on 1 August 2020, url for medical advice in Scotland and info for medical advice in Northern Ireland.


Your key has been reclaimed effectively however the setup couldn't be begun. Mistake happens frequently when security drivers not introduced appropriately or ceased. These driver will be utilised to work with Network equipment gadgets and other hidden framework gadgets to begin the establishment of Norton Antivirus. The vast majority of the frameworks with Firewalls have these drivers. With a specific end goal to alter Error N0740E ensure that windows firewall drivers are introduced and running legitimately.
Need help? See our Norton FAQs.
Norton Virtual Technician
It can diagnose and fix many problems related to your Norton product. For problems it can't fix, it collects information to make Search and Chat more effective.
Norton FAQs and Search
If Norton support Technician can't fix your problem or if you re accessing this site from a different computer, use our FAQs and powerful search tool to help you find answers.
Contact Technical Support
Still experiencing trouble? Contact one of our technicians who, with your permission, may remotely access your PC to resolve your issue, while you watch!


3D Example showing how to use the library for topography emulation, by creating a trench geometry.
3D Example showing how to use the library for topography emulation, by creating a trench geometry. A uniform layer of a different material is then grown on top. It is the same example as Deposition but emulates the deposition rather than simulating a slow growth.
1import viennaLS3d as vls
2
3
9
10extent = 30
11gridDelta = 0.5
12
13bounds = (-extent, extent, -extent, extent, -extent, extent)
14boundaryCons = (0, 0, 1)
15
16
17substrate = vls.lsDomain(bounds, boundaryCons, gridDelta)
18
19
20origin = (0,0,0)
21planeNormal = (0,0,1)
22
23vls.lsMakeGeometry(substrate, vls.lsPlane(origin, planeNormal)).apply()
24
25
26print("Creating box...")
27trench = vls.lsDomain(bounds, boundaryCons, gridDelta)
28minCorner = (-extent - 1, -extent / 4., -15.)
29maxCorner = (extent + 1, extent / 4., 1.)
30vls.lsMakeGeometry(trench, vls.lsBox(minCorner, maxCorner)).apply()
31
32
33print("Booling trench")
34vls.lsBooleanOperation(substrate, trench, vls.lsBooleanOperationEnum.RELATIVE_COMPLEMENT).apply()
35
36mesh = vls.lsMesh()
37vls.lsToSurfaceMesh(substrate, mesh).apply()
38vls.lsVTKWriter(mesh, "trench-initial.vtk").apply()
39
40
41
42
43
44print("Creating new layer...")
45newLayer = vls.lsDomain(substrate)
46
47print("Advecting")
48
49dist = vls.lsSphereDistribution(4.0, gridDelta)
50vls.lsGeometricAdvect(newLayer, dist).apply()
51
52vls.lsToSurfaceMesh(newLayer, mesh).apply()
53vls.lsVTKWriter(mesh, "trench-final.vtk").apply()


Quantity:
Total number of items:
Sub-Total: $
GST : $
QST : $
Please confirm that you want to remove this item.


{% extends "crdb/base.html" %} {% load static %} {% block title %}Login{% endblock %} {% block content %}
Enter your name and email address and we'll get back to you as soon as possible.


Because the web is better with a soundtrack.
SoundManager 2 makes MP3s playable using Javascript. It seamlessly wraps and extends Flash's audio capabilities behind the scenes, providing a solid Javascript API. Ideally, it helps people like you to make cool stuff.
Demos
Less Talk, More Show.
Some examples wchich play MP3 files using the Javascript API:
-
"Page as a playlist" | Playlist w/debug output
Muxtape.com-style UI example, list of playable links with loading, progress, timing display and controls
-
"Make MP3 links playable in-place"
A simple way to play MP3 links "in-place" on a page, easily skinned with CSS.
-
jsAMP MP3 Player Alpha | jsAMP w/debug output
Experimental MP3 player demo app / API test suite.
-
A drum machine / sampler-style demo.
-
Animation demo 1 Animation demo 2a | 2b
Examples illustrating potential lag/delay between JS + Flash via ExternalInterface, CPU load with DOM manipulation etc.
-
Demo (Flash 9) | (Flash 8) Bare-bones template
Some example API calls, and a simple copy/paste-able SM2 template for your use.
Getting Started
"I'd like to use this on my site. Where do I start?"
No problem! See this bare-bones template which you can use to add SM2 to your project. (For technical requirements, refer to Requirements + Specifications.)
Like a fine whiskey, SoundManager should come with a disclaimer that reads, "Use Responsibly." You should know when to stop, too.
Licensing
SoundManager 2 is provided free of charge under a BSD license. If you find a nifty or innovative use for it (or just want to comment), feedback is always appreciated.
Download
New shiny: Flash 9 "MovieStar" MPEG4 (FLV, M4V, HE-AAC audio) support! (Experimental. See related demo) Flash 8 is still the default. For details on changes, see revision history.
SoundManager v2.80a.20081005.zip (~2.1 MB, of which 1.7 MB is demo MP3 sounds. :D)
Includes API, ActionScript source, documentation, examples and standalone demos (including demo MP3 sounds.)
Javascript API core: File size options
Basic Use
Adding SoundManager 2 to your page
A single Javascript include will link in all of the required code for the library, which will automatically begin loading either at document.onDOMContentLoaded()
if supported, or alternately, after window.onload()
(eg., IE 6 and others.) The default behaviour is to start "as soon as possible", but the library can be configured to wait for window.onload()
in all cases as well. Loading and initialisation are separate events, and are detailed below.
Once initialised, SM2 will call either soundManager.onload()
or soundManager.onerror()
, event handlers which you can define just as with window.onload()
.
Including SoundManager
Within <head>
:
<script type="text/javascript" src="soundmanager2.js"></script>
Alternate "minified" version (no debug output nor comments, ~50% reduction in file size):
<script type="text/javascript" src="soundmanager2-nodebug-jsmin.js"></script>
For a live example of this code, check the bare-bones template.
SoundManager Flash Version property
SoundManager 2 started with a Flash 8 base requirement, but can also now use Flash 9 and take advantages of some new features Flash 9 offers. By default Flash 8 will be used, but the version can be easily changed by setting flashVersion
appropriately.
Example: soundManager.flashVersion = 9;
The Flash 8 version is soundmanager2.swf
, and the flash 9 version is soundmanager2_flash9.swf
, accordingly. Note that only Flash 8 and Flash 9 are supported at this time; other values will result in errors.
New Flash 9-only features (alpha):
- True "multi-shot" sound behaviour.
play()
can be called multiple times, giving a layered, "chorus" effect. Sound will also fireonfinish()
multiple times. (Previous behaviour did not layer sounds, but would re-play a single instance.) waveformData
array: 256 waveform data values available while playing soundeqData
array: 256 EQ spectrum data values available while playing soundpeakData
object: Left and right channel peak/volume data available while playing sound
SoundManager URL property
soundManager.url
specifies the "online", generally HTTP-based path which SM2 will load .SWF movies from. The "local" (current) directory will be used by default. The appropriate .SWF required (depending on the desired Flash version) will be appended to the URL.
Example: soundManager.url = '/path/to/swf/';
(Note trailing slash)
Behaviour change: Note that previous versions of SM2 requested the URL parameter include a .SWF file. This has changed in order to accommodate the need to load different .SWF files.
For cases where SM2 is being used "offline" in non-HTTP cases (eg., development environments), see altURL
.
SoundManager altURL property
soundManager.altURL
specifies an alternate path to soundManager.url
which SM2 can load its SWF from. It is a simple convenience for when you may need to load SWFs from different paths depending on your hosting environment (eg., offline development vs. production.)
Example: soundManager.altURL = '../';
(Load from parent directory - note trailing slash)
For altURL to be used, it must be defined and an "alternate environment" condition must be met:
soundManager.useAltURL = (!document.location.protocol.match(/http/i));
By default and as shown above, SM2 will use this property when the hosting page is not being served over HTTP, and thus is assumed to being served "offline" - for example, when loading via file://, from the local file system.
This can easily be adapted to taste, eg., checking the domain matching yourdomain.com vs. localhost:
soundManager.useAltURL = (!document.location.match(/mydomain.com/i));
If soundmanager.altURL
is null (the default), soundManager.url
will be used for all cases.
SoundManager's Asynchronous Nature
SM2 will successfully initialise when the SoundManager Flash controller (movie) has loaded and makes a successful callback to Javascript. (Or in Safari's case when you open a tab in the background, "when the tab finally receives focus and the Flash movie loads" - even though window.onload()
may have already fired. Fun, eh? ;))
The key point to remember with SM2 is that it will load asynchronously and its onload/onerror handlers may be called either long before or after window.onload()
, depending on a number of factors. For this reason, do not rely on soundManager's onload event to trigger the start of your own app; use the standard "DOM ready" or window load event handlers instead.
Because sound may not become available for some time (eg., Safari and the specific "background tab" use case), ideally your code should be able to handle sound becoming available after your application has initialised itself. Setting a simple "sound enabled" variable in your code could be one way to do this.
Successful Initialisation
Once SoundManager has initialised and soundManager.onload()
has fired (onload() example), sounds may be created, loaded and played in one call using minimal parameters.
Example SoundManager calls you can make within soundManager.onload()
:
soundManager.play('mySound','/path/to/some.mp3');
Sounds can also be created without automatically loading or playing, for later use:
soundManager.createSound('myNewSound','/path/to/some.mp3');
Once defined, sound objects have methods and properties which can be accessed by the soundManager controller.
soundManager.play('myNewSound');
soundManager.setVolume('myNewSound',50);
soundManager.setPan('myNewSound',-100);
Initialisation Failure + Error Handling
In the event SoundManager encounters an error during loading, it will silently fail and disable itself; all subsequent calls to the soundManager controller object will return false. If defined, soundManager.onerror()
will be called rather than soundManager.onload()
. If debug mode is enabled, error messaging will be written to the Javascript console and/or browser.
Flash Security: Sandbox Types
Flash has a few different sandbox modes; effectively, a Flash movie cannot have access to both the local file system and remote (network/internet) resources simultaneously unless specifically granted access (ie., by whitelisting in the Flash security settings panel.) By default, Flash will be given access to the hosting environment, but not the other. When viewing SM2 demos on your local file system, you may see these warnings as internet URLs may not be loaded by default. When served over HTTP, internet URLs may be loaded but not local filesystem resources by default.
Once initialised, soundManager.sandbox.type
will give the Flash-defined sandbox type; for determining restrictions, the following booleans will be defined (initially as null, then false or true once determined): soundManager.sandbox.noRemote
and soundManager.sandbox.noLocal
. In the event SMSound.onload()
fires and the loaded
property is false, either a 404 (file not found) or flash security error has likely occurred.
The most common-encountered sandbox types are "remote" (when on the web/HTTP), "localWithFile" and "localTrusted" (when opened from a hard drive directly, and in the latter case, when "whitelisted" under the flash player global security settings panel [see here].)
Debugging + Console Support
During development, SoundManager may throw custom errors to help debugging. For post-live testing, debug mode can be forced by appending debug=1
somewhere in the URL (eg. #debug=1
or ?debug=1
) and refreshing the page. In the event pre-onload() errors are preventing debug messages, debug=alert
may serve as a last-effort debugging tool. You may also view some live debug output on this page.
Supported debug tool/browser consoles:
- Firefox, via Firebug (console[log|warn|info|error])
- (Theoretically) any UA supporting console.log(string) natively, including Opera + Safari
For those browsers without native console support (or when configured to echo to both console and browser), an element with CSS matching div#soundmanager-debug
will be created and appended to the document as soon as possible. Messages will be appended in reverse order in-browser to ease reading, with most recent at the top. You may put this element (an empty DIV with the debug ID) in your page's HTML, and can then apply your own CSS to make it look pretty.
For configuring default debug behaviour, see SoundManager Global Properties.
SoundManager onload() Equivalent
This is a user-defined onload-style function implemented by SoundManager. Because of the overhead associated in creating and initialising the Flash and Javascript code necessary for SoundManager to function, a separate "onload"-type function is provided so your code can hook into it.
soundManager.onload = function() { // soundManager should be ready to use/call at this point soundManager.createSound('mySound','/path/to/mysoundfile.mp3'); soundManager.play('mySound'); }
Keep in mind that this event is asynchronous and may be called long before or after window.onload()
, depending on circumstances; therefore, it should not be used as the trigger for initialising your core application code. It only serves as an indicator of SoundManager's availability (ie., "ready to use.")
SoundManager onerror() Equivalent
If something breaks after Flash attempts to make a call to "JS-land" and vice-versa, soundManager.onerror()
should be called if defined. (Note that soundManager.onload()
will not be called given the failure.) You can assign a handler here to be notified of failure, and take appropriate action. Again, note that this event is also asynchronous and not attached to window.onload()
.
soundManager.onerror = function() { // soundManager init failed - ExternalInterface/security/JS error, or missing .SWF/old Flash plugin // Notify user if needed, disable sound-specific functionality etc. }
Forcing "delayed" / conservative initialisation
If you would like SoundManager to always wait for window.onload()
to fire before calling soundManager.onload()
or .onerror()
, you may set soundmanager.waitForWindowLoad = true;
A delayed init can be useful when creating and preloading sounds immediately for example, as sounds loading after window.onload()
will not slow down the document loading process itself.
By default, SoundManager will try to initialise and call a user-defined onload function before window.onload()
if possible.
SoundManager supported() Method
If you would prefer to call a function to determine the state of SM2 at various times, soundManager.supported()
will return a boolean based on 1) An initialisation attempt, and 2) A successful result. This also means that calling supported()
prior to SM2's initialisation/onload/onerror process will return false until support has ultimately been determined.
SoundManager canPlayURL() Method
When scanning for URLs to play in a document, soundManager.canPlayURL()
will return a boolean indicating SM2's ability to play the URL. The URL is matched against a regular expression depending on flash version, and whether or not "MovieStar" (MPEG4 mode) is enabled.
Object Literal Format
Sounds can be created with instance-specific parameters in an object literal (JSON) format, where omitted parameters inherit default values as defined in soundManager.
soundManager.createSound({
id: 'mySound',
url: '/path/to/some.mp3',
autoLoad: true,
autoPlay: false,
onload: function() {
alert('The sound '+this.sID+' loaded!');
},
volume: 50
});
This object can also be passed as an optional argument to the play
method, overriding options set at creation time.
For a full list of available options, see Sound Properties Object
SoundManager API
The following are methods, collections, properties and event handlers provided by the globally-scoped soundManager
Javascript object. Both sound properties and methods can be set on a global (inherited) default, or per-sound basis.
SoundManager Core Methods
- object:SMSound createSound(object:options)
- Creates a sound with an arbitrary number of optional arguments. Returns a
SMSound
object instance. -
Example:
soundManager.createSound({ id: 'mySound', // required url: '/audio/mysoundfile.mp3', // required // optional sound parameters here, see Sound Properties for full list volume: 50, autoPlay: true, whileloading: soundIsLoading // remember to omit comma on the last item });
Each
createSound()
call results in the creation of aSMSound
object which stores all properties, methods and events relevant to that particular sound instance.Individual sound objects can also easily be referenced as returned from
createSound()
:var mySoundObject = soundManager.createSound({ id: 'mySound', url: '/audio/mysoundfile.mp3' }); mySoundObject.play(); // SMSound object reference, same as soundManager.getSoundById('mySound')
(Note: Code formatting is stylistic, not necessarily recommended.) See Object Literal Format.
- createSound(id:string,url:string)
- Creates a sound with the specified ID and URL (simple method.)
- Example:
soundManager.createSound('mySound','/audio/mysoundfile.mp3');
- destroySound(id:string)
- Stops, unloads and destroys a sound specified by ID.
- Example:
soundManager.destroySound('mySound');
- didCreate:boolean play(id:string,[options object])
- Starts playing the sound specified by ID. (Will start loading if applicable, and will play ASAP.)
- Optionally, returns a boolean value indicating "sound created", ie. if the related sound object didn't exist prior to this call and was created to do so.
- Example:
soundManager.play('mySound');
- Note that the second parameter,
options object
, is not required and can take almost any argument from the object literal format (eg. volume.) These should be applied on an instance-specific basis (only overriding existing options for this play instance), but may persist due to an incomplete implementation. (To be fixed.) - Example:
soundManager.play('mySound',{volume:50,onfinish:playNextSound});
- setPosition(id:string,msecOffset:integer)
- Seeeks to a given position within a sound, specified by miliseconds (1000 msec = 1 second.) Affects position property.
- Example:
soundManager.setPosition('mySound',2500);
- Can only seek within loaded sound data, as defined by the duration property.
- pause(id:string)
- Pauses the sound specified by ID. (Does not toggle.) Affects paused property (boolean.)
- Example:
soundManager.pause('mySound');
- resume(id:string)
- Resumes the currently-paused sound specified by ID.
- Example:
soundManager.resume('mySound');
- togglePause(id:string)
- Pauses/resumes play on the sound specified by ID.
- Example:
soundManager.pause('mySound');
- setVolume(id:string,volume:integer)
- Sets the volume of the sound specified by ID. Accepted values: 0-100. Affects volume property.
- Example:
soundManager.setVolume('mySound',50);
- mute([id:string])
- Mutes the sound specified by ID. If no ID specified, all sounds will be muted.
- Example:
soundManager.mute('mySound');
- unmute([id:string])
- Unmutes the sound specified by ID. If no ID specified, all sounds will be unmuted.
- Example:
soundManager.unmute('mySound');
- setPan(id:string,volume:integer)
- Sets the stereo pan (left/right bias) of the sound specified by ID. Accepted values: -100 to 100 (L/R, 0 = center.) Affects pan property.
- Example:
soundManager.setPan('mySound',-80);
- stop(id:string)
- Stops playing the sound specified by ID.
- Example:
soundManager.stop('mySound');
- stopAll()
- Stops any currently-playing sounds.
- Example:
soundManager.stopAll();
- unload(id:string)
- Stops loading the sound specified by ID, canceling any current HTTP request.
- Example:
soundManager.unload('mySound');
- Note that SoundManager does this by loading a new, tiny "stub" MP3 file,
./data/null.mp3
, which replaces the current one from loading. This is defined in the SM2 global object asnullURL
, and can be edited. - getSoundById(id:string)
- Returns an
SMSound
object specified by ID. - Example:
var mySMSound = soundManager.getSoundById('mySound');
- loadFromXML(xmlURL:string)
- Loads and creates sounds as defined in a SoundManager v1 XML file (legacy)
- Note that per-sound options are not supported with this method, and sound objects will be created immediately upon loading and parsing of the XML. The sounds will inherit the
defaultOptions
settings, with the exception of thestream
attribute as set in the XML (true if defined, defaultOption applied if omitted.) - Example:
soundManager.loadFromXML('/path/to/some.xml');
- XML format example: MPC drumkit XML file
- supported:boolean supported()
- Returns a boolean indicating whether soundManager has attempted to and succeeded in initialising. This function will return false if called before initialisation has occurred.
- Example:
var isSupported = soundManager.supported();
- canplay:boolean canPlayURL(mediaURL:string)
- Returns a boolean indicating whether soundManager can play the given URL. Playability is determined by a matching URL pattern set at runtime, based on Flash version and MPEG4 (MovieStar mode) support.
- Example:
if (soundManager.canPlayURL('/path/to/some.mp3')) { soundManager.play('foo','/path/to/some.mp3'); }
- sID
- Sound ID string as provided from the
id
parameter viacreateSound()
orplay()
. Can be referenced asthis.sID
from within sound object event handlers such asonload()
,whileloading()
orwhileplaying()
, etc. - If an ID is known, the related SMSound object can be retrieved via
getSoundById
or directly referencingsounds[sID]
on the SoundManager global object. - url
- The specified URL from which the sound is loaded. Can be referenced as
this.url
from within sound object event handlers such asonload()
orwhileplaying()
, etc. - id3
- An object literal populated, if applicable, when ID3 data is received (related handler:
onid3()
) - For property details, see onid3().
- bytesLoaded
- The number of bytes currently received while loading a sound.
- bytesTotal
- The total number of bytes to be downloaded, while loading a sound.
- position
- The current location of the "play head" within the sound, specified in milliseconds (1 sec = 1000 msec).
- duration
- The current length of the sound, specified in milliseconds.
- Note that during loading, this property reflects the length of downloaded data, not the full length, until completely loaded (see whileloading().) For an approximate "full duration" value while loading, see
durationEstimate
. - durationEstimate
- The estimated duration of the sound, specified in milliseconds.
- Due to the dynamic nature of
duration
while loading, this attempts to provide the full duration by calculatingparseInt((self.bytesTotal/self.bytesLoaded)*self.duration)
and is updated with eachwhileloading()
interval. - Once the sound has fully loaded,
duration
should be referenced as it will contain the final and accurate value. - Note that this method works only with Constant Bitrate (CBR)-encoded MP3s due to the consistent data/time assumption. VBR-encoded MP3s will give inaccurate results.
- loaded
- Boolean value indicating load success as returned from Flash. True indicates success, False is a failure or strangely, a successful load (?) from cache.
- Because of the potential for false positives,
duration
and other properties could be checked as a test of whether sound data actually loaded. For more granular state information, see readyState. - playState
- Numeric value indicating the current playing state of the sound.
- 0 = stopped/uninitialised
- 1 = playing or buffering sound (play has been called, waiting for data etc.)
- Note that a 1 may not always guarantee that sound is being heard, given buffering and autoPlay status.
- paused
- Boolean indicating pause status. True/False.
- Treat as read-only; use
pause()
,resume()
andtogglePause()
methods to affect state. - readyState
- Numeric value indicating a sound's current load status
- 0 = uninitialised
- 1 = loading
- 2 = failed/error
- 3 = loaded/success
- didBeforeFinish
- Boolean indicating whether
beforeFinish()
condition was reached. - didJustBeforeFinish
- Boolean indicating whether
justBeforeFinish()
condition was reached. - waveformData (previously spectrumData)
- Array of 256 floating-point (three decimal place) values from -1 to 1, can be used to draw a waveform while playing a sound. See Page-as-playlist demo for example implementation. Requires Flash 9+.
waveformData
is set and updated duringwhileplaying()
. A simple graph could be drawn by looping through the values and multiplying by a vertical scale value (eg. 32, which would make a graph with peaks of -32 and +32 pixels.)- Example code:
someSoundObject.whileplaying = function() { // Move 256 absolutely-positioned 1x1-pixel DIVs, for example (ugly, but works) var gPixels = document.getElementById('graphPixels').getElementsByTagName('div'); var gScale = 32; // draw -32 to +32px from "zero" (i.e., center Y-axis point) for (var i=0; i<256; i++) { graphPixels[i].style.top = (gScale+Math.ceil(this.waveformData[i]*-gScale))+'px'; } }
- SM2 implementation note:
waveformData
currently contains the left channel data only, and the data represents a raw sound wave rather than a frequency spectrum. You could edit the SM2 Flash 9 .as source for this directly, if you wish (source code is provided.) - Related Adobe technical documentation (Flash 9/AS3 Sound() object): computeSpectrum()
- Note: Flash security measures may deny access to spectrumData when loading MP3s from remote domains.
- Warning: This feature is experimental, and will probably eat up a lot of CPU. The amount of data passed from Flash to JS is not terribly large, but the JS-DOM updates and browser reflow can be expensive. Use with caution.
- eqData
- Array of 256 floating-point (three decimal place) values from 0 to 1, can be used to draw a spectrum (frequency range) graph while playing a sound. See Page-as-playlist demo for example implementation. Requires Flash 9+.
- A spectrum frequency graph reflects the level of frequencies being played, from left to right, low to high (i.e., 0 to 20,000 Hz.)
eqData
is set and updated duringwhileplaying()
. A simple graph could be drawn by looping through the values and multiplying by a vertical scale value (eg. 32, thus a graph with peaks of 32 pixels.)- Example code:
someSoundObject.whileplaying = function() { // Move 256 absolutely-positioned 1x1-pixel DIVs, for example (ugly, but works) var gPixels = document.getElementById('graphPixels').getElementsByTagName('div'); var gScale = 32; // draw 0 to 32px from bottom for (var i=0; i<256; i++) { graphPixels[i].style.top = (32-(gScale+Math.ceil(this.waveformData[i]*gScale)))+'px'; } }
- Related Adobe technical documentation (Flash 9/AS3 Sound() object): computeSpectrum()
- Note: Flash security measures may deny access to spectrumData when loading MP3s from remote domains.
- Warning: This feature is experimental, and will probably eat up a lot of CPU. The amount of data passed from Flash to JS is not terribly large, but the JS-DOM updates and browser reflow can be expensive. Use with caution.
- peakData
- Object literal format including
left
andright
properties with floating-point values ranging from 0 to 1, indicating "peak" (volume) level. Updated duringwhileplaying()
. See Page-as-playlist demo as one example. Requires Flash 9+. - Example (within relevant sound object handler):
someSoundObject.whileplaying = function() { soundManager._writeDebug('Peaks, L/R: '+this.peakData.left+'/'+this.peakData.right); }
- onload(boolean:success)
- Fires on sound load. Boolean reflects successful load (true), or fail/load from cache (false).
- False value should seemingly only be for failure, but appears to be returned for load from cache as well. This strange behaviour comes from Flash. More detail may be available from the Flash 8 sound object documentation.
- Failure can occur if the Flash sandbox (security) model is preventing access, for example loading SoundManager 2 on the local file system and trying to access an MP3 on a network (or internet) URL. (Security can be configured in the Flash security panel, [see here].)
- whileloading()
- Fires at a regular interval when a sound is loading and new data has been received. The relevant, updated property is
bytesLoaded
. - Example handler code:
soundManager._writeDebug('sound '+this.sID+' loading, '+this.bytesLoaded+' of '+this.bytesTotal);
- Note that the
duration
property starts from 0 and is updated duringwhileloading()
to reflect the duration of currently-loaded sound data (ie. when a 4:00 MP3 has loaded 50%, the duration will be reported as 2:00 in milliseconds.) However, an estimate of final duration can be calculated usingbytesLoaded
,bytesTotal
andduration
while loading. Once fully-loaded,duration
will reflect the true and accurate value. - onplay()
- Fires when
sound.play()
is called. - onpause()
- Fires when a sound pauses, eg. via
sound.pause()
. - Example:
soundManager.pause('mySound');
- onresume()
- Fires when a sound resumes playing, eg. via
sound.resume()
. - Example:
soundManager.resume('mySound');
- onstop()
- Fires when
sound.stop()
is explicitly called. For natural "sound finished"onfinish()
case, see below. - onfinish()
- Fires when a playing sound has reached its end. By this point, relevant properties like
playState
will have been reset to non-playing status. - onbeforefinishcomplete()
- Fires when a sound has finished,
onfinish()
has been called, but before the sound play state and other meta data (position, etc.) are reset. - onbeforefinish()
- Fires when a playing, fully-loaded sound has reached
onbeforefinishtime
(eg. 5000 msec) from its end. - onjustbeforefinish()
- Fires approximately
justbeforefinishtime
before the end of a fully-loaded, playing sound. - This is based on a polling approach given SM2 must track the sound's position, and is approximated (eg. a 200 msec value may fire at 187 msec before the end of the sound.)
- onid3()
- Fires when ID3 data has been received. Relevant property is
id3
, which is an object literal (JSON)-style object. Only fields with data will be populated. - Note that ID3V2 data is located at the beginning (header) of an MP3 file and will load almost immediately, whereas ID3V1 data is at the end and will not be received until the MP3 has fully loaded.
-
Example handler code:
soundManager._writeDebug('sound '+this.sID+' ID3 data received'); var prop = null; var data = ''; for (prop in this.id3) { data += prop+': '+this.id3[prop]+','; // eg. title: Loser, artist: Beck }
- Refer to the Flash 8 Sound.id3 documentation for a list of ID3 properties.
- When parsing ID3 data, it is best to check for the existance of ID3V1 data first, and apply ID3V2 if no matching ID3V1 data is defined. (V1 should "inherit" from V2, ideally, if available.)
- Note that Flash's cross-domain security restrictions may prevent access to ID3 information, even though the MP3 itself can be loaded. (crossdomain.xml files on the remote host can grant Flash permission to access this.)
- Also note some issues with parsing ID3 from iTunes.
- play([options object])
- setPosition(msecOffset:integer)
- pause()
- resume()
- togglePause()
- mute()
- unmute()
- setVolume(volume:integer)
- setPan(pan:integer)
- stop()
- unload()
- destruct() (called via soundManager.destroySound())
- onload()
- Function called when SoundManager has successfully loaded.
- Example:
soundManager.onload = function() { alert('SoundManager ready to use'); }
- Once this function has been called, all core methods will be available to use.
- Note that
onload()
is not called when SoundManager fails to load; instead,onerror()
is called. - onerror()
- Function called when SoundManager fails to successfully initialise after Flash attempts an init call via ExternalInterface.
- Example:
soundManager.onerror = function() { alert('SoundManager failed to load'); }
- This handler should be called if there is an ExternalInterface problem or other exceptions that fire when the initialisation function is called.
- soundIDs[]
- An array of sound ID strings, ordered by creation. Can be used to iterate through
sounds{}
by ID. - sounds{}
- An object literal/JSON-style instance of
SMSound
objects indexed by sound ID (as insounds['mySound']
orsounds.mySound
), used internally by SoundManager.soundManager.getSoundById()
may be used as an alternate to directly accessing this object. - Flash plugin, version 8 or higher
- Supported Browser
- IE 5.0+, Win32
- Netscape 8.0+, Windows/Mac
- Mozilla 1.7.5+, Windows/Mac
- Firefox 1.0+, Windows/Mac
- Firefox 1.5+, Linux (Flash 9 beta)
- Safari 1.3+, Mac
- Opera 9.10+ (slightly buggy, 9.5+ ideal), Windows/Mac
- Konqueror (version unknown)
-
V2.80a.20081005 (current)
The latest and greatest. (Download)
-
API: Bug fixes
- Changed Flash 8
onload()
boolean "loaded" to be based on sound duration being >0, better test of load success. - Modified Flash 9
onload()
to include boolean result for success/fail, parity with Flash 8
- Changed Flash 8
-
API: New shiny!
-
Added experimental Flash 9.0r115+ (flash codename "MovieStar", Flash 9 Update 3) MPEG4 / HE-AAC support (audio only.) A subset of MPEG4 should be supported including FLV, MP4, M4A, MOV, MP4V, 3GP and 3G2 files. Feature is disabled by default.
- New soundManager
useMovieStar
property, controls feature availability (currently disabled by default.) - New SMSound option,
isMovieStar
, configures feature behaviour on a per-sound basis. Default (null) is to auto-detect .mp4, .mov etc. in URL and enable if found, but can also be forced on or off (true / false). - Video-based formats use the Flash 9
NetStream
andNetConnection
objects, whose API differs slightly from the Sound object. Seeking is limited to video key frames and is not as smooth as an MP3. - Audio playback has been seen to pause during certain events (window scrolling, etc.) while playing MovieStar formats. It doesn't appear to be from CPU overload. More investigation is needed.
- Basic load, progress, onload, whileplaying API support is provided (page player demo includes MP4 and FLV formats). Not all methods (eg. setVolume) have been tested.
- .AVI is not included by default, but may work if the format is actually MPEG4-based.
- Format limitation note: EQ, peak and spectrumData are not available with MovieStar content. This may be a Flash 9/AS3 limitation.
- New soundManager
-
-
-
Miscellaneous
- Added CSS checks to page player: "exclude" and "playable" to override default URL matching behaviour.
-
-
-
V2.78a.20080920
-
API: Bug fixes
- Added
SoundLoaderContext
parameter toload()
, Flash should now check policy-related (crossdomain.xml) files when loading resources from remote domains. Should fix previous security exception warnings when trying to access ID3 and/or waveform/EQ data. See related SoundLoaderContext documentation (ActionScript 3) - Fixed a bug with
load()
, was improperly expecting an options object - now works properly.
- Added
-
API: New shiny!
- Added
soundManager.altURL
property (anduseAltURL
conditional) for convenient offline and other URL switching cases (dev vs. production environments, etc.)
- Added
-
Miscellaneous
- Renamed internal soundManager and SMSound
self
closure references to_s
and_t
, respectively, to avoid potential conflicts with others' code - Moved self-destruct to use
window.onunload
instead ofonbeforeunload
, given the latter event can be caught and canceled if desired by the user - Inline player demo: Added
autoPlay
option - "Basic" demo directory (demo/basic/) moved to demo/api/, added
load()
-related testcase
- Renamed internal soundManager and SMSound
-
-
V2.77a.20080901
-
API: Bug fixes
- Fixed some
mute()
/unmute()
-related bugs, global muting should now work properly. Added some related demo page examples. - Removed comment on flash9Options merging code, was previously new and didn't actually work as it was commented out. Oops. :D
- Added experimental Flashblock exception handling (mozilla/firefox extension), "notification bar"-style UI which can message and assist users in unblocking SM2 .swf. Configured via
soundManager.flashBlockHelper
object, currently disabled by default. - Modified
soundManager.destroySound()
andsound.destruct()
, fixed a bug with these methods and flash's unloading of sounds which was breaking things. Hopefully fixes destroying sounds within whileplaying() and related event handlers, too. - Modified flash 9 "peak data" code to only set the data if the feature is actually enabled.
- Modified
soundManager._debug()
to list all sound object details, instead of just ID/URL.
- Fixed some
-
-
V2.76a.20080808
-
API: Bug fixes
- Fixed some memory "leaks" / garbage collection issues. RAM allocated to load sounds previously wasn't freed until page unload; now memory should be garbage collected some time after
sound.unload()
and/orsoundManager.destroySound()
/sound.destruct()
methods are called. In certain cases, Flash sound objects may be destroyed and re-created (transparent to the JS-side) to release memory.  - Fixed an issue with
play()
not working on sounds created withautoPlay
. - Fixed SM2 to work under proper XHTML (served as
application/xhtml+xml
MIME type). Rewrote object/embed code again, now version-agnostic for IE (no CLSID parameters.) - Corrected reported
loadFromXML()
bug, multiple loadFromXML() calls should work.
- Fixed some memory "leaks" / garbage collection issues. RAM allocated to load sounds previously wasn't freed until page unload; now memory should be garbage collected some time after
-
API: New shiny!
- New
useWaveformData
anduseEQData
sound options, providing access to raw waveform and sound frequency/EQ spectrum data via sound.waveformData and sound.eqData. - Renamed
useSpectrumData
touseWaveformData
- if using waveform stuff currently, make sure you update your code! - Added
soundManager.features
object, which reflects the "support" state forpeakData
,waveformData
andeqData
. Handy for current and future version/support branching.
- New
-
API: Miscellaneous
- New
flash9Options
configuration object for logical separation. When Flash 9+ is used, these options are merged into thedefaultOptions
object. - Added
allowDomain()
stubs and documentation to .as source for allowing .swf on external domains to work (recompile of .swf required)
- New
-
"Page As Playlist" demo: Updates
- Added "favicon" VU meter display option (Flash 9+ only, experimental, currently Firefox/Opera only)
- More-efficient RAM use via
unload()
anddestruct()
sound methods, discarding inactive sounds and freeing RAM as appropriate. - Added
useEQData
, showing sound spectrum (frequency range) instead of raw waveform - Added
fillGraph
config option, allowing solid waveform graphs instead of only peak points - Fixed
playNext
bug where same track couldn't be played twice in a row. - Fixed duplicate URL bug; items with identical MP3 URLs will now work. (Previously, URL was the ID for items and thus had to be unique. Lookup is now done by object.)
- Modified MP3 URL search to include URL parameters, characters after ".mp3"
-
Other updates
- Demo code clean-up, externalised CSS, prettier demo layout and code color highlighting
-
-
V2.75a.20080707
- Flash 9 support! (soundmanager2_flash9.swf) -
multiShot
now actually works (layering/"chorus" effects on sounds), newspectrumData
andpeakData
API features. All existing API features should have parity. - Added
soundManager.flashVersion
property. Flash 8 is the supplied default. - Modified
soundManager.url
to require only a path, eg./path/to/soundmanager-swfs/
to allow loading of varying .SWF versions. - Basic (API) demo: Updated multiShot/Flash 9 behaviour documentation
- Page player demo: Added optional spectrum and VU (spectrumData/peakData) features
- MPC + animation demos: Modified to use Flash 9 (demo improved multiShot feature)
- Flash 9 behaviour differences:
multiShot
properly allowsplay()
to be called multiple times on a sound object, creating desired "chorus" effect. Will callonfinish()
multiple times, butwhileplaying()
etc. are called only for the first "play instance" to avoid complications.- New
soundSpectrum
andpeakData
sound features (spectrum graph / "VU" meter-style data) available - Sounds can be actually unloaded ("null" MP3 no longer needed to cancel loading of an MP3), but URL cannot be changed without destroying and recreating the related Flash sound object. The Flash 9 version does this to maintain API consistency.
- New + improved documentation/project page, updated 2-column layout with content filters, "Get Satisfaction" integration and self-update checks (and a light-switch-related easter egg.)
- Flash 9 support! (soundmanager2_flash9.swf) -
-
V2.5b.20080525
- Added
waitForWindowLoad
for delayed init - Added
onpause()
andonresume()
event handlers - Added
mute()
andunmute()
- Updated demos, revised documentation
- Added
-
V2.5b.20080505
- To improve startup time,
soundManager.go()
(createMovie()
alias) now fires atdocument.onDOMContentLoaded()
by default if supported. (Otherwise, falls back towindow.onload()
.) - Improved initialisation routine -
soundManager.onerror()
is called when the Flash init "times out." Specifically,onerror()
is called when Flash fails to make an ExternalInterface (Flash-> JS) call to SM2 within 1 second ofwindow.onload()
firing. - Added logic to handle special Safari delayed init case (Flash not loading when in a new, unfocused tab until focused) as a exception to the above.
- Added better exception handling + debug messaging for initialisation failure cases (Flash security restrictions due to loading from local file system, no flash support, no ExternalInterface support etc.)
- Updated .swf appendChild() target to use best-to-worst options:
(document.body || document.documentElement || document.getElementsByTagName('div')[0])
- Safari console[log|warn|error]-style messages are now properly formatted.
- Added tons of semicolons to closing braces, eg.
};
- "No-debug", minified version of SM2 included: soundmanager2-nodebug-jsmin.js (17.4 KB, down from full size of 35 KB.) With Gzip compression, file size is ~6 KB. (Commented, debug-enabled version compresses to 10 KB with Gzip.)
- To improve startup time,
-
V2.5b.20080501
Warning: A little experimental too, read details below.
Changelog:
- Rewrote SoundManager initialisation: "Way faster." Communication now initiated from Flash, verification callback then performed by JS; far faster, hopefully more-reliable (TBD.) Init time drastically reduced from seconds to milliseconds in most cases, dependent primarily on Flash movie load rather than
window.onload()
. - Above change also fixes Safari "loading SM2 in background tab" issue, where Safari does not init Flash until background tab comes into focus (when a link is opened in a new, non-focused tab.)
- Current drawback: Difficult to determine, save for falling back to
window.onload()
plus focus methods due to above issue, whether SM2 is actually available or not (ie.,soundManager.onerror()
will not likely be called as in past.) However, thesupported()
method will correctly reflect if SM2 has successfully initialised, for example. - Added sandbox/security model code; SM2 can now tell if it is restricted to either local or internet access only, for example. Helpful in potential debugging errors, plus viewing demos off the local filesystem should no longer throw init errors requiring whitelisting (seemingly due to the new initialisation method.) Win!
- Opera 9.27 has been noted to have some bugs relating to ExternalInterface, seems to be unable to make calls from ActionScript-level methods using
setTimeout()
orsetInterval()
. As a reulst, SoundManager 2 events likeonfinish()
,whileplaying()
andonfinish()
can be sporadically called or missed altogether. No known workaround at this time, but Opera 9.5 (beta 2) does not have this issue. Popular MP3 "mix tape" site muxtape.com uses similar techniques for JS-Flash communication and appears to suffer from the same problem. - Warning: Random crash issue noticed when using IE 6 + 7 and this demo page, calling
createSound()
whensoundManager.defaultOptions.autoLoad = true;
from withinsoundManager.onload()
, for creating + preloading the tab/theme switch sounds. Removing autoLoad=true (leaving the default of false) fixed the crash. Exact reason not determined, perhaps recursive calls or pre-onload issue (?), seems to be isolated to the home page. MPC demo uses autoLoad also, but did not crash. Mentioning just in case. - Updated Muxtape-style demo: More themes, load/security debugging info etc.
- Rewrote SoundManager initialisation: "Way faster." Communication now initiated from Flash, verification callback then performed by JS; far faster, hopefully more-reliable (TBD.) Init time drastically reduced from seconds to milliseconds in most cases, dependent primarily on Flash movie load rather than
-
V2.2.20080420
Changelog:
- More demos! "Page as a playlist" (muxtape.com-style) example, "Make MP3 links playable inline" demo
- Corrected
onStop()
handler inheritance/overriding behaviour (was incorrectly checking defaultOptions) - Added debug output of options object for
createSound()
calls. Full options (result of merging global default + sound-instance-specific options) displayed, helpful in troubleshooting. Event handler function code is intelligently (hopefully) displayed, truncated at 64 characters of first block or end of line, whichever comes first. - Removed most HTML markup from non-HTML (eg. console)
_writeDebug()
calls soundManager.destruct()
writes to console, to be consistent
-
V2.1.20080331
Changelog:
- Modified
createSound()
to return a sound object if successful (more logical) - Updated
setPosition()
method and addedposition
option parameter, documentation + demo (bugfix) - Corrected
createSound()
andplay()
sound option inheritance/overriding behaviour (eg.position
) to work as expected (most to least important: Method call options -> sound object instance options -> SM2 global options) - Updated
deleteSound()
so Array.splice() is used instead of delete, the latter doesn't cause Array.length to update (bugfix) - Modified debug=alert to only work when debug mode is enabled (potential annoyance aversion)
- Modified
togglePause()
to useposition
option parameter rather than undocumentedoffset
(oops :D) - Added
supported()
convenience method (indicates pass/fail after SM2 has initialised.) - Added disabling debug calls from Flash (performance)
- Added URL hash updating/bookmarking and page title updating to jsAMP demo app
- Updated project page layout
- Modified
-
V2.0b.20070415
Changelog:
- Added
destroySound()
method - Made debug output slightly less-verbose (commented out)
- Safety tweak for position-related Flash bug when loading new sounds
- Highly-expanded documentation (
SMSound
events + properties, examples, caveats, FAQs etc.) - Added time-sensitive light/dark theme for documentation
- Added
-
V2.0b.20070201
Second beta?
Changelog:
- Fixed stopAll() bug (previously broken)
- Added
nullURL
parameter - Updated documentation
V2.0b.20070123
V2.0b.20070118
V2.0b.20070115
-
V2.0b.20070107
First beta
-
V2.0a.20060904
Prerelease alpha
- Yahoo! Media Player supports a number of different formats depending on installed plugins (WMA etc.), can display artist / album information and so on.
- JSSoundkit, an MP3 player with a simple UI.
- SoundManager 2 Project Page (schillmania.com)
- Flash 8 sound object documentation (livedocs.macromedia.com)
- Flash Player Global Security Settings Panel - Configure your Flash Player security, eg., allow SM2 .swf on your local filesystem to have internet access for testing by whitelisting its location eg. file://Users/Administrator/Desktop/soundmanager... etc. Alternately, view the page over HTTP and access internet resources that way.
SMSound (Sound Object) Properties
Each createSound()
call generates a matching SMSound
(sound instance) object, which lasts for the life of the page or until explicitly destroyed. Each instance stores stateful information (eg. playState
) and provides event handlers for state changes (eg. onload()
.)
SMSound (Sound Object) Events
Not unlike common javascript objects, each SoundManager SMSound
(sound instance) object can fire a number of events including onload
and others. Functions can be assigned and will be called as needed, and are scoped to the relevant sound object. Specifically, the this
keyword will point to the sound object on which the event fired such that its properties can easily be accessed - eg. within an SMSound
event handler, this.sID
will give the sound ID.
SMSound (Sound Object) Methods
SoundManager provides wrappers for all SMSound methods - eg. soundManager.play('mySound')
checks for a valid sound object, and then calls soundManager.sounds['mySound'].play()
on that particular object.
The following methods can be called directly on a SMSound instance. The method calls are the same as the SoundManager global methods documented above for existing sound objects, minus the sound ID parameter.
SoundManager Global Properties
SoundManager includes a few global parameters which configure debug mode, flash movie path and other behaviours.
soundManager.url = '/path/to/sm2-swf/'; // path where SM2 .SWF files will be found.
soundManager.flashVersion = 8; // version of flash to require, either 8 or 9. Some API features require Flash 9.
soundManager.debugMode = true; // enable debugging output (div#soundmanager-debug, OR console..)
soundManager.useConsole = true; // use firebug/safari console.log()-type debug console if available
soundManager.consoleOnly = false; // if console is being used, do not create/write to #soundmanager-debug
soundmanager.waitForWindowLoad = false; // force SM2 to wait for window.onload() before calling soundManager.onload()
soundManager.allowPolling = true; // enable flash status updates. Required for whileloading/whilelplaying.
soundManager.nullURL = '/null.mp3'; // (Flash 8 only): URL of silent/blank MP3 for unloading/canceling sound load
soundManager.flashBlockHelper.enabled = true; // message user if SM2 init fails and flashblock is detected
soundManager.useMovieStar = false; // enable experimental support for Flash 9.0r115+ MPEG4 video formats
To modify global SoundManager default paramaters for SM2 itself or for all sound objects, edit the main soundmanager2.js file (look for above section in code) or assign new values in your own application script before either window.onDOMContentLoaded()
or window.onload()
fire. (Specifically, both external and inline script blocks which immediately execute are OK.)
Example per-application override:
soundManager.debugMode = false; // disable debug mode
soundManager.defaultOptions.volume = 33; // set global default volume for all sound objects
SoundManager Flashblock Handler Support (experimental)
Flashblock is an extension available for Mozilla (Firefox and related) which prevents flash from running until granted permission by the user, either by individually-enabling or whitelisting an entire site. The common experience is that a placeholder is shown where the .swf would be, and the user can click "play" to allow the movie to load.
Given SM2 uses an "invisible", UI-less Flash movie to do its work, it is not possible for the user to see and unblock the movie without some sort of helper method. The flashBlockHelper
object exists to provide this in the form of unobtrusive "information bar" (or more cynically, "nag bar,") similar in some ways to the native Firefox UI itself.
The structure is as follows:
soundManager.flashBlockHelper = {
enabled: false, // whether to use this detection/messaging
message: [ // "nag bar" to show when messaging the user, if SM2 fails on firefox etc.
// JS array of "information bar" HTML goes here..
'Using Flashblock? Please right-click the icon and "allow flash from this site" ',
'to enable sound/audio features, and then reload this page.',
// etc..
]
};
When enabled, this handler only fires for Mozilla clients, when SoundManager 2 fails to start (soundManager.onerror()
is to be called due to a JS/Flash error,) and only when Flashblock is determined to be installed. The latter is done by attempting to load a Flashblock UI-related image from the chrome:// protocol, a rather dirty/hackish method which currently works due to the way extensions are designed. This is almost certainly not a foolproof, nor future-proof method, but it currently works.
When a Flashblock case is detected, the handler tries to create the messaging UI, including a special replaced flash movie icon at left which the user is instructed to right-click and "whitelist", then reload the page. This is required because SM2 can not currently be "rebooted" after a previous initialization attempt, and the API is designed for a single onload/onerror approach to initialization.
Note that this feature is disabled by default, but should be enabled on this demo page. It can also be manually invoked for testing purposes, by calling soundManager.handleFlashBlock(true)
. You can test this call now, and refer to the top of the page for the messaging UI. Note that if you are not using a Mozilla browser or don't have Flashblock active and running, there will likely be a JS error and a broken image in the UI.
To enable this feature, simply set the flashBlockHelper's "enabled" value to true: soundManager.flashBlockHelper.enabled = true;
Handling Flashblock dismissal cases
The SM2 Flashblock UI provides an [x]-style "close button" which will dismiss the messaging and will navigate to #noflashblock by default. At this point if the page is reloaded, the messaging will be skipped as the user has previously indicated they do not want to see the "nag bar."
This code could easily be modified to set a session cookie etc. if desired, to prevent the user seeing the messaging repeated on other pages within your app and so on.
SoundManager Dynamic (Runtime) Properties
Some properties are dynamic, determined at initialisation or later during runtime, and should be treated as read-only. Currently, supported()
and features
are the only properties that fall in this category.
soundManager.features Object
As certain sound functionality is only available beginning with Flash 9, soundManager.features
can provide a consistent way of checking for feature support.
The structure (intended as read-only) is currently as follows:
soundManager.features = {
peakData: [boolean],
waveformData: [boolean],
eqData: [boolean]
}
Example (checking for peakData
support):
if (soundManager.features.peakData) {
// do peak data-related things here
}
The features object is populated at initialisation time; the current feature support tests simply check the value of soundManager.flashVersion
being >= 9. This object has been added in anticipation of additional features with future versions of Flash.
SoundManager Core Events
The following events are attached to the soundManager
global object and are useful for detecting the success/failure of the API's initialisation.
Keep in mind that these core events are effectively asynchronous (ie., they may fire long before or after window.onload()
) and therefore should not be relied on as the "ready" event for starting your application. Use the standard "DOM content loaded" or window load events for your own initialization routines.
SoundManager Object Collections
Requirements + Specifications
Prerequisites (client)
Supported Browsers/Platforms
Javascript-to-flash communication is possible through Flash 8's ExternalInterface feature, which (as I understand) uses a standard browser plugin architecture implemented by each browser manufacturer (see NPAPI.) As a result, the following browsers should be supported:
For reference, see Adobe's ExternalInterface support page which documents supported browsers.
At this time, not all combinations of browser/OS have been tested. Some unlisted configurations may be supported, but have not been explicitly verified to work.
Unsupported Configurations
The following browser/OS combinations have been reported as buggy, or may be unsupported:
Caveats + Limitations / FAQ
Supported sound format (MP3-only, with caveats)
SM2 uses Flash's native Sound object for loading and managing sound, so it is subject to the same limitations that Flash 8 is. Perhaps a design decision, the Flash 8 sound object only supports MP3 files through the loadSound()
ActionScript method. SM2 is not able to load other sound formats, including audio-only SWF files, due to this limitation. Refer to the Flash 8 sound object documentation for details.
MP3 Format Caveats
Additionally, some very low and very high bitrate MP3s, and Variable Bitrate (VBR) MP3s may play either too quickly or too slowly (see "the chipmunk problem"); if you are encountering this issue, try re-encoding at a different bitrate (between 64 kbps and 192 kbps, for example.) Using Constant Bitrate (CBR) encoding may also alleviate this problem.
It has been suggested that sample rates that are neither 22/44 KHz can also contribute to this issue. 44 KHz is the standard CD-spec sample rate, and is recommended for "hi-fi" recordings.
Looping
Perhaps due to the way Flash dynamically loads and decodes MP3 data, seamless looping doesn't seem to be fully implemented. Loops have a noticeable gap between the finish and start. This has been an issue since the original version of SoundManager. Rather than have a broken feature, the funcionality has been omitted until a solid workaround is found.
Flash 8 limitations with multiShot (overlaying/"chorus") effects
Regarding "layering" sounds (calling play()
on a sound multiple times): Even though a multi-shot option can be specified, it does not work with Flash 8; a single instance of a sound can only have one timeline. The current behaviour is that when multiShot
is specified and play()
is called on a currently-playing sound, it will restart from the beginning without an overlay.
However, the API does provide some creative ways (onbeforefinish
for looping, multiple sound objects for multi-shot layering) of working around these Flash limitations.
It should be noted that sounds can loop seamlessly and be layered when linked and exported to SWF from within the Flash IDE, but SoundManager does not support SWF-based audio.
Flash 9 multiShot capabilities
The Flash 9-based version of SoundManager2 can successfully layer sounds via "multiShot", truly playing a single sound multiple times on top of itself. However the API will only call certain timing-related methods such as whileplaying()
for the first play()
"instance" of the sound, to avoid confusion. By contrast, simpler methods such as onfinish()
will be called multiple times, one for each instance of play()
.
ID3 Parsing
ID3 data can differ in formatting, version and subsequently be oddly-parsed by Flash. Values may sometimes be repeated across different fields.
ID3 info seems to fail to load for iTunes 7-edited files, perhaps due to the format or inclusion of album artwork (image data.)
Performance Notes: Caching + RAM Obeservations
Flash appears to use the browser cache (presumably the OS' native, or closest browser,) so the browser's cache size and other settings may affect Flash's cache behaviour. It is safe to assume a 100 MB MP3 will probably not be cached, for example, but a 16 MB one most likely will be.
MP3s appear to be loaded and stored in RAM while loading over HTTP, so memory use needs to be considered for both large MP3s and streaming radio-type applications.
Timing/Latency (JS + Flash, ExternalInterface-related)
Javascript-to-Flash communication is not instantaneous on slower systems, but can be much better on more modern systems. Latency (timing lag/delays) can be noted in some cases from function call to sound execution. It is possible some performance analysis can help to speed up this area for timing-critical applications involving animation etc., but this area has not been thoroughly investigated yet. Brad Neuberg has some notes on speeding up ExternalInterface which may be relevant.
Additionally, MP3 files may contain audible gaps at the beginning or end by default when encoded, even if the source (eg. WAVE) file did not. Using optional "nogap" encoding options with programs such as LAME may help to remedy this.
Revision History show older updates
"Use Responsibly"
A Word Of Vice
Not every button, link, element or paragraph on the web needs to zoom, move, change colour and be noisy, repetitive and annoying all at the same time. Use your own discretion!
Sites which automatically start playing background sound, and/or don't have volume or mute controls are the kind of things you should avoid building. As a developer, gentle reader, you may eventually find yourself in such a situation. Please do your part in enhancing the web with sound if you use SM2, while at the same time keeping it audibly usable. :)
Demo Credits
Background Tile
Modified from squidfingers.com (free patterns)
Sound Sources
MPC Demo Sounds downloaded from AKAI.com
Theme switch: User pempi, freesoundproject (Creative Commons Sampling Plus 1.0 License)
Tab switch: User TicTacShutUp, freesoundproject (Creative Commons Sampling Plus 1.0 License)
General
SoundManager was written to meet a desire to have Javascript-driven sound for interactive web-based projects, and "to make it easy to play MP3s in the browser." It is free for use in both personal and commercial projects (see Licensing.) It was originally developed for personal use and has been packaged with the hopes of being useful to others.
Related Projects
JavaScript/DHTML/Flash MP3 players
If you're searching for an included/embedded-type media player, these related projects might of use.
Links
About
Scott Schiller (contact) is a Front-end Engineer (previously "Web Developer") who builds fun creative and technical stuff on the web - or failing that, tries - when he has free time. He likes building cool things which contribute to, yet enjoys mocking, the Web 2.0 meme. (See How Web 2.0-Aware Are You?)
Debug Output
Live debug info from SoundManager 2, active on this page for demo tests.
If you're seeing errors here or in demos, this info can help in troubleshooting.
Shortcuts
-
- Demos
- Getting Started
- Basic Use
- Download
- Requirements
- Limitations
- Debug Output
- Revision History
- About
API Elements
-
SoundManager
Events
- onload()
- onerror()
Properties
- flashVersion
- url
- altURL
- debugMode
- useConsole
- consoleOnly
- waitForWindowLoad
- allowPolling
- nullURL
- defaultOptions
- features
- flashBlockHelper
- useMovieStar
Methods
- createSound()
- destroySound()
- setPosition()
- pause()
- resume()
- togglePause()
- setVolume()
- mute()
- unmute()
- setPan()
- stop()
- stopAll()
- unload()
- getSoundById()
- loadFromXML()
- supported()
- canPlayURL()
-
SMSound (Sound Object)
Properties (Instance Options)
- sID
- url
- autoLoad
- stream
- autoPlay
- onbeforefinishtime
- onjustbeforefinishtime
- multiShot
- spectrumData
- waveformData
- eqData
- peakData
- position
- pan
- volume
- isMovieStar
Dynamic Properties
- bytesLoaded
- bytesTotal
- position
- duration
- durationEstimate
- loaded
- playState
- paused
- readyState
- didBeforeFinish
- didJustBeforeFinish
Events
- onload()
- whileloading()
- onplay()
- whileplaying()
- onpause()
- onresume()
- onstop()
- onfinish()
- onjustbeforefinish()
- onbeforefinishcomplete()
- onbeforefinish()
- onid3()
- whileloading()
Alternate SoundManager 2 taglines
- Because the web is best experienced with a soundtrack.
- Because clouds need sound, too.
- Put those MP3s to use!
- The sound API javascript has been missing.
- A somewhat sound javascript library.
- Let your voice be heard (unless it sounds funny or awkward.)
- Like Winamp, but for the web. Well, kinda sorta. OK, not really at all.
- For great, and audible justice!
- Leverage APIs and platforms, maybe even monetize some clouds.
- No not flip the lights too many times, lest you disturb the chicken.
- Adding sound to HTML since 2001.
- Now with more leverage!™
- Now with more cloud!™ I mean, cowbell!
Alternate SoundManager 2 descriptions
SoundManagR 2.0 Betatm is a social, long-tail-oriented RIA-based enterprise javascript sound platform which leverages streaming AJAX push technology, Web 2.0, and leveraging. Including plenty of ajaxy goodness, this turn-key, SOA-based and Ajax-enhanced platform will take your Rich Enterprise Applications to the next level, connect the dots and move the needle when mashed up with Web 2.0 collective wisdom of the crowd-wowing features such as drag and drop, auto-complete and real-time performance thanks to enterprise mashup servers.
By leveraging the collective blogosphere and rich folksonomy aspects of the web, it is expected that these supporting technologies may be joining the RIP (Rich Internet Professionals) and DOA (Development Of Asininity) groups within the next few years.*
Disclaimer: This is comedy jokes. Sense of humour required.
Semantic cloud grid platforms! And leveraging!
The definition of Web 3 is a little cloudy, but will probably be semantic, have new buzzwords invented for it to describe not-new things and there will be conferences about it charging at least $2,995 per attendee. Web $3K!
SoundManager Web 3.0 buzzword requirements
- Platforms
- Openness
- Being "Open"
- "Opening up"
- Clouds
- Cloudiness
- Leverage
Of course 2.0 is still cool, but 3.0 is the new ZOMG. SoundManager "Semantic Web Edition" of course is going to leverage the *#@! out of this, as illustrated.
It'll be a "software-as-an-API-as-a-platform-as-a-service" service-type offering, naturally "cloud"-based to be sure.
<jokes />
Jokes aside, your job, gentle reader, is to use this if it works, and go build cool stuff.
SM2 was originally designed as a personal utility, freely shared with the hopes of being useful to others. It's relatively simple to use, and works.


AWS OpsWorks TimeBasedAutoScaling Type
Describes the automatic time-based scaling configuration for an AWS::OpsWorks::Instance resource type. For more information, see SetTimeBasedAutoScaling in the AWS OpsWorks Stacks API Reference.
Syntax
JSON
{ "Friday" : {
Integer
:String
,...
}, "Monday" : {Integer
:String
,...
}, "Saturday" : {Integer
:String
,...
}, "Sunday" : {Integer
:String
,...
}, "Thursday" : {Integer
:String
,...
}, "Tuesday" : {Integer
:String
,...
}, "Wednesday" : {Integer
:String
,...
} }
YAML
Friday:
Integer
:String
Monday:Integer
:String
Saturday:Integer
:String
Sunday:Integer
:String
Thursday:Integer
:String
Tuesday:Integer
:String
Wednesday:Integer
:String
Properties
For each day of the week, the schedule consists of a set of key–value pairs,
where the key is the time period (a UTC hour) of 0
– 23
and the value indicates whether the instance should be online (on
) or offline
(off
) for the specified period.
Friday
-
The schedule for Friday.
Required: No
Type: String to string map
Monday
-
The schedule for Monday.
Required: No
Type: String to string map
Saturday
-
The schedule for Saturday.
Required: No
Type: String to string map
Sunday
-
The schedule for Sunday.
Required: No
Type: String to string map
Thursday
-
The schedule for Thursday.
Required: No
Type: String to string map
Tuesday
-
The schedule for Tuesday.
Required: No
Type: String to string map
Wednesday
-
The schedule for Wednesday.
Required: No
Type: String to string map


Step 1: Initialize the Algorithm： At the beginning of your algorithm, you need to set the start date, the end date and the cash required for the algorithm. For options algorithm, you need to add the equity and the options written on this equity.
def Initialize(self): self.SetStartDate(2016, 1, 1) self.SetEndDate(2016, 3, 1) self.SetCash(100000) equity = self.AddEquity("IBM", Resolution.Minute) option = self.AddOption("IBM", Resolution.Minute) self.symbol = option.Symbol # set our strike/expiry filter for this option chain option.SetFilter(-3, +3, timedelta(0), timedelta(30)) # use the underlying equity as the benchmark self.SetBenchmark(equity.Symbol) self.call = "IBM" # Initialize the call contract
In the initialization process, you need to add a coarse selection for the options contracts. Here we use option.SetFilter(-3, +3, timedelta(0), timedelta(60))
to implement the coarse selection process. If today's market price of underlying stock is $159, the strike prices of IBM options are spaced $5. Then SetFilter will look up the most at the money contract with the strike being K=$160 (Here K might not be $159 since rarely will option be ATM exactly). The filter will look for options with strikes between and including (160-5*3, 160+5*3). The time to expiration of these options is restricted within 60 days from now on.
Step 2: Choose the Call Options Contract: Purchasing the underlying stock for 100 shares or an integer multiple of 100 shares. For options contract, one contract represents 100 shares of stock.
Step 3: Filter out the call options from candidate contracts.
call = [x for x in chain if x.Right == OptionRight.Call]
Step 4: Select the most ATM contract with the furthest expiration date from call options contracts. Sell this call contract for each 100 shares of stock you own. Here you can also choose ITM or OTM contract based on your expected level of profit and the level of risk you can take.
def TradeOptions(self,slice): if slice.OptionChains.Count == 0: return for i in slice.OptionChains: if i.Key != self.symbol: continue chain = i.Value call = [x for x in chain if x.Right == 0] # filter the call options contracts # sorted the contracts according to their expiration dates and choose the ATM options contracts = sorted(sorted(call, key = lambda x: abs(chain.Underlying.Price - x.Strike)), key = lambda x: x.Expiry, reverse=True) if len(contracts) == 0: return contract = contracts[0] self.call = contract.Symbol self.Sell(self.call, 1) # short the call options if self.Portfolio["IBM"].Quantity == 0: self.Buy("IBM",100) # buy 100 the underlying stock self.Log("The stock price at time 0 S(0): {}".format(self.Securities["IBM"].Price))


In this set of articles, you'll learn the core fundamentals of Nest. To get familiar with the essential building-blocks of Nest applications, we'll build a basic CRUD application with features that cover a lot of ground at an introductory level.
We're in love with TypeScript, but above all - we love Node.js. That's why Nest is compatible with both TypeScript and pure JavaScript. Nest is taking advantage of latest language features, so to use a framework with simple JavaScript we need a Babel compiler.
We'll mostly use TypeScript in the examples we provide, but you can always switch the code snippets to vanilla JavaScript syntax.
Please make sure that Node.js (>= 8.9.0) is installed on your operating system.
Setting up a new project is quite simple with the Nest CLI. With npm installed, you can create a new Nest project with the following commands in your OS terminal:
$ npm i -g @nestjs/cli
$ nest new project
The
project
directory will be scaffolded with several core files being located within a
src/
directory.
Following the convention, newly created modules should have their dedicated directory.
main.ts
|
The entry file of the application. It uses
NestFactory to create the Nest application instance. |
app.module.ts
|
Defines
AppModule , the root module of the application. |
app.controller.ts
|
Basic controller sample with a single route. |
The
main.ts
includes an async function, which will
bootstrap our application:
{{ bootstrap }}
To create a Nest application instance, we are using the
NestFactory
. The
create()
method returns an object, which fulfills the
INestApplication
interface, and provides a set of usable methods which are well described in the next chapters.
Once the installation process is complete, you can run the following command to start the HTTP server:
$ npm run start
This command starts the HTTP server on the port defined inside the src/main.ts
file.
While the application is running, open your browser and navigate to http://localhost:3000/
. You should see the Hello world!
message.


Suhyup Mobile Banking System Design UX/UI
Renewal
Click Here to Watch on Behance
Hanbyeol Jang's Behance (Click here)
Hanbyeol Jang's Email<EMAIL_ADDRESS>Title :
Suhyup Mobile Banking System Design UX/UI Renewal
Date : April 16, 2017 (4 Weeks)
Tools : Adobe Photoshop CC 2017, Adobe
Illustrator CC 2017, Adobe Experience Design CC 2017
Designers :
Hyouk Seo (Spemer) - UI Design, Ideation, Concept sketch,
Define problem, User flow, Structure map
Hanbyeol Jang - UI Design, Ideation, Concept sketch


Sherry, Emily Ada
| Birth Name | Sherry, Emily Ada |
| Gender | female |
| Age at Death | about 79 years, 1 month, 18 days |
Narrative
Emily was the daughter of John Sherry & Margaret Williams, she was born abt 1836 in Newcastle on Tyne, U.K. She emigrated abt 1857/1859. She died on 19/2/1915 in Beechworth from Senility & heart falure. She had been an invalid for several years, after she had accidently fallen out of bed & broken her leg, she had been nursed by her daughter. She resided at Three Mile from 1859 to 1915. She was a member of the Church Of England, & was buried in the C of E Section F, Grave 122 in Beechworth Cemetery.
Events
| Event | Date | Place | Description | Sources |
|---|---|---|---|---|
| Birth | about 1836 | Newcastle on Tyne, England | ||
|
|
||||
| Death | 1915-02-19 | Beechworth Vic | ||
|
|
||||
| Burial | 1915-02-20 | Beechworth CofE Cemetery | ||
|
|
Parents
| Relation to main person | Name | Birth date | Death date | Relation within this family (if not by birth) |
|---|---|---|---|---|
| Father | Sherry, John & Margaret | |||
| Sherry, Emily Ada | about 1836 | 1915-02-19 |
Families
Family of Pund, John Martin Dietrich and Sherry, Emily Ada |
||||||||||||||||
| Married | Husband | Pund, John Martin Dietrich ( * 1834-05-22 + 1915-07-22 ) | ||||||||||||||
|
||||||||||||||||
| Children |
| Name | Birth Date | Death Date |
|---|---|---|
| Pund, Louisa Emily Margaret | 1861-06-09 | 1940-12-07 |
| Pund, Percy John Charles“Jack” | 1863-05-03 | 1937-08-06 |
| Pund, Elizabeth Henrietta | 1865-11-17 | 1914-07-13 |
| Type | Value | Notes | Sources |
|---|---|---|---|
| _UID | CCBD29809B45374E80F38949236682280FE2 |
Attributes
| Type | Value | Notes | Sources |
|---|---|---|---|
| _UID | DAB7793BDA4BC54B9D03E2B7FB17ADB628D9 |


Index
A B C D E F G H I J K L M N O P Q R S T U V W Z
All Classes All Packages
All Classes All Packages
All Classes All Packages
P
- page - Variable in class io.anserini.collection.NewYorkTimesCollection.RawDocument
-
This field specifies the page of the section in the paper in which the article appears.
- Pair(String, int) - Constructor for class io.anserini.util.ExtractTopDfTerms.Pair
- parseFile(BufferedReader, File) - Method in class io.anserini.collection.NewYorkTimesCollection.Parser
- parseKeywords(Analyzer, String) - Method in class io.anserini.analysis.TweetTokenizationTest
- parseNYTCorpusDocumentFromBufferedReader(BufferedReader, File) - Method in class io.anserini.collection.NewYorkTimesCollection.Parser
-
Parse a New York Time Document from BufferedReader.
- parseNYTCorpusDocumentFromDOMDocument(File, Document) - Method in class io.anserini.collection.NewYorkTimesCollection.Parser
- parseNYTCorpusDocumentFromFile(File, boolean) - Method in class io.anserini.collection.NewYorkTimesCollection.Parser
-
Parse an New York Times Document from a file.
- parseQuery(String) - Method in class io.anserini.ltr.BaseFeatureExtractor
- parseQuery(String) - Method in class io.anserini.ltr.TwitterFeatureExtractor
- parseQuery(String) - Method in class io.anserini.ltr.WebFeatureExtractor
- Parser() - Constructor for class io.anserini.collection.NewYorkTimesCollection.Parser
- path - Variable in class io.anserini.analysis.vectors.ApproximateNearestNeighborEval.Args
- path - Variable in class io.anserini.analysis.vectors.ApproximateNearestNeighborSearch.Args
- path - Variable in class io.anserini.analysis.vectors.IndexVectors.Args
- path - Variable in class io.anserini.collection.DocumentCollection
- path - Variable in class io.anserini.collection.FileSegment
- path - Variable in enum io.anserini.search.topicreader.TopicReader.Topics
- people - Variable in class io.anserini.collection.NewYorkTimesCollection.RawDocument
-
This field specifies a list of people from a normalized controlled vocabulary that correspond to individuals mentioned in the article.
- PhraseCounter() - Constructor for class io.anserini.ltr.feature.CountBigramPairs.PhraseCounter
- phraseCountMap - Variable in class io.anserini.ltr.feature.CountBigramPairs.PhraseCounter
- PMIFeatureExtractor<T> - Class in io.anserini.ltr.feature.base
-
PMI implemented as PMI(t1, t2) = log (Pr(t1, t2|D) / Pr(t1|D)Pr(t2|D)), where pr are the MLE described on page 22 of Carmel, Yom-Tov 2010
- PMIFeatureExtractor() - Constructor for class io.anserini.ltr.feature.base.PMIFeatureExtractor
- PMIFeatureExtractorTest - Class in io.anserini.ltr
-
Test implementation of PMI
- PMIFeatureExtractorTest() - Constructor for class io.anserini.ltr.PMIFeatureExtractorTest
- populateQueryMaps(List<String>) - Method in class io.anserini.ltr.feature.UnorderedQueryPairsFeatureExtractor
- populateQueryMaps(List<String>) - Method in class io.anserini.ltr.feature.UnorderedSequentialPairsFeatureExtractor
-
Method will dictate which pairs of tokens we will count for can be overridden for different implementations, ei consecutive pairs, or all pairs
- populateQueryPairMap(List<String>) - Method in class io.anserini.ltr.feature.OrderedQueryPairsFeatureExtractor
- populateQueryPairMap(List<String>) - Method in class io.anserini.ltr.feature.OrderedSequentialPairsFeatureExtractor
-
Method is used to determine which pairs we will count for, implementation can be overridden for other features that are computed similarly
- Posting(PostingsEnum) - Constructor for class io.anserini.index.IndexReaderUtils.Posting
-
Constructor wrapping a
PostingsEnum
from Lucene. - printDocumentVector(String) - Method in class io.anserini.index.IndexUtils
- printFeatureForAllDocs(PrintStream) - Method in class io.anserini.ltr.BaseFeatureExtractor
-
Iterates through all the documents and print the features for each of the queries This way we are not iterating over the entire index for each query to save disk access
- printFeatures(PrintStream) - Method in class io.anserini.ltr.BaseFeatureExtractor
-
Prints feature vectors wrt to the qrels, one vector per qrel
- printTermCounts(String) - Method in class io.anserini.index.IndexUtils
- profileImageUrl - Variable in class io.anserini.collection.TweetCollection.Document
- profileImageUrl - Variable in class io.anserini.collection.TweetCollection.Document.TweetObject.User
- pruneToSize(int) - Method in class io.anserini.util.FeatureVector
- pruneToSizeTest() - Method in class io.anserini.util.FeatureVectorTest
- publicationDate - Variable in class io.anserini.collection.NewYorkTimesCollection.RawDocument
-
This field specifies the date of the article�s publication.
- publicationDayOfMonth - Variable in class io.anserini.collection.NewYorkTimesCollection.RawDocument
-
This field specifies the day of the month on which the article was published, always in the range 1-31.
- publicationMonth - Variable in class io.anserini.collection.NewYorkTimesCollection.RawDocument
-
This field specifies the month on which the article was published in the range 1-12 where 1 is January 2 is February etc.
- publicationYear - Variable in class io.anserini.collection.NewYorkTimesCollection.RawDocument
-
This field specifies the year in which the article was published.
- publishDate - Variable in class io.anserini.collection.WashingtonPostCollection.Document
- PUBLISHED_DATE - io.anserini.index.generator.WapoGenerator.WapoField
- publishedDate - Variable in class io.anserini.collection.WashingtonPostCollection.Document.WashingtonPostObject
All Classes All Packages


Class UndoRedoSystem
The undo/redo sytem usually exists as a member in the Project and is accessed via Undo. The project handles the menu commands "MenuId.Edit.Undo" and ""MenuId.Edit.Redo" and calls UndoLastStep() rsp. RedoLastStep(). To add a step to the undo system call AddUndoStep(ReversibleChange)
Inheritance
Inherited Members
Namespace: CADability
Assembly: CADability.dll
Syntax
public class UndoRedoSystem
Fields
| Improve this Doc View SourceisRedoing
Declaration
public bool isRedoing
Field Value
| Type | Description |
|---|---|
| System.Boolean |
Properties
| Improve this Doc View SourceMaxUndoSteps
Set or get the maximum number of undo steps that will be kept in the undo stack. When setting this value the undo stack will be cleared.
Declaration
public int MaxUndoSteps { get; set; }
Property Value
| Type | Description |
|---|---|
| System.Int32 |
UndoFrame
Opens an undo frame, which means that all subsequent calls to AddUndoStep will be considered as a single undo step. Calling UndoLastStep or selecting Undo from the Menu will undo all this steps as a single step. Use the C# "using" construct, since this property supports the IDisposable interface, which closes the undoframe when Dispose is called.
Declaration
public IDisposable UndoFrame { get; }
Property Value
| Type | Description |
|---|---|
| System.IDisposable |
Methods
| Improve this Doc View SourceAddUndoStep(ReversibleChange)
Adds an undo step to the undo stack.
Declaration
public void AddUndoStep(ReversibleChange step)
Parameters
| Type | Name | Description |
|---|---|---|
| ReversibleChange | step | the step |
CanRedo()
Returns true, if there is a step on the redo stack
Declaration
public bool CanRedo()
Returns
| Type | Description |
|---|---|
| System.Boolean |
CanUndo()
Returns true, if there is a step on the undo stack
Declaration
public bool CanUndo()
Returns
| Type | Description |
|---|---|
| System.Boolean |
Clear()
Remove all undo and redo actions from the action stack.
Declaration
public void Clear()
ClearContext()
After several changes "using contextFrame" you can reset the context so that the following changes with the same context generate a new undo step.
Declaration
public void ClearContext()
CloseUndoFrame(Object)
Closes the previously opened undo frame. See OpenUndoFrame().
Declaration
public void CloseUndoFrame(object UndoFrame)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Object | UndoFrame | the result from OpenUndoFrame |
ContextFrame(Object)
All calls to AddUndoStep(ReversibleChange) that appeare inside the same context are considered to belong to the same action and override the previous call from the same context. So only the last call will be saved in the undo stack. Use ContextFrame with the C# "using" schema or call IDisposable.Dispose() to close the frame.
Declaration
public IDisposable ContextFrame(object context)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Object | context | any kind of object |
Returns
| Type | Description |
|---|---|
| System.IDisposable | the IDisposable interface for the using schema |
IgnoreLastStep()
The top undostep on the undo stack will be ignored.
Declaration
public bool IgnoreLastStep()
Returns
| Type | Description |
|---|---|
| System.Boolean | success: true, failure: false |
OpenUndoFrame()
Opens an undo frame: all subsequent calls to AddUndoStep(ReversibleChange) are considered as a single undo step until CloseUndoFrame(Object) is being called. You can use the property UndoFrame instead. UndoFrames may be nested.
Declaration
public object OpenUndoFrame()
Returns
| Type | Description |
|---|---|
| System.Object | an object that will be needed for the corresponding CloseUndoFrame call. |
PeekLastRedoStep()
Returns the next redo command if there are any. This will be either a ReversibleChange object or a untyped ArrayList. Returns null if there are no redosteps available
Declaration
public object PeekLastRedoStep()
Returns
| Type | Description |
|---|---|
| System.Object | The next undo command |
PeekLastUndoStep()
Returns the next undo command if there are any. This will be either a ReversibleChange object or a untyped ArrayList. Returns null if there are no undosteps available
Declaration
public object PeekLastUndoStep()
Returns
| Type | Description |
|---|---|
| System.Object | The next undo command |
RedoLastStep()
Executes the redo of the last step. Ususlly called by the project when handling the "MenuId.Edit.Redo" command.
Declaration
public bool RedoLastStep()
Returns
| Type | Description |
|---|---|
| System.Boolean | success: true, failure: false |
UndoLastStep()
Executes the undo of the last step. Ususlly called by the project when handling the "MenuId.Edit.Undo" command.
Declaration
public bool UndoLastStep()
Returns
| Type | Description |
|---|---|
| System.Boolean | success: true, failure: false |
Events
| Improve this Doc View SourceBeginContinousChangesEvent
Declaration
public event UndoRedoSystem.BeginContinousChangesDelegate BeginContinousChangesEvent
Event Type
| Type | Description |
|---|---|
| UndoRedoSystem.BeginContinousChangesDelegate |
ClosingUndoFrameEvent
Declaration
public event UndoRedoSystem.ClosingUndoFrameDelegate ClosingUndoFrameEvent
Event Type
| Type | Description |
|---|---|
| UndoRedoSystem.ClosingUndoFrameDelegate |
EndContinousChangesEvent
Declaration
public event UndoRedoSystem.EndContinousChangesDelegate EndContinousChangesEvent
Event Type
| Type | Description |
|---|---|
| UndoRedoSystem.EndContinousChangesDelegate |
OpeningUndoFrameEvent
Declaration
public event UndoRedoSystem.OpeningUndoFrameDelegate OpeningUndoFrameEvent
Event Type
| Type | Description |
|---|---|
| UndoRedoSystem.OpeningUndoFrameDelegate |


Welcome to the
Click here for more about
this website
Click here to go to the MCHS
website
Click here to go to the MCC
of OGS website
|
CDs of
important |
1846
Andrews, Elijah Andrews
Spirit of Democracy,
Died On Wednesday, 16th inst., at Graysville,
Mr. Elijah Andrews, formerly Auditor of this county.
Braddee, John F. Braddee
Spirit of Democracy,
Dr. John F. Braddee, of Uniontown,
Fayette county, died on Friday night last, in the
Western Penitentiary in
At the head of a well-organized band of counterfeiters and
robbers, he was, for a time, the very terror of the neighborhood in which he
resided but, so cunning, withal, that time and talents were required to fasten
upon him the evidence of his guilt. To Dr. Kenedy,
then mail agent the community is indebted for his detection, which
notwithstanding his wealth, was speedily followed by a conviction, which
dispersed his gang, and rid the country of so great a nuisance.
During his illness, Braddee made
a full confession of his misdeeds, acknowledging the justice of his fate, and
giving particulars not before known. If we can
possibly obtain this it will appear in our columns.
Dr. Braddee, at his death, was
about forty years of age, and previous to his conviction, had been accustomed
to an active life, which doubtless rendered his confinement the more severe.
His wife, who clung to him in adversity, with all the
affection of womans nature, is now residing at
Carrothers, James Carrothers
Source:
Spirit of Democracy February 28, 1846
Died - At his residence
in this township on Saturday evening, the 21st inst., Mr. JAMES
CARROTHERS, at the advanced age of 72 years. Mr. C. was one of the earliest settlers of
this county.
Carrothers, James Carrothers
2nd obit
Spirit of Democracy,
Died At his residence in the
township, on Saturday evening, the 21st inst., MR. JAMES CARROTHERS,
at the advanced age of 72 years.
Mr. C. was one of the earliest settlers of this county.
Colledge, Elizabeth Colledge
Spirit of Democracy,
Died On the 27th inst.,
ELIZABETH, wife of Jabez B. Colledge,
of this township.
Crane, Commodore Crane
Spirit of Democracy,
DEATH OF Commodore Crane The death of Commodore Crane, late
chief of the Bureau of Ordinance and Hydrography, at Washington City, which
resulted from his own hand, on the 19th inst., has cast a gloom over
a large and respectable circle of friends. He had given evidence of a morbid
mind for some time previous, and had resigned his place the week previous, and
had resigned his place the week previous under the monsmanin
that he was about to die.
Commodore Crane was in his 62d year, and leaves a wife but
no children. Saturday Courier
Davis,
Spirit of Democracy,
Died In this place on Saturday the
17th inst., after a lingering illness, MISS FRANCES DAVIS, aged 18.
Davis, William Gibson Davis
Spirit of Democracy,
Among the names of the volunteers killed at
The deceased was the eldest son of the late Capt. David S.
Davis, of this place, and was only in his 20th year.
He was among the first to enroll himself
among the volunteers for the Mexican war, and left here, a corporal of the
Dayton Rifleman. As the best evidence of good conduct as a soldier, he was
promoted to the rank of Orderly Sergeant of his company, in which capacity he
acted at the time of his death.
The following particulars of his death are communicated by
Dr. Egry, and by which it appears that he was
murdered by the Mexican lancers. The Dr. States that
Davis was one of them; his body, with that of another
member of his company, was found four days afterwards, stripped and shockingly
mangled by the lancers, a large body of whom scoured the plain putting to death
all the wounded and defenseless they could find.
The Doctor saw the body of
Young Davis had lived in
Hixenbaugh, John Hixenbaugh
Spirit of Democracy,
Died At his residence in this township, on Thursday last,
MR. JOHN HIXENBAUGH, formerly of Green county, Pa.
Holden, Ezra Holden
Spirit of Democracy,
MR. EZRA HOLDEN, one of the editors and proprietors of the
Philadelphia Saturday Courier, died in
Manahan,
Beal Manahan
Source: Spirit of Democracy February 21, 1846
Died on Sunday evening
the 15th inst, at his residence near this place, Mr. BEAL MANAHAN,
an aged and respected citizen.
McNulty, C. J. McNulty
Spirit of Democracy,
DEATH OF COLONEL MCNULTY from letters received in this
city, we learn that Colonel C. J. McNulty of the Mount Vernon Guards, died on
board the steamboat Jamestown, when about twenty-five miles above Randolph,
Tennessee, at half-past six o clock, P.M., on the 12th of July.
He was unwell when the boat left
Nothing indeed was omitted, that humanity and skill could
perform.
The remains of Col. McNulty were to have been buried at
Morris, Charles W. Morris
Spirit of Democracy,
OFF VERA CRUZ, NOV. 5,
1846
Sir: herewith is transmitted a copy of a letter from Com.
Perry, accompanied by copies of other communication, giving a detailed account
of his operations with a detachment from the squadron in the river of Tabasco.
The objects of the expedition have been fully accomplished,
and, by the destruction or capture of all the enemy s vessels, a check has been
given to a commerce, by which munitions of was, were no doubt, introduced into
Mexico from the neighboring province of Yucatan. Much praise is due to Commodore
Perry for the skill and judgement manifested
throughout the whole expedition.
The department will learn with regret the death of Lieut.
Charles W. Morris, which
took place on the first instant, on board the
I am , very
respectfully
Your obedient servant,
D. Connor
Commanding Home Squadron
Okey, Curtis Weir Okey
Spirit of Democracy,
Died On Wednesday the 17th
inst., after a lingering illness of nearly four months, CURTIS WEIR, son of
William and Lucinda M. Okey, aged about 5 months.

Page, Captain Page
Spirit of Democracy,
Captain Page, of the 4th, U. S. Infantry, who
was wounded at the battle of Palto Alto, died on
board of the steamer
He was a gallant officer, and his numerous friends have the
satisfaction of knowing that he fully discharged his duties. STATESMAN
Pearce,
Mary Pearce
Source: Spirit of Democracy January 24, 1846
Died on Thursday, the 15th
inst, Mrs. MARY PEARCE, consort of Mr. Isaac Pearce, of this township, aged
about 50.

Peter
Pfeifer died March 30, 1846. He was born June 21, 1831, the son of Henry and
Barbara Pfeifer.
Ridgely,
Spirit of Democracy,
DEATH OF A BRAVE AND DISTINGUISHED OFFICER
A friend informs us, that he has seen by an endorsement on
a paper from on board the
The above was received at the post office of
Capt. Ridgley was killed by the fall of his horse, riding
rapidly down one of the steep hills at
Smith,
Jeremiah Smith
Source:
Spirit of Democracy February 14, 1846
Died
on Wednesday, the 11th inst. In Wayne Township,
Mr. JEREMIAH SMITH, in the 45th year of his age.
Stillwell, Daniel Stillwell
Smith, Caroline Smith
Spirit of Democracy,
DROWNED Daniel Stillwell, Esq., an old and respectable
citizen of Muskingum county, together with Miss
Caroline Smith, his grand-daughter, were drowned a few days since while
attempting to cross the
Taylor, William Taylor
Spirit of Democracy,
Jan. 17th Mr. Dromgools
announced the death of HON. WILLIAM TAYLOR, member of Congress from
Mr. Taylor died in
Jan. 19th The funeral of the HON. WILLIAM TAYLOR taking place today,
no business was transacted in either House.
Weber,
David Weber
David
Weber died April 8, 1846 in
Last
modified Oct. 12, 2009 by reh
Click here for the Short-Cut Table of Contents