- (#562) Fixed TypeScript declarations for
Point.update()andSegment.update()(@chrisn)
- (#561) Added
view.setAxisLabelColor()andview.setAxisGridlineColor()methods (@chrisn)
-
(#548) Added
zoomview.updateevent, which is emitted when the time range visible in the zoomable waveform view changes (@chrisn) -
(#545) Fixed error on clicking to insert a segment at the edge of the waveform view (@chrisn)
-
(#544) Added segment
markersandoverlayoptions, to individual segments to be created as marker-style or overlay-style (@chrisn) -
(#533) Clicking on a segment marker now brings that marker to the top of the z-order, to allow it to be dragged (@chrisn)
-
(#546) The deprecated
peaks.readyevent has now been removed. You must now provide a callback function toPeaks.init()(@chrisn) -
(#550) Fixed
touchendevent handling, by registering it as non-passive (@chrisn) -
(#551) Fixed point and segment marker font defaults. These now use the
fontFamily,fontSize, andfontStyleoptions (@chrisn) -
(#553) Fixed
segments.dblclickevents (@chrisn) -
The waveform cache is now cleared on calling
peaks.destroy()(@chrisn) -
Fixed a bug where points and segments would not be displayed in the zoomable waveform view after the view's width is changed (@chrisn)
-
The waveform views now initialise themselves to the correct position if the playhead time is not zero when
Peaks.init()is called (@chrisn)
- (#536) Prevent the zoomview from scrolling when set to
autozoom level (@chrisn)
-
(#536) Fixed
zoomview.enableAutoScroll()(@chrisn) -
(#536) Prevent the zoomview from scrolling when set to
autozoom level (@chrisn)
- (#529) Added
playheadWidthoption (@chrisn)
-
(#524) Fixed
'insert-segment'waveform drag mode when clicking on an existing segment (@chrisn) -
(#523) Added check for
MEDIA_ERR_SRC_NOT_SUPPORTEDerror inPeaks.init(), in case the media element source uses an unsupported file format (@chrisn)
- (#524) When the segment drag mode is either
'no-overlap'or'compress', clicking on an existing segment in'insert-segment'waveform drag mode will no longer create a new overlapping segment (@chrisn)
-
(#491) Fixed handling of HTTP 206 response statuses, when requesting audio or waveform data (@chrisn)
-
(#518) Fixed TypeScript declarations (@jdelStrother)
- (#513) Fixed
view.setZoom()waveform scale calculation. This bug would manifest as a misalignment of time axis labels and point and segment markers, because the waveform can only be an integer number of samples per pixel (@chrisn)
-
Added
playheadBackgroundColorandplayheadPaddingoptions (@amber-huo) -
Fixed zoomview mouse drag handler (@chrisn)
-
Added
enablePointsandenableSegmentsoptions (@chrisn) -
Added
axisTopMarkerHeightandaxisBottomMarkerHeightoptions (@chrisn) -
Fixed point and segment rendering in the overview waveform, if the audio duration is different to the waveform duration (@chrisn)
-
Fixed point marker dragging (@chrisn)
-
Removed window
resizeevent handling. Instead, you should use ResizeObserver and callfitToContainer()(@chrisn) -
Added
views.getScrollbar()method, to allow the scrollbar to be resized (@chrisn) -
Removed undocumented
dataUriDefaultFormatoption (@chrisn)
-
(#499) Added a new
zoomview.setWaveformDragMode()method, which enables users to create new segments by clicking and dragging in the zoomable waveform view. The segment id value can now be set usingsegment.update()(and point ids can be updated similarly). A new event is emitted,segments.insertafter the user has inserted a new segment by dragging in the waveform view.The following event handlers now receive event objects, see doc/migration-guide.md and doc/API.md for details:
points.add,points.removesegments.add,segments.removepoints.enter,segments.enter,segments.exitzoom.update(@chrisn)
-
(#498) Fixed changing the
editableflag on point markers (@chrisn) -
(#500) Fixed "Zoom level too low" error, which can happen with short duration audio files when the overview window tries to resample the audio to fit the available width (@chrisn)
-
The custom marker
draggableoption has been renamed toeditable, to be consistent with the point and segment attribute with the same name. Refer to doc/migration-guide.md for details of how to update your application (@chrisn)
-
(#498) The custom marker
timeUpdated()method has been removed, and replaced by a more general purposeupdate()method, which is called when any of the point or segment attributes have been updated (including when markers are dragged). Refer to doc/migration-guide.md for details of how to update your application (@chrisn) -
(#497) Added zoomview
autoScrollandautoScrollOffsetoptions (@chrisn) -
(#88) Added
enablePointsandenableSegmentoptions, to allow you to control whether points and segments are shown in the zoomview and overview waveforms (@chrisn)
-
(#490) Added
preventViewEvent()method for point and segment events. This allows you to preventzoomview.*oroverview.*click events from asegments.*orpoints.*click event handler (@chrisn) -
(#489) Improved event documentation, see doc/API.md (@chrisn)
-
(#494) Enable use of Konva v9.x (@jdelStrother)
- (#488) Added
markerflag tosegments.dragstart,segments.dragend, andsegments.draggedevents, so you can detect whether a segment start or end marker, or the entire segment is being dragged (@chrisn)
-
(#484) Validate container elements after loading the waveform (@chrisn)
-
(#484) Calling
peaksInstance.destroy()will now abort an in-progress HTTP request to fetch audio or waveform data (@chrisn) -
(#483) Enable point and segment marker updates while dragging (@chrisn)
-
(#481) Improved point/segment attribute validation to prevent overwriting internal Point or Segment properties (@chrisn)
-
Added FAQ documentation, see doc/faq.md (@chrisn)
- (#481) Fixed TypeScript declarations (@chrisn)
-
(#433) Prevent resizing the waveform canvas to zero width (@chrisn)
-
(#479) Reduced the width of the hit region for resizing overlay segments (@chrisn)
-
(#480) Adjacent segments can now have the same start or end time when dragging a segment start or end marker over an adjacent segment in
no-overlapmode (@chrisn)
-
(#477) Added
segments.mousedownandsegments.mouseupevents (@chrisn) -
(#478) Fixed dragging of point markers (@chrisn)
-
Added
view.setMinSegmentDragWidth()method to set the minimum segment width to apply when dragging segment handles or when using thecompressdrag mode (@chrisn)
-
Allow the playhead to be dragged when within a segment (@chrisn)
-
Fixed segment handle dragging, when the segment becomes zero width (@chrisn)
-
(#473) Added
getWaveformData()method (@chrisn) -
segments.dragstartandsegments.dragendevents are now emitted when when dragging entire segments (@chrisn)
- Replaced the
segmentOptions.styleoption with separate options to enable segment markers and overlays (@chrisn)
-
(#341) Check media element source during initialisation (@chrisn)
-
(#360) Fixed
setSource()where the media element haspreload="none"(@chrisn) -
(#451) Disable use of Worker when using the
webAudio.audioBufferoption inPeaks.init()orinstance.setSource()(@chrisn) -
Removed deprecated options:
containers- usezoomview.containerandoverview.containeroverviewWaveformColor-use overview.waveformColoroverviewHighlightOffset-use overview.highlightOffsetoverviewHighlightColor-use overview.highlightColorzoomWaveformColor-use zoomview.waveformColor(@chrisn)
-
Segment dragging improvements:
- Increased overlay segment handle size, to make resizing segments easier
- The segment being dragged is now moved to the top of the z-order, so that it remains on top of any other segments that the handle is dragged over (@chrisn)
- Fixed dragging of custom point and segment markers (@chrisn)
-
(#443) Added new options to control segment appearance. Two segment styles are now supported: marker style (as in previous versions), and overlay style.
Segment options are now controlled using the new
segmentOptionssettings inPeaks.init(), and settings can be controlled separately for the overview and zoomable waveform views, using theoverview.segmentOptionsandzoomview.segmentOptionssettings.Some segment options have been removed, please refer to doc/migration-guide.md for details of how to update your application (@chrisn)
-
Added scrollbar (@chrisn)
-
(#467) Added new config options to style the overview waveform highlight region:
highlightStrokeColor,highlightOpacity, andhighlightCornerRadius(@jakiestfu) -
Fixed zoomview mouse drag handler (@chrisn)
-
(#443) Check container element height is non-zero in
Peaks.init()(@chrisn) -
(#461) Fixed handling of deprecated
zoomviewWaveformColorandoverviewWaveformColoroptions (@chrisn) -
Fixed TypeScript declarations (@chrisn)
- (#460) Fixed TypeScript declarations, which were causing problems using Peaks.js in Angular apps (@chrisn)
- (#454) Added
captureVerticalScrolloption toview.setWheelMode(). This option makes the zoomview respond to all mousewheel / touchpad events. It means that the user no longer has to press Shift to scroll the waveform, but it also means that using the mousewheel while the pointer is over the waveform will no longer scroll the page (@chrisn)
- (#457) Improve horizontal scrolling on trackpad on Mac OS (@jdelStrother)
-
(#454) Fixed mousewheel scrolling on Mac OS. The new behaviour is:
- Vertical trackpad gesture scrolls the page
- Horizontal trackpad gesture (with pointer over the waveform view) scrolls the waveform
- Shift + either horizontal or vertical trackpad gesture (with pointer over the waveform view) scrolls the waveform
- Mousewheel scrolls the page
- Shift + mousewheel (with pointer over the waveform view) scrolls the waveform (@chrisn)
-
Improved support for page mode in mousewheel events (@chrisn)
-
(#374) Improved waveform rendering. The waveform now shows a horizontal line where the audio amplitude is zero (@chrisn)
-
Added
setSource()documentation for custom player objects (@chrisn) -
Fixed
waveformCacheTypeScript definition (@tscz)
-
(#450) Fixed waveform view initialization. This required a changed to how custom player objects are initialized, to be async. If your application uses a custom player object, this is a breaking API change. Please refer to doc/migration-guide.md for details of how to update your application (@chrisn)
-
The waveform cache is now cleared on calling
setSource(). This would cause the waveform to not be updated when it should (@chrisn)
- (#447) Playhead dragging in the zoomable and overview waveform views is now limited to only the primary mouse button (@chrisn)
-
(#427) Changed all mouse and click event handlers to also expose the MouseEvent or PointerEvent. This is a breaking API change, please refer to doc/migration-guide.md for details of how to update your application (@chrisn)
-
(#441) Added
zoomview.contextmenu,overview.contextmenu,points.contextmenu, andsegments.contextmenuevents (@rowild)
- (#442) Fixed
player.isPlaying()(@chrisn)
-
(#430) Fixed scrolling of non-editable waveform segments (@chrisn)
-
The playhead in the zoomable waveform view can now be dragged to seek the playhead position. There is a new option,
playheadClickTolerancethat controls how close you have to click to drag the playhead rather than scroll the waveform view (@chrisn) -
Added some features to speed up changing the zoom level:
-
Added a cache of waveform data at each zoom level used. This avoids unnecessary re-calculation, but increases memory usage. This is enabled by default and can be disabled by setting the
waveformCacheoption tofalse -
Instead of resampling the original waveform data to the target zoom level, resample from the next lowest available zoom level (@chrisn)
-
-
(#421) Added
view.enableSeek()function to allow seeking the playback position by clicking in the waveform view to be disabled (@chrisn) -
(#417) Fixed
loggeroption (@rowild, @chrisn) -
(#418, #423) Fixed documentation links (@rowild)
-
(#310) Updated to use ES module format, Replaced browserify with Rollup and removed Bower support (@chrisn, @oncletom)
-
(#392) Fixed
MouseDragHandlerunder- and over-reporting mousemove events (@jdelStrother) -
Updated Konva to 8.1.4. This made some
draw()calls unnecessary, so these have been removed (@chrisn) -
(#368) Konva.js and waveform-data.js are now included as peer dependencies. This means that projects using Peaks.js need to also import compatible versions of these libraries into their build. Peaks.js also now only imports the Konva modules that it uses, which significantly reduces bundle size (@chrisn)
-
Use Rollup to build the custom markers demo page (@chrisn)
-
(#387) Added a new
Peaks.init()options structure (@chrisn) -
(#340) Added
showAxisTimeLabels,formatAxisTime, andformatPlayheadTimeoptions, to allow customization of the time labels shown next to the playhead and on the time axis (@chrisn) -
(#181) Added
playedWaveformColorzoomview and overview options, andview.setPlayedWaveformColor()method (@chrisn) -
(#317) Added
view.setScrollMode()function to allow scrolling the zoomable waveform using a mousewheel or trackpad gesture (@chrisn, @ffxsam, @jdelStrother) -
(#392) Added
view.scrollWaveform()function (@jdelStrother, @chrisn) -
(#402)
points.add()andsegments.add()now return the objects added (@chrisn) -
(#318, #324) Added various click events:
points.dblclick,segments.click,zoomview.click, andoverview.click(@chrisn) -
(#396) Documentation improvements (@chrisn, @Liscare, @rowild)
-
(#390) Fixed segment labels being overlapped by waveform segments, to ensure labels are visible (@chrisn)
-
(#348) An error is now returned if
Peaks.init()orsetSource()is called with 16-bit waveform data (@chrisn) -
(#408) Added
peaks.once()to the documented API (@chrisn) -
(#408) Changed
player.playSegment()to return a Promise (@chrisn) -
(#363) Replaced remaining uses of
player.playevent withplayer.playing(@chrisn) -
Refactored to remove some code duplication (@jdelStrother)
-
Improved TypeScript definitions (@jdelStrother, @chrisn)
-
Removed the
containerandtemplateoptions. Please use thecontainersoptions instead (@chrisn) -
Removed the
heightoption, as waveforms are automatically sized to fit the container element (@chrisn) -
Removed
containers.zoomas alternative for thecontainers.zoomviewoption (@chrisn) -
(#356) Use integer values for mouse positions and waveform frame offset (@chrisn)
-
Updated waveform-data.js to v4.1.0 (@chrisn)
-
(#353) Fixed setWaveformColor() to allow switching between fixed and gradient colors (@chrisn)
-
Changed
Peaks.init()to return undefined. Instead of using thePeaks.init()return value, you should now pass a callback parameter (@chrisn) -
Updated use of Konva.FastLayer, removes deprecation warnings (@chrisn)
-
Refactored SegmentsLayer and SegmentShape (@chrisn)
-
Removed undocumented
deprecationLoggeroption (@chrisn)
-
(#380) Fixed cue events following renaming the player.play event in 0.24.0 (@chrisn)
-
Minor code optimization in PlayheadLayer (@chrisn)
-
Removed colors.css dependency (@chrisn)
-
Simplified template and container option checks in Peaks.init() (@chrisn)
-
Updated demo pages to use the containers option in Peaks.init() (@chrisn)
-
(#353) Added color gradient support for waveforms (@Christilut)
-
(#359) Fixed setSource() so that the mediaUrl option is only required if using a media element (@Christilut)
-
(#360) Fixed waveform initialisation where the media element has preload="none" (@chrisn)
-
(#363) Changed playSegment() to use requestAnimationFrame() (@ffxsam)
-
(#363) The player.play event has been renamed to player.playing, for consistency with the corresponding HTMLMediaElement event (@chrisn)
-
(#367) Added player.ended event. This is emitted when the media element emits an "ended" event, and when playSegment() reaches the end of the segment (@ffxsam)
-
(#369) Fixed documentation (@OmarShehata)
-
Various fixes to the demo pages (@chrisn)
- Version bump to update npm release (@chrisn)
-
(#325) Added fontFamily, fontStyle, fontSize config options (@chrisn)
-
(#321) Fixed waveform rendering so that waveforms are no longer inverted (@chrisn)
-
Removed unnecessary waveform re-render after dragging to scroll the zoomable waveform view (@chrisn)
-
(#329) Added looped playback option to
segments.playSegment()(@chrisn) -
(#336) Allow users to set custom point and segment attributes (@chrisn)
-
(#332) Adjust playhead time label position when the playhead is at the right edge of the waveform display (@Karoid)
-
(#328) Fixed package.json to work on Windows (@chrisn)
-
(#314) Added
playeroption to allow use of external media player libraries. See customizing.md for details (@tscz) -
(#104) Fixed initialization error for short media files, where the overview waveform is shorter than the container width (@chrisn)
-
(#31) Added player events to the public API, and renamed events for consistency (e.g.,
player_seektoplayer.seeked). See README.md for the new event names (@chrisn) -
Replaced EventEmitter2 with EventEmitter3, to reduce file size (@chrisn)
-
(#319) Added
timeLabelPrecisionoption andview.setTimeLabelPrecision()method (@Dananji) -
(#308) Added
waveformDataoption, which allows Peaks.js to use pre-computed waveform data, instead of fetching the data from a web server or computing it using the Web Audio API (@is343) -
Removed deprecated code, including:
-
segments.readyevent (usepeaks.readyor pass a callback toPeaks.init()instead) -
points.add()no longer accepts atimestampoption (usetimeinstead) -
points.add()andsegments.add()now only accept an object or an array of objects with point or segment data -
time.setCurrentTime()andtime.getCurrentTime()methods (useplayer.seek()andplayer.getCurrentTime()instead) (@chrisn)
-
-
Fixed error handling to use
Peaks.init()callback consistently instead of throwing errors in some cases (@chrisn) -
Enabled code coverage test reports (@chrisn)
-
Updated dependencies (@chrisn)
-
(#309) Fixed rendering of non-editable segment marker handles (@chrisn)
-
Reduced size of npm and Bower installs by removing unnecessary files (@chrisn)
-
Refactored to simplify code structure. All source files are now placed in a single 'src' directory, and several files have been renamed for consistency (@chrisn)
-
(#306) Updated TypeScript declarations (@tscz)
-
Documented
zoomview.setStartTime()(@chrisn)
-
(#300) Redesigned the marker customization API. Refer to customizing.md for detailed documentation on how to customize the appearance of point and segment marker handles (@chrisn)
-
Added a
view.fitToContainer()method that resizes the waveform and point and segment marker handles to fit the available space (@chrisn) -
Added zoomview.setStartTime() method (@chrisn)
-
The
inMarkerColorandoutMarkerColorconfiguration options have been renamed tosegmentStartMarkerColorandsegmentEndMarkerColor(@chrisn) -
(#305) Added a
zoomview.setZoom()method that gives applications greater flexibility in setting the zoom level. The zoom level can be set to (a) a number of samples per pixel, as per the existingpeaks.zoom.setZoom()API, (b) a number of seconds fit to the available width, or (c) the entire audio duration fit to the available width (@chrisn)
-
(#302) Fixed segment handle dragging so that dragging the start marker does not change the segment end time, and vice versa (@chrisn)
-
Added
view.enableMarkerEditing()method (@chrisn) -
Updated Typescript definitions (@is343, @chrisn)
-
(#262) Increased hit region for segment mouseenter and mouseleave events, no longer requires placing the mouse directly over the waveform image (@chrisn)
-
(#263, #283) Added
destroyZoomview()anddestroyOverview()methods (@chrisn)
-
(#293) Added
overview.dblclickandzoomview.dblclickevents (@chrisn) -
Fixed Typescript definitions (@tscz, @chrisn)
-
(#290) Fixed
setAmplitudeScale()to update all waveform segments (@chrisn) -
Disabled warnings from Konva.js
-
Fixed demo pages for Webkit
- (#289) Fixed
overlapHighlightOffsetbehaviour when value too large (@jodonnell)
- (#288) Added
overviewHighlightOffsetoption, and renamed theoverviewHighlightRectangleColoroption tooverviewHighlightColor(@jodonnell)
-
(#285) The axis labels are now correctly rendered on top of the waveform (@chrisn)
-
(#286) Fixed point/segment marker creation function options, and updated documentation (@chrisn)
-
(#284) Fixed
peaks.destroy()(@chrisn) -
Updated waveform-data.js to v3.1.0 (@chrisn)
- (#287) Added
segment.dragstartandsegment.dragendevents. Thesegment.draggedevent now receives a boolean parameter that indicates whether the start or end marker is being dragged (@Spidy88)
-
(#281) Fixed TypeScript definitions (@tscz)
-
Updated demo pages to use updated
Peaks.init()API options (@chrisn)
-
(#228, #240) Added ability to intialise a Peaks instance given an AudioBuffer
-
The API for creating waveforms using the Web Audio API has changed. Instead of passing an
audioContextoption toPeaks.init()orpeaksInstance.setSource(), you should now pass awebAudioobject, for example:const options = { // ... etc webAudio: { audioContext: new AudioContext(), multiChannel: true } } Peaks.init(options, function(err, peaksInstance) { ... });
-
The (undocumented)
waveformBuilderOptionsoption has also been removed. If you were usingamplitude_scale, please useview.setAmplitudeScale()instead. Thescaleoption is now determined by the lowestzoomLevelssetting -
Added
view.enableAutoScroll()method
- (#194) Added multi-channel waveform support (@chrisn)
- Updated waveform-data.js to v3.0.0 (@chrisn)
-
(#243, #268) Added
emitCueEventsoption that causes Peaks.js to emitpoints.enter,segments.enter, andsegments.exitevents during playback or on seeking (@gmarinov, @chrisn) -
(#92) Added
setSource()method to change the media element's source URL and update the waveform (@chrisn)
-
(#211) Added
view.setAmplitudeScale()method, and documented new API methods for creating and accessing the waveform views (@chrisn) -
(#270) Fixed segment rendering after updating
startTimeorendTime(@chrisn) -
(#267) Added option to run specific test files by glob pattern (@gmarinov)
-
(#247) Added
update()methods to allow changes to segment and point properties (@zachsa) -
(#250) Added
segments.mouseenter,segments.mouseleave, andsegments.clickevents (@zachsa) -
(#258) Added new
containersoption, to allow creation of zoomable and non-zoomable ('overview') waveform views. Added example pages, in the 'demo' folder (@chrisn) -
Updated to Konva 3.3.3 (@chrisn)
-
(#249, #251, #252) Enabled touch events for waveform container and point and segment markers (@rfrei)
-
Updated to Konva 3.1.6 and waveform-data.js 2.1.2, and updated development dependencies (@chrisn)
-
Updated TypeScript declarations (@evanlouie)
- Added TypeScript declarations (@evanlouie)
- Version bump after updating npm access token (@chrisn)
-
Refactored waveform rendering code, added WaveformShape class (@chrisn)
-
Removed background layer, to reduce the number of Konva layers used (@chrisn)
-
Avoid building waveform data multiple times when using the Web Audio API (@cky917)
-
Fixed use of Web Audio API in Safari (@ibobobo)
-
Fixed point drag event handling (@anthonytex, @chrisn)
-
Allow Peaks objects to be created using the new operator (@chrisn)
-
The
points.add()andsegments.add()methods now operate atomically. This change ensures that the input point/segment objects are validated before storing, so that if an exception is thrown, we leave the state of the points/segments array as it was before the function was called (@chrisn) -
Added
points.mouseenterandpoints.mouseleaveevents. Also addedpoints.dblclick, which replaces the (previously undocumented)pointDblClickHandlerconfig option (@markjongkind, @chrisn) -
Added
points.dragstartandpoints.dragendevents, and renamedpoints.draggedtopoints.dragmove. The (also undocumented)pointDragEndHandlerconfig option is deprecated (@chrisn)
-
Ensure resources used by
Playerobject are released on callingpeaks.destroy()(@chrisn) -
points.remove()andsegments.remove()no longer throw an exception if multiple matching markers are found. The removed markers are returned in an array (@chrisn) -
Updated to eventemitter2 v5.0.1, also updated development dependencies (@chrisn)
-
(#104) Prevent "zoom level too low" exception when using the Web Audio API to compute the waveform data (@chrisn)
-
(#213) Added
withCredentialsoption to allow users to send credentials when requesting waveform data files using XHR (@bennypowers) -
(#212) Fixed
points.removeAll()andsegments.removeAll()(@chrisn) -
Fixed a bug where the time axis would show the wrong times next to the axis markers (@chrisn)
-
Peaks.js is now available via cdnjs. Added a link to the ReadMe (@extend1994)
- (#112) Fixed a race condition where an audio element that contains
one or more source elements is added to a page, and
Peaks.init()is called before the audio element has selected which source to use. Also improved error reporting, to avoid a misleading "Unable to determine a compatible dataUri format for this browser" error (@chrisn)
- (#207) Prevent jump in playhead motion after starting playback (@chrisn, @jdelStrother)
- Version bump to refresh npm and browserify cached releases (@chrisn)
-
(#201) Added
showPlayheadTimeoption to control display of the current time position next to the playhead marker (@chrisn) -
(#202) Keep playhead layer in sync with timeupdate events (@jdelStrother)
-
(#199) The playhead position is now correctly updated in the zoomable view after calling
player.seek()(@chrisn) -
Added parameter validation to
player.seek()(@chrisn) -
Show the time when dragging point markers (@chrisn)
-
Use a fixed set of default colors instead of random colors for segments (@chrisn)
-
Simplified
createSegmentMarker,createSegmentLabel, andcreatePointMarkerfunctions (@chrisn) -
Refactored
WaveformPointsandWaveformSegmentsclasses (@chrisn) -
Refactored
PointsLayerandSegmentsLayer_removeInvisiblePointsmethods (@chrisn)
- Fixed bug in IE11 which caused adding segment objects to fail (@chrisn)
-
(#184, #116) Fixed waveform zoom and scrolling behaviour. Note that the animated zoom feature no longer works, and so static zoom is now always used, regardless of the
zoomAdapteroption (@chrisn) -
Refactored
WaveformSegmentsandWaveformPointsto separate the UI code into newSegmentsLayerandPointsLayerclasses (@chrisn) -
Points and segments are now represented by
PointandSegmentobjects, rather than plain JavaScript objects (@chrisn) -
(#117) Improved rendering speed of points and segments (@chrisn)
-
Points and segments with duplicate ids are no longer allowed (@chrisn)
-
The
segments.readyevent is deprecated, usepeaks.readyinstead (@chrisn) -
Added
add,remove,remove_all, anddraggedevents for points and segments (@chrisn) -
The demo page now allows points and segments to be removed (@chrisn)
-
Added
ZoomControllerandTimeControllerclasses to simplify main.js (@chrisn) -
Added
PlayheadLayerclass and refactoredWaveformOverviewandWaveformZoomViewso that the playhead update code is reused between both (@chrisn) -
Added
peaks.points.getPoint()method (@chrisn) -
Changed the keyboard interface so that the left/right arrow keys scroll the waveform by 1 second, and shift+left/right by one screen width (@chrisn)
-
Improved error messages (@chrisn)
-
Removed Node.js v4 and added v8 in Travis CI builds. Please use v6.0 or later to build Peaks.js (@chrisn)
-
Many other refactorings and code improvements (@chrisn)
-
Fixed deprecation logging from time API functions (@chrisn)
-
Added parameter validation to
player.playSegment()(@chrisn)
-
(#192) Added
player.playSegment()method (@craigharvi3) -
Deprecated the time API; use the player API instead (@chrisn)
-
Display optional point label text (@chrisn)
-
Added documentation for the points API (@chrisn)
-
Build ChangeLog manually (@chrisn)
-
Updated to waveform-data.js v2.0.1 (@chrisn)
-
(#182) Modified build to output a single UMD module; supporting installation with package managers or the script-tag (@craigjohnwright)
-
Another fix to mouse dragging behaviour (@chrisn)
-
(#187) Fixed segment handle rendering (@chrisn)
-
(#167) Added audioContext config option (@chrisn, @oncletom, @dodds-cc)
-
(#165) Fixed mouse dragging behaviour (@chrisn)
-
(#161) More reliable clicking behaviour, don't turn seek click off on vertical mouse movement (@Develliot)
-
(#159) Added JSDoc comments (@chrisn)
-
(#157) Register mouse up/move events to the window rather than the waveform stages (@jdelStrother)
-
(#156) Refactored player and keyboard handler objects (@chrisn)
-
(#155) Refactored
WaveformPointsandWaveformSegments(@chrisn)
- (#150) Add Peaks.destroy method (@jdelStrother)
-
(#151) Report XHR errors (@jdelStrother)
-
(#152) Use the npm version of waveform-data.js (@oncletom)
-
Fixed bug in
defaultInMarker()which caused the wrong colour to be used for left-hand segment markers (@chrisn) -
Renamed keyboard events (@chrisn)
-
Updated to EventEmitter v1.0.x (@chrisn)
-
Updated to Konva v1.0.x (@chrisn)
-
Fixed adding points from Peaks.init() (@chrisn)
-
(#144) Use
Konva.FastLayerfor drawing waveforms (@jdelStrother) -
(#143) Improve
addSegment()method signature (@jdelStrother) -
(#142) Serve media from Karma during tests (@jdelStrother)
-
(#141) Add/remove points and segments by ID (@jdelStrother)
-
(#140) Expose browserified version as package.json "main" property (@oncletom)
-
(#139) Fixed keyboard right-shift bug (@chrisn)
-
Numerous other refactorings (@chrisn)
-
(#127) Don't add waveform layer to the overview stage twice and ensure the UI layer is on top (@johvet)
-
(#125) Node 0.12 and iojs compatibility (@oncletom)
-
(#120) Explicit segment draw on drag resize (@oncletom)
-
(#121) Make more colors configurable (@ziggythehamster)
- (#123) Allow alternate zoom adapters, add a static (non-animated) zoom adapter, add more safety checks (@johvet, @ziggythehamster)
-
(#122) Fix typo, seeking instead of seaking (@johvet)
-
(#113) Make the axis label and gridline colors configurable (@ziggythehamster)
-
(#111) Initial error logging function for async errors (@oncletom)
-
(#108) fix for bug #105 (@un-chein-andalou)
- (#101) deamdify and browserify back to optionalDependencies (@oncletom)
-
Replaced example image in README.md
-
Fixed time-out errors in Travis CI builds
- (#86) Fix Kinetic bower path in README (@oncletom)
-
(#72) Upgrade to Kinetic 5.10 (@oncletom)
-
(#84) Switch from SauceLabs to BrowserStack (@oncletom)
-
(#81) beforeEach -> before, afterEach -> after (@oncletom)
-
(#78) Added
peaks.points.removeAll()method (@oncletom)
-
(#79) EventEmitter2 prototype workaround (@oncletom)
-
(#75) Fixed Travis + IE9 tests (@oncletom)
- (#74) 0.3 Build System Fix (@oncletom)
- (#71) Replaced eventEmitter with eventemitter2 (@oncletom)
- (#62) Added waveformZoomReady event (after segments and points initialized) (@chainlink)
- Automatically deamdify files with browserify
-
(#66) Simplified build system (@oncletom)
-
(#63) Fixed bug when using grunt build for vanilla JS (Kinetic Not Found) (@chainlink)
-
(#52) Custom height for each container (@bbcrd)
-
Refactored waveform rendering code (@oncletom)
-
View height can be set through CSS (@oncletom)
-
Added smooth zoom animation (@mgrewal, @oncletom)
-
Use waveform-data.js v1.2.0 (@chainlink)
-
Added Points interface (@chainlink)
-
(#51) Added functions to delete segments (@oncletom)
-
Aliased
segments.addSegment()assegments.add()(@oncletom)
-
(#50) Peaks build system (@oncletom)
-
Added Web Audio builder from waveform-data.js
-
(#43) Fixed "SYNTAX_ERR: DOM Exception 12" error in Safari (@oncletom)
-
(#28) Segment improvement (@oncletom)
-
(#36) Ability to work with a video element as well (@oncletom)
-
(#39) Fixing the
FAILED Peaks.segments "before each" hookbreaking CI (@oncletom) -
(#38) Removing the requirejs builder (@oncletom)
-
(#37) Added
segments.readyevent (@oncletom) -
(#35) Simplifying the AMD tree (@oncletom)
-
(#32) Resize event is assigned to window and not the Peaks instance (@oncletom)
-
(#33) Enforcing strict mode (@oncletom)
-
(#26) Removed sass dependency (@oncletom)
-
(#20) Removed JST/Underscore dependencies (@oncletom)
-
(#19) Added tests for each element of the public API (@oncletom)
-
(#15) Partially removed jQuery dependency (@oncletom)
-
(#14) Fixed {zoom,over}view mouseup is not releasing
document.addEventListener("mouseup")(@oncletom) -
(#11) Handling multiple Peaks instances (@oncletom)
-
(#10) Added
peaks.time.setCurrentTime()(@oncletom) -
Rewrote the README and added screenshot (@oncletom)
-
Fixed playhead positioning after click/drag etc (@oncletom)
-
Removed dependency on underscore (@oncletom)
-
Added parameter validation (@oncletom)
-
Added test cases for segments API and zoom levels (@oncletom)
-
Removed bootstrap module (@oncletom)
- (#30) Clicking in the zoomview should just change the playhead position (@oncletom)
-
(#25) Dragging zoomview bug (low priority) (@oncletom)
-
(#24) Out of Range bug (@oncletom)
- (#22) Seeking not working (@oncletom)
-
(#17) Moving the playhead in views now updates the audio element currentTime (@oncletom)
-
(#16) Fixed IE9 bug with createSegment (@oncletom)
-
(#3) Added TravisCI + Saucelabs (@oncletom)
-
(#13) Migrated to Mocha+Chai for tests (@oncletom)
-
(#12)
element.currentTimeside-effect (@oncletom) -
(#5) Segments performance boost (@oncletom)
- (#1) bower install failing for me (@oncletom)