├── .gitignore ├── LICENSE ├── README.md ├── book ├── _config.yml ├── _toc.yml ├── assets │ ├── cjs.jpeg │ ├── figures │ │ ├── audio-effects │ │ │ ├── FIR_equation.svg │ │ │ ├── IIR_equation.svg │ │ │ ├── IR.svg │ │ │ ├── allpass_filter_equation.svg │ │ │ ├── bandpass.svg │ │ │ ├── comb_filter_equation.svg │ │ │ ├── compression.svg │ │ │ ├── distortion_equation.svg │ │ │ ├── expander.svg │ │ │ ├── highpass.svg │ │ │ ├── inserts.svg │ │ │ ├── limiter.svg │ │ │ ├── lowpass.svg │ │ │ ├── lowshelf.svg │ │ │ ├── noise-gate.svg │ │ │ ├── panning_45db_equation.svg │ │ │ ├── panning_constant_equation.svg │ │ │ ├── panning_laws.svg │ │ │ ├── panning_linear_equation.svg │ │ │ ├── panning_range_equation.svg │ │ │ ├── peak.svg │ │ │ └── sends.svg │ │ ├── channel-strip.svg │ │ ├── ddsp.svg │ │ ├── diffmst-dmc.jpg │ │ ├── diffmst-main_datagen.jpg │ │ ├── diffmst-main_modified.jpg │ │ ├── dmc-context.svg │ │ ├── dmc.svg │ │ ├── evaluation │ │ │ ├── APE_DMC.svg │ │ │ ├── APE_FxNorm.svg │ │ │ ├── APE_WaveUNet_Drums.svg │ │ │ ├── APE_example.svg │ │ │ ├── go-listen.svg │ │ │ └── webMUSHRA.svg │ │ ├── fxnorm │ │ │ ├── crafx2.png │ │ │ ├── fxnorm_diagram1.png │ │ │ ├── fxnorm_diagram2.png │ │ │ └── fxnorm_listening_test_results.png │ │ ├── mix-wave-u-net.svg │ │ ├── mixing │ │ │ ├── Flare-Kick-Bass-Sidechaining-2.png │ │ │ ├── Flare-Kick-Bass-Sidechaining.png │ │ │ ├── Flare-Snare-Processing-2.png │ │ │ ├── Flare-Snare-Processing.png │ │ │ ├── Flare-Vocal-Processing.png │ │ │ ├── Logic-Mixer.png │ │ │ └── Making-Music.jpg │ │ ├── proxy-network.svg │ │ └── types-of-systems.svg │ ├── gb.jpeg │ ├── logo.png │ ├── mamr.jpeg │ └── ssv.jpeg ├── landing-page.md ├── part_1 │ ├── 01_music-production.md │ ├── 02_audio-effects.md │ └── audio-effects │ │ ├── 01_panning.md │ │ ├── 02_equalization.md │ │ ├── 03_compression.md │ │ └── 04_reverberation.md ├── part_2 │ ├── 01_imp.md │ ├── 02_problem.md │ ├── 03_diffsp.md │ ├── 04_methods.md │ ├── 05_loss-functions.md │ └── methods │ │ ├── 01_mixwaveunet.md │ │ ├── 02_dmc.md │ │ ├── 03_fxnorm.md │ │ └── 04_diffmst.md ├── part_3 │ ├── 01_inference.ipynb │ ├── 02_datasets.ipynb │ ├── 03_models.ipynb │ ├── 04_training.ipynb │ └── 05_evaluate.ipynb ├── part_4 │ ├── 01_evaluation.md │ ├── 02_listening-tests.md │ └── 03_evaluate.ipynb ├── part_5 │ ├── 01_future-directions.md │ ├── 02_conclusion.md │ ├── 03_references.md │ └── references.bib └── requirements.txt └── scripts ├── build-book.sh └── upload-book.sh /.gitignore: -------------------------------------------------------------------------------- 1 | book/_build/ 2 | env/ 3 | .DS_store 4 | .ipynb_checkpoints -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/README.md -------------------------------------------------------------------------------- /book/_config.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/_config.yml -------------------------------------------------------------------------------- /book/_toc.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/_toc.yml -------------------------------------------------------------------------------- /book/assets/cjs.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/cjs.jpeg -------------------------------------------------------------------------------- /book/assets/figures/audio-effects/FIR_equation.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/figures/audio-effects/FIR_equation.svg -------------------------------------------------------------------------------- /book/assets/figures/audio-effects/IIR_equation.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/figures/audio-effects/IIR_equation.svg -------------------------------------------------------------------------------- /book/assets/figures/audio-effects/IR.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/figures/audio-effects/IR.svg -------------------------------------------------------------------------------- /book/assets/figures/audio-effects/allpass_filter_equation.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/figures/audio-effects/allpass_filter_equation.svg -------------------------------------------------------------------------------- /book/assets/figures/audio-effects/bandpass.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/figures/audio-effects/bandpass.svg -------------------------------------------------------------------------------- /book/assets/figures/audio-effects/comb_filter_equation.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/figures/audio-effects/comb_filter_equation.svg -------------------------------------------------------------------------------- /book/assets/figures/audio-effects/compression.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/figures/audio-effects/compression.svg -------------------------------------------------------------------------------- /book/assets/figures/audio-effects/distortion_equation.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/figures/audio-effects/distortion_equation.svg -------------------------------------------------------------------------------- /book/assets/figures/audio-effects/expander.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/figures/audio-effects/expander.svg -------------------------------------------------------------------------------- /book/assets/figures/audio-effects/highpass.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/figures/audio-effects/highpass.svg -------------------------------------------------------------------------------- /book/assets/figures/audio-effects/inserts.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/figures/audio-effects/inserts.svg -------------------------------------------------------------------------------- /book/assets/figures/audio-effects/limiter.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/figures/audio-effects/limiter.svg -------------------------------------------------------------------------------- /book/assets/figures/audio-effects/lowpass.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/figures/audio-effects/lowpass.svg -------------------------------------------------------------------------------- /book/assets/figures/audio-effects/lowshelf.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/figures/audio-effects/lowshelf.svg -------------------------------------------------------------------------------- /book/assets/figures/audio-effects/noise-gate.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/figures/audio-effects/noise-gate.svg -------------------------------------------------------------------------------- /book/assets/figures/audio-effects/panning_45db_equation.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/figures/audio-effects/panning_45db_equation.svg -------------------------------------------------------------------------------- /book/assets/figures/audio-effects/panning_constant_equation.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/figures/audio-effects/panning_constant_equation.svg -------------------------------------------------------------------------------- /book/assets/figures/audio-effects/panning_laws.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/figures/audio-effects/panning_laws.svg -------------------------------------------------------------------------------- /book/assets/figures/audio-effects/panning_linear_equation.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/figures/audio-effects/panning_linear_equation.svg -------------------------------------------------------------------------------- /book/assets/figures/audio-effects/panning_range_equation.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/figures/audio-effects/panning_range_equation.svg -------------------------------------------------------------------------------- /book/assets/figures/audio-effects/peak.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/figures/audio-effects/peak.svg -------------------------------------------------------------------------------- /book/assets/figures/audio-effects/sends.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/figures/audio-effects/sends.svg -------------------------------------------------------------------------------- /book/assets/figures/channel-strip.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/figures/channel-strip.svg -------------------------------------------------------------------------------- /book/assets/figures/ddsp.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/figures/ddsp.svg -------------------------------------------------------------------------------- /book/assets/figures/diffmst-dmc.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/figures/diffmst-dmc.jpg -------------------------------------------------------------------------------- /book/assets/figures/diffmst-main_datagen.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/figures/diffmst-main_datagen.jpg -------------------------------------------------------------------------------- /book/assets/figures/diffmst-main_modified.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/figures/diffmst-main_modified.jpg -------------------------------------------------------------------------------- /book/assets/figures/dmc-context.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/figures/dmc-context.svg -------------------------------------------------------------------------------- /book/assets/figures/dmc.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/figures/dmc.svg -------------------------------------------------------------------------------- /book/assets/figures/evaluation/APE_DMC.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/figures/evaluation/APE_DMC.svg -------------------------------------------------------------------------------- /book/assets/figures/evaluation/APE_FxNorm.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/figures/evaluation/APE_FxNorm.svg -------------------------------------------------------------------------------- /book/assets/figures/evaluation/APE_WaveUNet_Drums.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/figures/evaluation/APE_WaveUNet_Drums.svg -------------------------------------------------------------------------------- /book/assets/figures/evaluation/APE_example.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/figures/evaluation/APE_example.svg -------------------------------------------------------------------------------- /book/assets/figures/evaluation/go-listen.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/figures/evaluation/go-listen.svg -------------------------------------------------------------------------------- /book/assets/figures/evaluation/webMUSHRA.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/figures/evaluation/webMUSHRA.svg -------------------------------------------------------------------------------- /book/assets/figures/fxnorm/crafx2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/figures/fxnorm/crafx2.png -------------------------------------------------------------------------------- /book/assets/figures/fxnorm/fxnorm_diagram1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/figures/fxnorm/fxnorm_diagram1.png -------------------------------------------------------------------------------- /book/assets/figures/fxnorm/fxnorm_diagram2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/figures/fxnorm/fxnorm_diagram2.png -------------------------------------------------------------------------------- /book/assets/figures/fxnorm/fxnorm_listening_test_results.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/figures/fxnorm/fxnorm_listening_test_results.png -------------------------------------------------------------------------------- /book/assets/figures/mix-wave-u-net.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/figures/mix-wave-u-net.svg -------------------------------------------------------------------------------- /book/assets/figures/mixing/Flare-Kick-Bass-Sidechaining-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/figures/mixing/Flare-Kick-Bass-Sidechaining-2.png -------------------------------------------------------------------------------- /book/assets/figures/mixing/Flare-Kick-Bass-Sidechaining.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/figures/mixing/Flare-Kick-Bass-Sidechaining.png -------------------------------------------------------------------------------- /book/assets/figures/mixing/Flare-Snare-Processing-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/figures/mixing/Flare-Snare-Processing-2.png -------------------------------------------------------------------------------- /book/assets/figures/mixing/Flare-Snare-Processing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/figures/mixing/Flare-Snare-Processing.png -------------------------------------------------------------------------------- /book/assets/figures/mixing/Flare-Vocal-Processing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/figures/mixing/Flare-Vocal-Processing.png -------------------------------------------------------------------------------- /book/assets/figures/mixing/Logic-Mixer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/figures/mixing/Logic-Mixer.png -------------------------------------------------------------------------------- /book/assets/figures/mixing/Making-Music.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/figures/mixing/Making-Music.jpg -------------------------------------------------------------------------------- /book/assets/figures/proxy-network.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/figures/proxy-network.svg -------------------------------------------------------------------------------- /book/assets/figures/types-of-systems.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/figures/types-of-systems.svg -------------------------------------------------------------------------------- /book/assets/gb.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/gb.jpeg -------------------------------------------------------------------------------- /book/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/logo.png -------------------------------------------------------------------------------- /book/assets/mamr.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/mamr.jpeg -------------------------------------------------------------------------------- /book/assets/ssv.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/assets/ssv.jpeg -------------------------------------------------------------------------------- /book/landing-page.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/landing-page.md -------------------------------------------------------------------------------- /book/part_1/01_music-production.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/part_1/01_music-production.md -------------------------------------------------------------------------------- /book/part_1/02_audio-effects.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/part_1/02_audio-effects.md -------------------------------------------------------------------------------- /book/part_1/audio-effects/01_panning.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/part_1/audio-effects/01_panning.md -------------------------------------------------------------------------------- /book/part_1/audio-effects/02_equalization.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/part_1/audio-effects/02_equalization.md -------------------------------------------------------------------------------- /book/part_1/audio-effects/03_compression.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/part_1/audio-effects/03_compression.md -------------------------------------------------------------------------------- /book/part_1/audio-effects/04_reverberation.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/part_1/audio-effects/04_reverberation.md -------------------------------------------------------------------------------- /book/part_2/01_imp.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/part_2/01_imp.md -------------------------------------------------------------------------------- /book/part_2/02_problem.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/part_2/02_problem.md -------------------------------------------------------------------------------- /book/part_2/03_diffsp.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/part_2/03_diffsp.md -------------------------------------------------------------------------------- /book/part_2/04_methods.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/part_2/04_methods.md -------------------------------------------------------------------------------- /book/part_2/05_loss-functions.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/part_2/05_loss-functions.md -------------------------------------------------------------------------------- /book/part_2/methods/01_mixwaveunet.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/part_2/methods/01_mixwaveunet.md -------------------------------------------------------------------------------- /book/part_2/methods/02_dmc.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/part_2/methods/02_dmc.md -------------------------------------------------------------------------------- /book/part_2/methods/03_fxnorm.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/part_2/methods/03_fxnorm.md -------------------------------------------------------------------------------- /book/part_2/methods/04_diffmst.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/part_2/methods/04_diffmst.md -------------------------------------------------------------------------------- /book/part_3/01_inference.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/part_3/01_inference.ipynb -------------------------------------------------------------------------------- /book/part_3/02_datasets.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/part_3/02_datasets.ipynb -------------------------------------------------------------------------------- /book/part_3/03_models.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/part_3/03_models.ipynb -------------------------------------------------------------------------------- /book/part_3/04_training.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/part_3/04_training.ipynb -------------------------------------------------------------------------------- /book/part_3/05_evaluate.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/part_3/05_evaluate.ipynb -------------------------------------------------------------------------------- /book/part_4/01_evaluation.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/part_4/01_evaluation.md -------------------------------------------------------------------------------- /book/part_4/02_listening-tests.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/part_4/02_listening-tests.md -------------------------------------------------------------------------------- /book/part_4/03_evaluate.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/part_4/03_evaluate.ipynb -------------------------------------------------------------------------------- /book/part_5/01_future-directions.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/part_5/01_future-directions.md -------------------------------------------------------------------------------- /book/part_5/02_conclusion.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/part_5/02_conclusion.md -------------------------------------------------------------------------------- /book/part_5/03_references.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/part_5/03_references.md -------------------------------------------------------------------------------- /book/part_5/references.bib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/book/part_5/references.bib -------------------------------------------------------------------------------- /book/requirements.txt: -------------------------------------------------------------------------------- 1 | jupyter-book 2 | matplotlib 3 | numpy 4 | -------------------------------------------------------------------------------- /scripts/build-book.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/scripts/build-book.sh -------------------------------------------------------------------------------- /scripts/upload-book.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dl4am/tutorial/HEAD/scripts/upload-book.sh --------------------------------------------------------------------------------