Skip to content

Commit

Permalink
Add slicer plugin (#6857)
Browse files Browse the repository at this point in the history
* extremly basic slicer, note playback and gui works

* very simple peak detection working

* basic phase vocoder implementation, no effects yet

* phase vocoder slight rewrite

* pitch shifting works more or less

* basic timeshift working

* PV timeshift working (no pitch shift)

* basic functions work (UI, editing, playback)

* slice editor Ui working

* fundamental  functionality done

* Everything basic works fully

* cleanup and code guidelines

* more file cleanup

* Tried fixing multi slice playback (still broken)

* remove includes, add license

* code factoring issues

* more code factoring

* fixed multinote playback and bpm check

* UI performance improvments + code style

* initial UI changes + more code style

* threadsafe(maybe) + UI finished

* preparing for dinamic timeshifting

* dynamic timeshifting start

* realtime time scaling (no stereo)

* stereo added, very slow

* playback performance improvments

* Roxas new UI start

* fixed cmake

* Waveform UI finished

* Roxas UI knobs + layout

* Spectral flux onset detection

* build + PV fixes

* clang-format formatting

* slice snap + better defaults

* windows build fixes

* windows build fixes part 2

* Fixed slice bug + Waveform code cleanup

* UI button text + reorder + file cleanup

* Added knob colors

* comments + code cleanup

* var names fit convention

* PV better windowing

* waveform zoom

* Minor style fixes.

* Initial artistic rebalancing of the plugin artwork.

* PV phase ghosting fix

* Use base note as keyboard slice start

* Good draft of Artwork, renamed bg to artwork

* Removed soft glow.

* Fixed load crashes + findSlices cleanup

* Added sync button

* added pitch shifting, sometimes crashes

* pitch fixes

* MacOs build fixes

* use linear interpolation

* copyright + div by 0 fixes

* Fixed rare crash + name changes + license

* review: memcpy, no array, LMMS header, name change

* static constexpr added

* static vars to public + LMMS guards

* remove references in classes

* remove constexpr and parent pointer in waveform

* std::array for fft

* fixed wrong name in style

* remove c style casts

* use src_process

* use note vector for return

* Moved PhaseVocoder into core

* removed PV from plugin

* remove pointers in waveform

* clang-format again

* Use std:: + review suggestions

Co-authored-by: Dalton Messmer <[email protected]>
Co-authored-by: saker <[email protected]>

* More review changes

* new signal slot + more review

* Fixed pitch shifting

* Fixed buffer overflow in PV

* Fixed mouse bug + better empty screen

* Small editor refactor + improvments

* Editor playback visual + small fixes

* Roxas UI improvments

* initial timeshift removing

* Remove timeshift + slice refactor

* Removed unused files

* Fix export bug

* Fix zoom bug

* Review changes sakertooth#2

* Remove most comments

* Performance + click to load

* update PlaybackState + zerocross snapping

* Fix windows build issue

* Review + version

* Fixed fade out bug

* Use cosine interpolation

* Apply suggestions from code review

Co-authored-by: Dalton Messmer <[email protected]>

* More review changes

* Renamed files

* Full sample only at base note

* Fix memory leak

Co-authored-by: Dalton Messmer <[email protected]>

* Style fixes

---------

Co-authored-by: Katherine Pratt <[email protected]>
Co-authored-by: Dalton Messmer <[email protected]>
Co-authored-by: saker <[email protected]>
  • Loading branch information
4 people authored Nov 11, 2023
1 parent 8b2769b commit c779521
Show file tree
Hide file tree
Showing 18 changed files with 1,370 additions and 2 deletions.
1 change: 1 addition & 0 deletions cmake/modules/PluginList.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ SET(LMMS_PLUGIN_LIST
Sf2Player
Sfxr
Sid
SlicerT
SpectrumAnalyzer
StereoEnhancer
StereoMatrix
Expand Down
8 changes: 8 additions & 0 deletions data/themes/classic/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -899,6 +899,14 @@ lmms--gui--SidInstrumentView lmms--gui--Knob {
qproperty-lineWidth: 2;
}

lmms--gui--SlicerTView lmms--gui--Knob {
color: rgb(162, 128, 226);
qproperty-outerColor: rgb( 162, 128, 226 );
qproperty-innerRadius: 1;
qproperty-outerRadius: 11;
qproperty-lineWidth: 3;
}

lmms--gui--WatsynView lmms--gui--Knob {
qproperty-innerRadius: 1;
qproperty-outerRadius: 7;
Expand Down
Binary file added data/themes/default/lcd_19purple.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/themes/default/lcd_19purple_dot.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 8 additions & 0 deletions data/themes/default/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -943,6 +943,14 @@ lmms--gui--SidInstrumentView lmms--gui--Knob {
qproperty-lineWidth: 2;
}

lmms--gui--SlicerTView lmms--gui--Knob {
color: rgb(162, 128, 226);
qproperty-outerColor: rgb( 162, 128, 226 );
qproperty-innerRadius: 1;
qproperty-outerRadius: 11;
qproperty-lineWidth: 3;
}

lmms--gui--WatsynView lmms--gui--Knob {
qproperty-innerRadius: 1;
qproperty-outerRadius: 7;
Expand Down
6 changes: 4 additions & 2 deletions include/Clipboard.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,10 @@
#ifndef LMMS_CLIPBOARD_H
#define LMMS_CLIPBOARD_H

#include <QMap>
#include <QDomElement>
#include <QMap>

#include "lmms_export.h"

class QMimeData;

Expand All @@ -44,7 +46,7 @@ namespace lmms::Clipboard
bool hasFormat( MimeType mT );

// Helper methods for String data
void copyString( const QString & str, MimeType mT );
void LMMS_EXPORT copyString(const QString& str, MimeType mT);
QString getString( MimeType mT );

// Helper methods for String Pair data
Expand Down
10 changes: 10 additions & 0 deletions plugins/SlicerT/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
INCLUDE(BuildPlugin)

INCLUDE_DIRECTORIES(${FFTW3F_INCLUDE_DIRS})
LINK_LIBRARIES(${FFTW3F_LIBRARIES})

INCLUDE_DIRECTORIES(${SAMPLERATE_INCLUDE_DIRS})
LINK_DIRECTORIES(${SAMPLERATE_LIBRARY_DIRS})
LINK_LIBRARIES(${SAMPLERATE_LIBRARIES})

BUILD_PLUGIN(slicert SlicerT.cpp SlicerT.h SlicerTView.cpp SlicerTView.h SlicerTWaveform.cpp SlicerTWaveform.h MOCFILES SlicerT.h SlicerTView.h SlicerTWaveform.h EMBEDDED_RESOURCES "${CMAKE_CURRENT_SOURCE_DIR}/*.png")
Loading

0 comments on commit c779521

Please sign in to comment.