Skip to content

Commit

Permalink
split PeakPickingProcessor into onsets and notes
Browse files Browse the repository at this point in the history
also fixes #175
  • Loading branch information
Sebastian Böck committed Feb 26, 2017
1 parent 67ecf7f commit 0f24011
Show file tree
Hide file tree
Showing 12 changed files with 267 additions and 125 deletions.
6 changes: 3 additions & 3 deletions bin/CNNOnsetDetector
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import argparse
from madmom.processors import IOProcessor, io_arguments
from madmom.audio.signal import SignalProcessor
from madmom.features import ActivationsProcessor
from madmom.features.onsets import CNNOnsetProcessor, PeakPickingProcessor
from madmom.features.onsets import CNNOnsetProcessor, OnsetPeakPickingProcessor


def main():
Expand Down Expand Up @@ -59,7 +59,7 @@ def main():
# signal processing arguments
SignalProcessor.add_arguments(p, norm=False, gain=0)
# peak picking arguments
PeakPickingProcessor.add_arguments(p, threshold=0.54, smooth=0.05)
OnsetPeakPickingProcessor.add_arguments(p, threshold=0.54, smooth=0.05)

# parse arguments
args = p.parse_args()
Expand Down Expand Up @@ -87,7 +87,7 @@ def main():
out_processor = ActivationsProcessor(mode='w', **vars(args))
else:
# perform peak picking on the onset activations
peak_picking = PeakPickingProcessor(**vars(args))
peak_picking = OnsetPeakPickingProcessor(**vars(args))
# output handler
from madmom.utils import write_events as writer
# sequentially process them
Expand Down
11 changes: 6 additions & 5 deletions bin/ComplexFlux
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@ from madmom.audio.filters import FilterbankProcessor, LogarithmicFilterbank
from madmom.audio.spectrogram import (LogarithmicSpectrogramProcessor,
SpectrogramDifferenceProcessor)
from madmom.features import ActivationsProcessor
from madmom.features.onsets import SpectralOnsetProcessor, PeakPickingProcessor
from madmom.features.onsets import (SpectralOnsetProcessor,
OnsetPeakPickingProcessor)


def main():
Expand Down Expand Up @@ -62,9 +63,9 @@ def main():
LogarithmicSpectrogramProcessor.add_arguments(p, log=True, mul=1, add=1)
SpectrogramDifferenceProcessor.add_arguments(p, diff_ratio=0.5,
diff_max_bins=3)
PeakPickingProcessor.add_arguments(p, threshold=0.25, pre_max=0.01,
post_max=0.05, pre_avg=0.15, post_avg=0,
combine=0.03, delay=0)
OnsetPeakPickingProcessor.add_arguments(p, threshold=0.25, pre_max=0.01,
post_max=0.05, pre_avg=0.15,
post_avg=0, combine=0.03, delay=0)
# parse arguments
args = p.parse_args()

Expand All @@ -91,7 +92,7 @@ def main():
out_processor = ActivationsProcessor(mode='w', **vars(args))
else:
# perform peak picking of the onset function
peak_picking = PeakPickingProcessor(**vars(args))
peak_picking = OnsetPeakPickingProcessor(**vars(args))
from madmom.utils import write_events as writer
# sequentially process them
out_processor = [peak_picking, writer]
Expand Down
11 changes: 6 additions & 5 deletions bin/LogFiltSpecFlux
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@ from madmom.audio.filters import FilterbankProcessor, LogarithmicFilterbank
from madmom.audio.spectrogram import (LogarithmicSpectrogramProcessor,
SpectrogramDifferenceProcessor)
from madmom.features import ActivationsProcessor
from madmom.features.onsets import SpectralOnsetProcessor, PeakPickingProcessor
from madmom.features.onsets import (SpectralOnsetProcessor,
OnsetPeakPickingProcessor)


def main():
Expand Down Expand Up @@ -63,9 +64,9 @@ def main():
LogarithmicSpectrogramProcessor.add_arguments(p, log=True, mul=1, add=1)
SpectrogramDifferenceProcessor.add_arguments(p, diff_ratio=0.5,
positive_diffs=True)
PeakPickingProcessor.add_arguments(p, threshold=1.6, pre_max=0.01,
post_max=0.05, pre_avg=0.15, post_avg=0,
combine=0.03, delay=0)
OnsetPeakPickingProcessor.add_arguments(p, threshold=1.6, pre_max=0.01,
post_max=0.05, pre_avg=0.15,
post_avg=0, combine=0.03, delay=0)
# parse arguments
args = p.parse_args()

Expand All @@ -88,7 +89,7 @@ def main():
out_processor = ActivationsProcessor(mode='w', **vars(args))
else:
# perform peak picking of the onset function
peak_picking = PeakPickingProcessor(**vars(args))
peak_picking = OnsetPeakPickingProcessor(**vars(args))
from madmom.utils import write_events as writer
# sequentially process them
out_processor = [peak_picking, writer]
Expand Down
6 changes: 3 additions & 3 deletions bin/OnsetDetector
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import argparse
from madmom.processors import IOProcessor, io_arguments
from madmom.audio.signal import SignalProcessor
from madmom.features import ActivationsProcessor
from madmom.features.onsets import RNNOnsetProcessor, PeakPickingProcessor
from madmom.features.onsets import RNNOnsetProcessor, OnsetPeakPickingProcessor


def main():
Expand Down Expand Up @@ -58,7 +58,7 @@ def main():
# signal processing arguments
SignalProcessor.add_arguments(p, norm=False, gain=0)
# peak picking arguments
PeakPickingProcessor.add_arguments(p, threshold=0.35, smooth=0.07)
OnsetPeakPickingProcessor.add_arguments(p, threshold=0.35, smooth=0.07)

# parse arguments
args = p.parse_args()
Expand Down Expand Up @@ -86,7 +86,7 @@ def main():
out_processor = ActivationsProcessor(mode='w', **vars(args))
else:
# perform peak picking on the onset activations
peak_picking = PeakPickingProcessor(**vars(args))
peak_picking = OnsetPeakPickingProcessor(**vars(args))
# output handler
from madmom.utils import write_events as writer
# sequentially process them
Expand Down
6 changes: 3 additions & 3 deletions bin/OnsetDetectorLL
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import argparse
from madmom.processors import IOProcessor, io_arguments
from madmom.audio.signal import SignalProcessor
from madmom.features import ActivationsProcessor
from madmom.features.onsets import RNNOnsetProcessor, PeakPickingProcessor
from madmom.features.onsets import RNNOnsetProcessor, OnsetPeakPickingProcessor


def main():
Expand Down Expand Up @@ -68,7 +68,7 @@ def main():
# signal processing arguments
SignalProcessor.add_arguments(p, gain=0)
# peak picking arguments
PeakPickingProcessor.add_arguments(p, threshold=0.23)
OnsetPeakPickingProcessor.add_arguments(p, threshold=0.23)

# parse arguments
args = p.parse_args()
Expand Down Expand Up @@ -98,7 +98,7 @@ def main():
out_processor = ActivationsProcessor(mode='w', **vars(args))
else:
# perform peak picking on the onset activations
peak_picking = PeakPickingProcessor(**vars(args))
peak_picking = OnsetPeakPickingProcessor(**vars(args))
# output handler
from madmom.utils import write_events as writer
# sequentially process them
Expand Down
10 changes: 5 additions & 5 deletions bin/PianoTranscriptor
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@ import argparse
from madmom.processors import IOProcessor, io_arguments
from madmom.audio.signal import SignalProcessor
from madmom.features import ActivationsProcessor
from madmom.features.notes import (RNNPianoNoteProcessor, write_midi,
from madmom.features.notes import (RNNPianoNoteProcessor,
NotePeakPickingProcessor, write_midi,
write_notes, write_mirex_format)
from madmom.features.onsets import PeakPickingProcessor


def main():
Expand Down Expand Up @@ -59,8 +59,8 @@ def main():
# signal processing arguments
SignalProcessor.add_arguments(p, norm=False, gain=0, start=True, stop=True)
# peak picking arguments
PeakPickingProcessor.add_arguments(p, threshold=0.35, smooth=0.09,
combine=0.05)
NotePeakPickingProcessor.add_arguments(p, threshold=0.35, smooth=0.09,
combine=0.05)
# midi arguments
# import madmom.utils.midi as midi
# midi.MIDIFile.add_arguments(p, length=0.6, velocity=100)
Expand Down Expand Up @@ -100,7 +100,7 @@ def main():
out_processor = ActivationsProcessor(mode='w', **vars(args))
else:
# perform peak picking on the activation function
peak_picking = PeakPickingProcessor(**vars(args))
peak_picking = NotePeakPickingProcessor(**vars(args))
# output everything in the right format
if args.output_format is None:
output = write_notes
Expand Down
11 changes: 6 additions & 5 deletions bin/SpectralOnsetDetection
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@ from madmom.audio.filters import FilterbankProcessor, LogarithmicFilterbank
from madmom.audio.spectrogram import (LogarithmicSpectrogramProcessor,
SpectrogramDifferenceProcessor)
from madmom.features import ActivationsProcessor
from madmom.features.onsets import SpectralOnsetProcessor, PeakPickingProcessor
from madmom.features.onsets import (SpectralOnsetProcessor,
OnsetPeakPickingProcessor)


def main():
Expand Down Expand Up @@ -66,9 +67,9 @@ def main():
SpectrogramDifferenceProcessor.add_arguments(p, diff_ratio=0.5,
positive_diffs=True)
SpectralOnsetProcessor.add_arguments(p, onset_method='spectral_flux')
PeakPickingProcessor.add_arguments(p, threshold=1.6, pre_max=0.01,
post_max=0.05, pre_avg=0.15, post_avg=0,
combine=0.03, delay=0)
OnsetPeakPickingProcessor.add_arguments(p, threshold=1.6, pre_max=0.01,
post_max=0.05, pre_avg=0.15,
post_avg=0, combine=0.03, delay=0)
# parse arguments
args = p.parse_args()

Expand Down Expand Up @@ -104,7 +105,7 @@ def main():
out_processor = ActivationsProcessor(mode='w', **vars(args))
else:
# perform peak picking of the onset function
peak_picking = PeakPickingProcessor(**vars(args))
peak_picking = OnsetPeakPickingProcessor(**vars(args))
from madmom.utils import write_events as writer
# sequentially process them
out_processor = [peak_picking, writer]
Expand Down
14 changes: 7 additions & 7 deletions bin/SuperFlux
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@ from madmom.processors import IOProcessor, io_arguments
from madmom.audio.signal import SignalProcessor, FramedSignalProcessor
from madmom.audio.filters import FilterbankProcessor, LogarithmicFilterbank
from madmom.audio.spectrogram import (LogarithmicSpectrogramProcessor,
SpectrogramDifferenceProcessor,
SuperFluxProcessor)
SpectrogramDifferenceProcessor)
from madmom.features import ActivationsProcessor
from madmom.features.onsets import SpectralOnsetProcessor, PeakPickingProcessor
from madmom.features.onsets import (SpectralOnsetProcessor,
OnsetPeakPickingProcessor)


def main():
Expand Down Expand Up @@ -63,9 +63,9 @@ def main():
SpectrogramDifferenceProcessor.add_arguments(p, diff_ratio=0.5,
diff_max_bins=3,
positive_diffs=True)
PeakPickingProcessor.add_arguments(p, threshold=1.1, pre_max=0.01,
post_max=0.05, pre_avg=0.15, post_avg=0,
combine=0.03, delay=0)
OnsetPeakPickingProcessor.add_arguments(p, threshold=1.1, pre_max=0.01,
post_max=0.05, pre_avg=0.15,
post_avg=0, combine=0.03, delay=0)
# parse arguments
args = p.parse_args()

Expand All @@ -92,7 +92,7 @@ def main():
out_processor = ActivationsProcessor(mode='w', **vars(args))
else:
# perform peak picking of the onset function
peak_picking = PeakPickingProcessor(**vars(args))
peak_picking = OnsetPeakPickingProcessor(**vars(args))
from madmom.utils import write_events as writer
# sequentially process them
out_processor = [peak_picking, writer]
Expand Down
9 changes: 5 additions & 4 deletions bin/SuperFluxNN
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@ from madmom.audio.filters import FilterbankProcessor, LogarithmicFilterbank
from madmom.audio.spectrogram import (LogarithmicSpectrogramProcessor,
SpectrogramDifferenceProcessor)
from madmom.features import ActivationsProcessor
from madmom.features.onsets import SpectralOnsetProcessor, PeakPickingProcessor
from madmom.features.onsets import (SpectralOnsetProcessor,
OnsetPeakPickingProcessor)
from madmom.ml.nn import NeuralNetworkEnsemble
from madmom.models import ONSETS_BRNN_PP

Expand Down Expand Up @@ -71,8 +72,8 @@ def main():
diff_max_bins=3,
positive_diffs=True)
# peak picking arguments
PeakPickingProcessor.add_arguments(p, threshold=0.4, smooth=0.07,
combine=0.04, delay=0)
OnsetPeakPickingProcessor.add_arguments(p, threshold=0.4, smooth=0.07,
combine=0.04, delay=0)
# parse arguments
args = p.parse_args()

Expand Down Expand Up @@ -101,7 +102,7 @@ def main():
# process everything with multiple RNNs and average the predictions
rnn = NeuralNetworkEnsemble.load(ONSETS_BRNN_PP, **vars(args))
# perform peak picking, i.e. select the local maxima
pp = PeakPickingProcessor(**vars(args))
pp = OnsetPeakPickingProcessor(**vars(args))
from madmom.utils import write_events as writer
# sequentially process them
# Note: we need np.atleast_2d and np.transpose before the RNN, since
Expand Down
Loading

0 comments on commit 0f24011

Please sign in to comment.