New Tool (3.1): SliceMate


(danoise) #1

splash_big_0.png

This is the place for discussing the SliceMate tool.

The tool can automatically determine the playback position of a sample and, with a single shortcut, slice and produce a note at the cursor position in the song.In other words, if you are often using long or sliced samples, it could be quite the timesaver.

The tool was inspired by this topic.

Requirements: Renoise 3.1 or newer.

Download from the tool page:

http://renoise.com/tools/slicemate

Documentation and source code:

https://github.com/renoise/xrnx/tree/master/Tools/com.renoise.SliceMate.xrnx


Tool idea: slicing/splitting samples in the pattern editor
(Djeroek) #2

I must be doing something wrong, but can’t seem to have the tool slice anything? Although I have a sample loaded in the instrument list, autoseeked it, I keep getting "Unable to insert slice:

Can’t determine position - please enable auto-seek on the sample", if there is a slice marker present in the sample, I’m getting “Unable to insert slice:
Could not resolve sample from note”. How is this supposed to work? Will read first post in thread :slight_smile:


(Djeroek) #3

Found this in the log;

ScriptingEngine: std::logic_error: ‘invalid line range: 65, 64.’

stack traceback:

[C]: in function ‘lines_in_range’

.\source/xLib/classes/xNoteCapture.lua:148: in function ‘search_track’

.\source/xLib/classes/xNoteCapture.lua:96: in function <.\source/xLib/classes/xNoteCapture.lua:86>

(tail call): ?

.\source/SliceMate.lua:254: in function ‘select’

.\source/SliceMate.lua:503: in function ‘on_idle’

.\source/SliceMate.lua:126: in function <.\source/SliceMate.lua:125>

Error Message: ‘C:\Users\pluge\AppData\Roaming\Renoise\V3.1.0\Scripts\Tools\com.renoise.SliceMate.xrnx\main.lua’ failed in one of its notifiers.

Error Message: The notifier will be disabled to prevent further errors.

Error Message: Please contact the author (danoise [bjorn.nesby@gmail.com]) for assistance…

Error Message: std::logic_error: ‘invalid line range: 65, 64.’

Error Message: stack traceback:

Error Message: [C]: in function ‘lines_in_range’

Error Message: .\source/xLib/classes/xNoteCapture.lua:148: in function ‘search_track’

Error Message: .\source/xLib/classes/xNoteCapture.lua:96: in function <.\source/xLib/classes/xNoteCapture.lua:86>

Error Message: (tail call): ?

Error Message: .\source/SliceMate.lua:254: in function ‘select’

Error Message: .\source/SliceMate.lua:503: in function ‘on_idle’

Error Message: .\source/SliceMate.lua:126: in function <.\source/SliceMate.lua:125>

GraphPort: Trying to load Fallbackfont: ‘Arial Unicode MS’ (PS-Name: ‘’)…

GraphPort: EnumFontFamilies for font family ‘Arial Unicode MS’ failed

Exception: Failed to resolve the font file for font ‘Arial Unicode MS’.

GraphPort: EnumFontFamilies for font family ‘Arial Unicode MS’ failed

Exception: Failed to resolve the font file for font ‘Arial Unicode MS’.

GraphPort: Trying to load Fallbackfont: ‘MS PGothic’ (PS-Name: ‘’)…

GraphPort: Fallbackfont was successfully loaded, but can not handle the requested character(s). Skipping…

GraphPort: Trying to load Fallbackfont: ‘MS Gothic’ (PS-Name: ‘’)…

GraphPort: Fallbackfont was successfully loaded, but can not handle the requested character(s). Skipping…

Note there are also some fonts failing to load, not sure they are related to your tool though?


(danoise) #4

There is a how-to on github:
https://github.com/renoise/xrnx/tree/master/Tools/com.renoise.SliceMate.xrnx#how-to-use

  • Load up some (long) sample and enter it into the pattern
  • Position the cursor somewhere in the ‘trail’ and hit slice
  • If sample settings are compatible, a new slice/note is inserted
  • Move cursor somewhere else, repeat and rinse

Now let me just follow those steps myself and see what happens :wink:

ScriptingEngine: std::logic_error: 'invalid line range: 65, 64.'
stack traceback:
[C]: in function 'lines_in_range'

Edit: Ah, this is good info. Somehow it chokes when capturing notes - pretty important part of the tool.

I wonder how you’re doing it. First, enter a note and then scroll a bit down and slice?

And also, how large/small are the pattern(s) - are you entering note in one pattern, slicing from a different one, etc.?

Try to describe what you’re doing :slight_smile:


(Djeroek) #5

First de-installed slicemate through the tool-browser.

Re-installed it through dragging inside of Renoise, causing it to auto boot.

Opened up a breakbeat recording through the diskop, beatsyncing the sample to 128 lines.

Set the pattern length to 128 and pressed play.

Immediately the error notice pops up;

‘C:\Users\pluge\AppData\Roaming\Renoise\V3.1.0\Scripts\Tools\com.renoise.SliceMate.xrnx\main.lua’ failed in one of its notifiers.

The notifier will be disabled to prevent further errors.

Please contact the author (danoise [bjorn.nesby@gmail.com]) for assistance…

std::logic_error: ‘invalid line range: 129, 128.’

stack traceback:

[C]: in function ‘lines_in_range’

.\source/xLib/classes/xNoteCapture.lua:148: in function ‘search_track’

.\source/xLib/classes/xNoteCapture.lua:96: in function <.\source/xLib/classes/xNoteCapture.lua:86>

(tail call): ?

.\source/SliceMate.lua:254: in function ‘select’

.\source/SliceMate.lua:494: in function ‘on_idle’

.\source/SliceMate.lua:126: in function <.\source/SliceMate.lua:125>

After clicking away the notice, the tool gui doesn’t seem to recognize any note events present in the pattern editor.

Maybe another tool is (secretly :ph34r: )running in the background interfering? Anyone else having similar issues?


(danoise) #6

Hm, weird. Just loading a sample, set some property, hit play and BOOM?

What you could do (if you want to help more) is to enable additional debug logging in the tool. Read on for details.

(damn, I was supposed to have some fun with this tool. But this is important too…)

First of all, you need to have the scripting console enabled, because that’s where that logging is shown.

Next, in the SliceMate folder, open the file called main.lua and edit the following:

_trace_filters = nil
--_trace_filters = {".*"}

Into this

--_trace_filters = nil
_trace_filters = {".*"}

Then, if you have console enable you can choose “Reload all tools” from the tool menu.

Otherwise you need to open the tool browser and disable/enable the tool to reload it.

Once the tool has reloaded, it will begin tracing (printing) a lot of debug crap to the console.

What I’m basically interested in is a log from the moment the tool is launched to the first error happens

Note that errors are printed in dimmed-out grey, so easy enough to spot.

Now if you’ll excuse me, I have some slicing to do.


(Djeroek) #7

Did the above, but it didn’t crash right away so a lot of data collected, not sure if you need everything but here’s a chunk leading up onto the bug;

Click to view contents

xNotePos:__init - args #2

[track] => 2

[line] => 98

[sequence] => 1

[column] => 1

[fraction] => 0.27073620559335

xNotePos:resolve() xNotePos{sequence=1, track=2, line=98, fraction=0.27073620559335, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=98, fraction=0.27073620559335, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=98, fraction=0.27073620559335, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=98, fraction=0.27073620559335, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=97, fraction=0.27073620559335, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=98, fraction=0.27073620559335, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=98, fraction=0.27073620559335, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=98, fraction=0.27073620559335, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=99, fraction=0.27073620559335, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 98

[sequence] => 1

[column] => 1

[fraction] => 0.68500680272109

xNotePos:resolve() xNotePos{sequence=1, track=2, line=98, fraction=0.68500680272109, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=98, fraction=0.68500680272109, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=98, fraction=0.68500680272109, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=98, fraction=0.68500680272109, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=97, fraction=0.68500680272109, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=98, fraction=0.68500680272109, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=98, fraction=0.68500680272109, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=98, fraction=0.68500680272109, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=99, fraction=0.68500680272109, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 99

[sequence] => 1

[column] => 1

[fraction] => 0.09927739984883

xNotePos:resolve() xNotePos{sequence=1, track=2, line=99, fraction=0.09927739984883, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=99, fraction=0.09927739984883, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=99, fraction=0.09927739984883, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=99, fraction=0.09927739984883, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=98, fraction=0.09927739984883, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=99, fraction=0.09927739984883, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=99, fraction=0.09927739984883, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=99, fraction=0.09927739984883, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=100, fraction=0.09927739984883, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 99

[sequence] => 1

[column] => 1

[fraction] => 0.59640211640212

xNotePos:resolve() xNotePos{sequence=1, track=2, line=99, fraction=0.59640211640212, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=99, fraction=0.59640211640212, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=99, fraction=0.59640211640212, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=99, fraction=0.59640211640212, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=98, fraction=0.59640211640212, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=99, fraction=0.59640211640212, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=99, fraction=0.59640211640212, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=99, fraction=0.59640211640212, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=100, fraction=0.59640211640212, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 100

[sequence] => 1

[column] => 1

[fraction] => 0.010672713529857

xNotePos:resolve() xNotePos{sequence=1, track=2, line=100, fraction=0.010672713529857, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=100, fraction=0.010672713529857, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=100, fraction=0.010672713529857, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=100, fraction=0.010672713529857, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=99, fraction=0.010672713529857, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=100, fraction=0.010672713529857, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=100, fraction=0.010672713529857, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=100, fraction=0.010672713529857, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=101, fraction=0.010672713529857, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 100

[sequence] => 1

[column] => 1

[fraction] => 0.50779743008314

xNotePos:resolve() xNotePos{sequence=1, track=2, line=100, fraction=0.50779743008314, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=100, fraction=0.50779743008314, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=100, fraction=0.50779743008314, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=100, fraction=0.50779743008314, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=99, fraction=0.50779743008314, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=100, fraction=0.50779743008314, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=100, fraction=0.50779743008314, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=100, fraction=0.50779743008314, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=101, fraction=0.50779743008314, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 101

[sequence] => 1

[column] => 1

[fraction] => 0.0049221466364315

xNotePos:resolve() xNotePos{sequence=1, track=2, line=101, fraction=0.0049221466364315, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=101, fraction=0.0049221466364315, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=101, fraction=0.0049221466364315, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=101, fraction=0.0049221466364315, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=100, fraction=0.0049221466364315, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=101, fraction=0.0049221466364315, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=101, fraction=0.0049221466364315, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=101, fraction=0.0049221466364315, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=102, fraction=0.0049221466364315, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 101

[sequence] => 1

[column] => 1

[fraction] => 0.41919274376417

xNotePos:resolve() xNotePos{sequence=1, track=2, line=101, fraction=0.41919274376417, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=101, fraction=0.41919274376417, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=101, fraction=0.41919274376417, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=101, fraction=0.41919274376417, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=100, fraction=0.41919274376417, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=101, fraction=0.41919274376417, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=101, fraction=0.41919274376417, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=101, fraction=0.41919274376417, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=102, fraction=0.41919274376417, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 101

[sequence] => 1

[column] => 1

[fraction] => 0.99917157974301

xNotePos:resolve() xNotePos{sequence=1, track=2, line=101, fraction=0.99917157974301, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=101, fraction=0.99917157974301, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=101, fraction=0.99917157974301, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=101, fraction=0.99917157974301, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=100, fraction=0.99917157974301, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=101, fraction=0.99917157974301, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=101, fraction=0.99917157974301, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=101, fraction=0.99917157974301, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=102, fraction=0.99917157974301, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 102

[sequence] => 1

[column] => 1

[fraction] => 0.41344217687075

xNotePos:resolve() xNotePos{sequence=1, track=2, line=102, fraction=0.41344217687075, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=102, fraction=0.41344217687075, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=102, fraction=0.41344217687075, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=102, fraction=0.41344217687075, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=101, fraction=0.41344217687075, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=102, fraction=0.41344217687075, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=102, fraction=0.41344217687075, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=102, fraction=0.41344217687075, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=103, fraction=0.41344217687075, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 102

[sequence] => 1

[column] => 1

[fraction] => 0.91056689342403

xNotePos:resolve() xNotePos{sequence=1, track=2, line=102, fraction=0.91056689342403, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=102, fraction=0.91056689342403, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=102, fraction=0.91056689342403, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=102, fraction=0.91056689342403, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=101, fraction=0.91056689342403, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=102, fraction=0.91056689342403, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=102, fraction=0.91056689342403, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=102, fraction=0.91056689342403, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=103, fraction=0.91056689342403, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 103

[sequence] => 1

[column] => 1

[fraction] => 0.32483749055177

xNotePos:resolve() xNotePos{sequence=1, track=2, line=103, fraction=0.32483749055177, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=103, fraction=0.32483749055177, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=103, fraction=0.32483749055177, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=103, fraction=0.32483749055177, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=102, fraction=0.32483749055177, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=103, fraction=0.32483749055177, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=103, fraction=0.32483749055177, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=103, fraction=0.32483749055177, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=104, fraction=0.32483749055177, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 103

[sequence] => 1

[column] => 1

[fraction] => 0.82196220710506

xNotePos:resolve() xNotePos{sequence=1, track=2, line=103, fraction=0.82196220710506, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=103, fraction=0.82196220710506, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=103, fraction=0.82196220710506, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=103, fraction=0.82196220710506, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=102, fraction=0.82196220710506, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=103, fraction=0.82196220710506, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=103, fraction=0.82196220710506, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=103, fraction=0.82196220710506, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=104, fraction=0.82196220710506, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 104

[sequence] => 1

[column] => 1

[fraction] => 0.2362328042328

xNotePos:resolve() xNotePos{sequence=1, track=2, line=104, fraction=0.2362328042328, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=104, fraction=0.2362328042328, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=104, fraction=0.2362328042328, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=104, fraction=0.2362328042328, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=103, fraction=0.2362328042328, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=104, fraction=0.2362328042328, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=104, fraction=0.2362328042328, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=104, fraction=0.2362328042328, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=105, fraction=0.2362328042328, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 104

[sequence] => 1

[column] => 1

[fraction] => 0.73335752078609

xNotePos:resolve() xNotePos{sequence=1, track=2, line=104, fraction=0.73335752078609, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=104, fraction=0.73335752078609, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=104, fraction=0.73335752078609, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=104, fraction=0.73335752078609, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=103, fraction=0.73335752078609, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=104, fraction=0.73335752078609, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=104, fraction=0.73335752078609, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=104, fraction=0.73335752078609, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=105, fraction=0.73335752078609, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 105

[sequence] => 1

[column] => 1

[fraction] => 0.14762811791383

xNotePos:resolve() xNotePos{sequence=1, track=2, line=105, fraction=0.14762811791383, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=105, fraction=0.14762811791383, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=105, fraction=0.14762811791383, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=105, fraction=0.14762811791383, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=104, fraction=0.14762811791383, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=105, fraction=0.14762811791383, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=105, fraction=0.14762811791383, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=105, fraction=0.14762811791383, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=106, fraction=0.14762811791383, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 105

[sequence] => 1

[column] => 1

[fraction] => 0.64475283446711

xNotePos:resolve() xNotePos{sequence=1, track=2, line=105, fraction=0.64475283446711, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=105, fraction=0.64475283446711, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=105, fraction=0.64475283446711, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=105, fraction=0.64475283446711, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=104, fraction=0.64475283446711, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=105, fraction=0.64475283446711, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=105, fraction=0.64475283446711, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=105, fraction=0.64475283446711, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=106, fraction=0.64475283446711, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 106

[sequence] => 1

[column] => 1

[fraction] => 0.1418775510204

xNotePos:resolve() xNotePos{sequence=1, track=2, line=106, fraction=0.1418775510204, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=106, fraction=0.1418775510204, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=106, fraction=0.1418775510204, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=106, fraction=0.1418775510204, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=105, fraction=0.1418775510204, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=106, fraction=0.1418775510204, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=106, fraction=0.1418775510204, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=106, fraction=0.1418775510204, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=107, fraction=0.1418775510204, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 106

[sequence] => 1

[column] => 1

[fraction] => 0.6390022675737

xNotePos:resolve() xNotePos{sequence=1, track=2, line=106, fraction=0.6390022675737, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=106, fraction=0.6390022675737, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=106, fraction=0.6390022675737, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=106, fraction=0.6390022675737, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=105, fraction=0.6390022675737, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=106, fraction=0.6390022675737, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=106, fraction=0.6390022675737, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=106, fraction=0.6390022675737, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=107, fraction=0.6390022675737, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 107

[sequence] => 1

[column] => 1

[fraction] => 0.13612698412699

xNotePos:resolve() xNotePos{sequence=1, track=2, line=107, fraction=0.13612698412699, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=107, fraction=0.13612698412699, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=107, fraction=0.13612698412699, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=107, fraction=0.13612698412699, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=106, fraction=0.13612698412699, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=107, fraction=0.13612698412699, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=107, fraction=0.13612698412699, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=107, fraction=0.13612698412699, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=108, fraction=0.13612698412699, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 107

[sequence] => 1

[column] => 1

[fraction] => 0.55039758125473

xNotePos:resolve() xNotePos{sequence=1, track=2, line=107, fraction=0.55039758125473, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=107, fraction=0.55039758125473, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=107, fraction=0.55039758125473, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=107, fraction=0.55039758125473, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=106, fraction=0.55039758125473, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=107, fraction=0.55039758125473, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=107, fraction=0.55039758125473, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=107, fraction=0.55039758125473, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=108, fraction=0.55039758125473, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 108

[sequence] => 1

[column] => 1

[fraction] => 0.047522297808015

xNotePos:resolve() xNotePos{sequence=1, track=2, line=108, fraction=0.047522297808015, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=108, fraction=0.047522297808015, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=108, fraction=0.047522297808015, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=108, fraction=0.047522297808015, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=107, fraction=0.047522297808015, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=108, fraction=0.047522297808015, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=108, fraction=0.047522297808015, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=108, fraction=0.047522297808015, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=109, fraction=0.047522297808015, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 108

[sequence] => 1

[column] => 1

[fraction] => 0.46179289493575

xNotePos:resolve() xNotePos{sequence=1, track=2, line=108, fraction=0.46179289493575, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=108, fraction=0.46179289493575, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=108, fraction=0.46179289493575, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=108, fraction=0.46179289493575, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=107, fraction=0.46179289493575, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=108, fraction=0.46179289493575, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=108, fraction=0.46179289493575, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=108, fraction=0.46179289493575, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=109, fraction=0.46179289493575, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 108

[sequence] => 1

[column] => 1

[fraction] => 0.95891761148904

xNotePos:resolve() xNotePos{sequence=1, track=2, line=108, fraction=0.95891761148904, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=108, fraction=0.95891761148904, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=108, fraction=0.95891761148904, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=108, fraction=0.95891761148904, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=107, fraction=0.95891761148904, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=108, fraction=0.95891761148904, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=108, fraction=0.95891761148904, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=108, fraction=0.95891761148904, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=109, fraction=0.95891761148904, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 109

[sequence] => 1

[column] => 1

[fraction] => 0.37318820861678

xNotePos:resolve() xNotePos{sequence=1, track=2, line=109, fraction=0.37318820861678, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=109, fraction=0.37318820861678, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=109, fraction=0.37318820861678, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=109, fraction=0.37318820861678, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=108, fraction=0.37318820861678, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=109, fraction=0.37318820861678, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=109, fraction=0.37318820861678, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=109, fraction=0.37318820861678, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=110, fraction=0.37318820861678, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 109

[sequence] => 1

[column] => 1

[fraction] => 0.87031292517007

xNotePos:resolve() xNotePos{sequence=1, track=2, line=109, fraction=0.87031292517007, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=109, fraction=0.87031292517007, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=109, fraction=0.87031292517007, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=109, fraction=0.87031292517007, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=108, fraction=0.87031292517007, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=109, fraction=0.87031292517007, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=109, fraction=0.87031292517007, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=109, fraction=0.87031292517007, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=110, fraction=0.87031292517007, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 110

[sequence] => 1

[column] => 1

[fraction] => 0.36743764172336

xNotePos:resolve() xNotePos{sequence=1, track=2, line=110, fraction=0.36743764172336, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=110, fraction=0.36743764172336, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=110, fraction=0.36743764172336, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=110, fraction=0.36743764172336, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=109, fraction=0.36743764172336, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=110, fraction=0.36743764172336, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=110, fraction=0.36743764172336, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=110, fraction=0.36743764172336, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=111, fraction=0.36743764172336, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 110

[sequence] => 1

[column] => 1

[fraction] => 0.7817082388511

xNotePos:resolve() xNotePos{sequence=1, track=2, line=110, fraction=0.7817082388511, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=110, fraction=0.7817082388511, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=110, fraction=0.7817082388511, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=110, fraction=0.7817082388511, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=109, fraction=0.7817082388511, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=110, fraction=0.7817082388511, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=110, fraction=0.7817082388511, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=110, fraction=0.7817082388511, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=111, fraction=0.7817082388511, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 111

[sequence] => 1

[column] => 1

[fraction] => 0.36168707482993

xNotePos:resolve() xNotePos{sequence=1, track=2, line=111, fraction=0.36168707482993, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=111, fraction=0.36168707482993, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=111, fraction=0.36168707482993, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=111, fraction=0.36168707482993, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=110, fraction=0.36168707482993, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=111, fraction=0.36168707482993, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=111, fraction=0.36168707482993, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=111, fraction=0.36168707482993, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=112, fraction=0.36168707482993, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 111

[sequence] => 1

[column] => 1

[fraction] => 0.77595767195767

xNotePos:resolve() xNotePos{sequence=1, track=2, line=111, fraction=0.77595767195767, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=111, fraction=0.77595767195767, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=111, fraction=0.77595767195767, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=111, fraction=0.77595767195767, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=110, fraction=0.77595767195767, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=111, fraction=0.77595767195767, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=111, fraction=0.77595767195767, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=111, fraction=0.77595767195767, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=112, fraction=0.77595767195767, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 112

[sequence] => 1

[column] => 1

[fraction] => 0.19022826908541

xNotePos:resolve() xNotePos{sequence=1, track=2, line=112, fraction=0.19022826908541, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=112, fraction=0.19022826908541, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=112, fraction=0.19022826908541, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=112, fraction=0.19022826908541, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=111, fraction=0.19022826908541, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=112, fraction=0.19022826908541, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=112, fraction=0.19022826908541, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=112, fraction=0.19022826908541, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=113, fraction=0.19022826908541, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 112

[sequence] => 1

[column] => 1

[fraction] => 0.6873529856387

xNotePos:resolve() xNotePos{sequence=1, track=2, line=112, fraction=0.6873529856387, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=112, fraction=0.6873529856387, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=112, fraction=0.6873529856387, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=112, fraction=0.6873529856387, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=111, fraction=0.6873529856387, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=112, fraction=0.6873529856387, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=112, fraction=0.6873529856387, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=112, fraction=0.6873529856387, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=113, fraction=0.6873529856387, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 113

[sequence] => 1

[column] => 1

[fraction] => 0.18447770219198

xNotePos:resolve() xNotePos{sequence=1, track=2, line=113, fraction=0.18447770219198, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=113, fraction=0.18447770219198, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=113, fraction=0.18447770219198, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=113, fraction=0.18447770219198, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=112, fraction=0.18447770219198, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=113, fraction=0.18447770219198, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=113, fraction=0.18447770219198, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=113, fraction=0.18447770219198, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=114, fraction=0.18447770219198, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 113

[sequence] => 1

[column] => 1

[fraction] => 0.59874829931972

xNotePos:resolve() xNotePos{sequence=1, track=2, line=113, fraction=0.59874829931972, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=113, fraction=0.59874829931972, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=113, fraction=0.59874829931972, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=113, fraction=0.59874829931972, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=112, fraction=0.59874829931972, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=113, fraction=0.59874829931972, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=113, fraction=0.59874829931972, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=113, fraction=0.59874829931972, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=114, fraction=0.59874829931972, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 114

[sequence] => 1

[column] => 1

[fraction] => 0.095873015873011

xNotePos:resolve() xNotePos{sequence=1, track=2, line=114, fraction=0.095873015873011, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=114, fraction=0.095873015873011, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=114, fraction=0.095873015873011, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=114, fraction=0.095873015873011, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=113, fraction=0.095873015873011, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=114, fraction=0.095873015873011, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=114, fraction=0.095873015873011, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=114, fraction=0.095873015873011, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=115, fraction=0.095873015873011, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 114

[sequence] => 1

[column] => 1

[fraction] => 0.51014361300075

xNotePos:resolve() xNotePos{sequence=1, track=2, line=114, fraction=0.51014361300075, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=114, fraction=0.51014361300075, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=114, fraction=0.51014361300075, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=114, fraction=0.51014361300075, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=113, fraction=0.51014361300075, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=114, fraction=0.51014361300075, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=114, fraction=0.51014361300075, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=114, fraction=0.51014361300075, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=115, fraction=0.51014361300075, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 115

[sequence] => 1

[column] => 1

[fraction] => 0.0072683295540372

xNotePos:resolve() xNotePos{sequence=1, track=2, line=115, fraction=0.0072683295540372, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=115, fraction=0.0072683295540372, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=115, fraction=0.0072683295540372, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=115, fraction=0.0072683295540372, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=114, fraction=0.0072683295540372, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=115, fraction=0.0072683295540372, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=115, fraction=0.0072683295540372, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=115, fraction=0.0072683295540372, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=116, fraction=0.0072683295540372, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 115

[sequence] => 1

[column] => 1

[fraction] => 0.50439304610732

xNotePos:resolve() xNotePos{sequence=1, track=2, line=115, fraction=0.50439304610732, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=115, fraction=0.50439304610732, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=115, fraction=0.50439304610732, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=115, fraction=0.50439304610732, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=114, fraction=0.50439304610732, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=115, fraction=0.50439304610732, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=115, fraction=0.50439304610732, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=115, fraction=0.50439304610732, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=116, fraction=0.50439304610732, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 116

[sequence] => 1

[column] => 1

[fraction] => 0.0015177626606118

xNotePos:resolve() xNotePos{sequence=1, track=2, line=116, fraction=0.0015177626606118, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=116, fraction=0.0015177626606118, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=116, fraction=0.0015177626606118, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=116, fraction=0.0015177626606118, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=115, fraction=0.0015177626606118, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=116, fraction=0.0015177626606118, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=116, fraction=0.0015177626606118, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=116, fraction=0.0015177626606118, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=117, fraction=0.0015177626606118, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 116

[sequence] => 1

[column] => 1

[fraction] => 0.49864247921391

xNotePos:resolve() xNotePos{sequence=1, track=2, line=116, fraction=0.49864247921391, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=116, fraction=0.49864247921391, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=116, fraction=0.49864247921391, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=116, fraction=0.49864247921391, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=115, fraction=0.49864247921391, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=116, fraction=0.49864247921391, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=116, fraction=0.49864247921391, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=116, fraction=0.49864247921391, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=117, fraction=0.49864247921391, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 116

[sequence] => 1

[column] => 1

[fraction] => 0.91291307634165

xNotePos:resolve() xNotePos{sequence=1, track=2, line=116, fraction=0.91291307634165, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=116, fraction=0.91291307634165, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=116, fraction=0.91291307634165, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=116, fraction=0.91291307634165, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=115, fraction=0.91291307634165, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=116, fraction=0.91291307634165, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=116, fraction=0.91291307634165, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=116, fraction=0.91291307634165, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=117, fraction=0.91291307634165, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 117

[sequence] => 1

[column] => 1

[fraction] => 0.41003779289494

xNotePos:resolve() xNotePos{sequence=1, track=2, line=117, fraction=0.41003779289494, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=117, fraction=0.41003779289494, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=117, fraction=0.41003779289494, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=117, fraction=0.41003779289494, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=116, fraction=0.41003779289494, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=117, fraction=0.41003779289494, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=117, fraction=0.41003779289494, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=117, fraction=0.41003779289494, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=118, fraction=0.41003779289494, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 117

[sequence] => 1

[column] => 1

[fraction] => 0.82430839002268

xNotePos:resolve() xNotePos{sequence=1, track=2, line=117, fraction=0.82430839002268, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=117, fraction=0.82430839002268, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=117, fraction=0.82430839002268, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=117, fraction=0.82430839002268, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=116, fraction=0.82430839002268, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=117, fraction=0.82430839002268, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=117, fraction=0.82430839002268, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=117, fraction=0.82430839002268, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=118, fraction=0.82430839002268, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 118

[sequence] => 1

[column] => 1

[fraction] => 0.32143310657597

xNotePos:resolve() xNotePos{sequence=1, track=2, line=118, fraction=0.32143310657597, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=118, fraction=0.32143310657597, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=118, fraction=0.32143310657597, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=118, fraction=0.32143310657597, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=117, fraction=0.32143310657597, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=118, fraction=0.32143310657597, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=118, fraction=0.32143310657597, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=118, fraction=0.32143310657597, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=119, fraction=0.32143310657597, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 118

[sequence] => 1

[column] => 1

[fraction] => 0.81855782312925

xNotePos:resolve() xNotePos{sequence=1, track=2, line=118, fraction=0.81855782312925, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=118, fraction=0.81855782312925, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=118, fraction=0.81855782312925, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=118, fraction=0.81855782312925, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=117, fraction=0.81855782312925, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=118, fraction=0.81855782312925, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=118, fraction=0.81855782312925, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=118, fraction=0.81855782312925, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=119, fraction=0.81855782312925, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 119

[sequence] => 1

[column] => 1

[fraction] => 0.23282842025699

xNotePos:resolve() xNotePos{sequence=1, track=2, line=119, fraction=0.23282842025699, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=119, fraction=0.23282842025699, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=119, fraction=0.23282842025699, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=119, fraction=0.23282842025699, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=118, fraction=0.23282842025699, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=119, fraction=0.23282842025699, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=119, fraction=0.23282842025699, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=119, fraction=0.23282842025699, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=120, fraction=0.23282842025699, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 119

[sequence] => 1

[column] => 1

[fraction] => 0.72995313681028

xNotePos:resolve() xNotePos{sequence=1, track=2, line=119, fraction=0.72995313681028, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=119, fraction=0.72995313681028, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=119, fraction=0.72995313681028, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=119, fraction=0.72995313681028, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=118, fraction=0.72995313681028, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=119, fraction=0.72995313681028, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=119, fraction=0.72995313681028, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=119, fraction=0.72995313681028, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=120, fraction=0.72995313681028, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 120

[sequence] => 1

[column] => 1

[fraction] => 0.22707785336357

xNotePos:resolve() xNotePos{sequence=1, track=2, line=120, fraction=0.22707785336357, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=120, fraction=0.22707785336357, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=120, fraction=0.22707785336357, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=120, fraction=0.22707785336357, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=119, fraction=0.22707785336357, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=120, fraction=0.22707785336357, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=120, fraction=0.22707785336357, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=120, fraction=0.22707785336357, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=121, fraction=0.22707785336357, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 120

[sequence] => 1

[column] => 1

[fraction] => 0.8070566893424

xNotePos:resolve() xNotePos{sequence=1, track=2, line=120, fraction=0.8070566893424, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=120, fraction=0.8070566893424, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=120, fraction=0.8070566893424, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=120, fraction=0.8070566893424, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=119, fraction=0.8070566893424, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=120, fraction=0.8070566893424, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=120, fraction=0.8070566893424, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=120, fraction=0.8070566893424, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=121, fraction=0.8070566893424, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 121

[sequence] => 1

[column] => 1

[fraction] => 0.22132728647014

xNotePos:resolve() xNotePos{sequence=1, track=2, line=121, fraction=0.22132728647014, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=121, fraction=0.22132728647014, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=121, fraction=0.22132728647014, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=121, fraction=0.22132728647014, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=120, fraction=0.22132728647014, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=121, fraction=0.22132728647014, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=121, fraction=0.22132728647014, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=121, fraction=0.22132728647014, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=122, fraction=0.22132728647014, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 121

[sequence] => 1

[column] => 1

[fraction] => 0.71845200302343

xNotePos:resolve() xNotePos{sequence=1, track=2, line=121, fraction=0.71845200302343, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=121, fraction=0.71845200302343, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=121, fraction=0.71845200302343, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=121, fraction=0.71845200302343, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=120, fraction=0.71845200302343, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=121, fraction=0.71845200302343, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=121, fraction=0.71845200302343, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=121, fraction=0.71845200302343, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=122, fraction=0.71845200302343, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 122

[sequence] => 1

[column] => 1

[fraction] => 0.13272260015117

xNotePos:resolve() xNotePos{sequence=1, track=2, line=122, fraction=0.13272260015117, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=122, fraction=0.13272260015117, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=122, fraction=0.13272260015117, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=122, fraction=0.13272260015117, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=121, fraction=0.13272260015117, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=122, fraction=0.13272260015117, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=122, fraction=0.13272260015117, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=122, fraction=0.13272260015117, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=123, fraction=0.13272260015117, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 122

[sequence] => 1

[column] => 1

[fraction] => 0.62984731670446

xNotePos:resolve() xNotePos{sequence=1, track=2, line=122, fraction=0.62984731670446, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=122, fraction=0.62984731670446, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=122, fraction=0.62984731670446, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=122, fraction=0.62984731670446, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=121, fraction=0.62984731670446, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=122, fraction=0.62984731670446, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=122, fraction=0.62984731670446, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=122, fraction=0.62984731670446, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=123, fraction=0.62984731670446, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 123

[sequence] => 1

[column] => 1

[fraction] => 0.12697203325774

xNotePos:resolve() xNotePos{sequence=1, track=2, line=123, fraction=0.12697203325774, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=123, fraction=0.12697203325774, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=123, fraction=0.12697203325774, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=123, fraction=0.12697203325774, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=122, fraction=0.12697203325774, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=123, fraction=0.12697203325774, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=123, fraction=0.12697203325774, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=123, fraction=0.12697203325774, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=124, fraction=0.12697203325774, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 123

[sequence] => 1

[column] => 1

[fraction] => 0.62409674981103

xNotePos:resolve() xNotePos{sequence=1, track=2, line=123, fraction=0.62409674981103, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=123, fraction=0.62409674981103, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=123, fraction=0.62409674981103, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=123, fraction=0.62409674981103, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=122, fraction=0.62409674981103, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=123, fraction=0.62409674981103, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=123, fraction=0.62409674981103, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=123, fraction=0.62409674981103, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=124, fraction=0.62409674981103, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 124

[sequence] => 1

[column] => 1

[fraction] => 0.03836734693877

xNotePos:resolve() xNotePos{sequence=1, track=2, line=124, fraction=0.03836734693877, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=124, fraction=0.03836734693877, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=124, fraction=0.03836734693877, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=124, fraction=0.03836734693877, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=123, fraction=0.03836734693877, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=124, fraction=0.03836734693877, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=124, fraction=0.03836734693877, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=124, fraction=0.03836734693877, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=125, fraction=0.03836734693877, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 124

[sequence] => 1

[column] => 1

[fraction] => 0.53549206349206

xNotePos:resolve() xNotePos{sequence=1, track=2, line=124, fraction=0.53549206349206, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=124, fraction=0.53549206349206, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=124, fraction=0.53549206349206, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=124, fraction=0.53549206349206, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=123, fraction=0.53549206349206, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=124, fraction=0.53549206349206, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=124, fraction=0.53549206349206, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=124, fraction=0.53549206349206, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=125, fraction=0.53549206349206, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 125

[sequence] => 1

[column] => 1

[fraction] => 0.032616780045345

xNotePos:resolve() xNotePos{sequence=1, track=2, line=125, fraction=0.032616780045345, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=125, fraction=0.032616780045345, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=125, fraction=0.032616780045345, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=125, fraction=0.032616780045345, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=124, fraction=0.032616780045345, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=125, fraction=0.032616780045345, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=125, fraction=0.032616780045345, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=125, fraction=0.032616780045345, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=126, fraction=0.032616780045345, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 125

[sequence] => 1

[column] => 1

[fraction] => 0.52974149659863

xNotePos:resolve() xNotePos{sequence=1, track=2, line=125, fraction=0.52974149659863, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=125, fraction=0.52974149659863, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=125, fraction=0.52974149659863, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=125, fraction=0.52974149659863, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=124, fraction=0.52974149659863, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=125, fraction=0.52974149659863, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=125, fraction=0.52974149659863, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=125, fraction=0.52974149659863, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=126, fraction=0.52974149659863, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 125

[sequence] => 1

[column] => 1

[fraction] => 0.94401209372637

xNotePos:resolve() xNotePos{sequence=1, track=2, line=125, fraction=0.94401209372637, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=125, fraction=0.94401209372637, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=125, fraction=0.94401209372637, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=125, fraction=0.94401209372637, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=124, fraction=0.94401209372637, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=125, fraction=0.94401209372637, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=125, fraction=0.94401209372637, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=125, fraction=0.94401209372637, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=126, fraction=0.94401209372637, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 126

[sequence] => 1

[column] => 1

[fraction] => 0.44113681027967

xNotePos:resolve() xNotePos{sequence=1, track=2, line=126, fraction=0.44113681027967, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=126, fraction=0.44113681027967, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=126, fraction=0.44113681027967, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=126, fraction=0.44113681027967, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=125, fraction=0.44113681027967, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=126, fraction=0.44113681027967, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=126, fraction=0.44113681027967, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=126, fraction=0.44113681027967, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=127, fraction=0.44113681027967, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 126

[sequence] => 1

[column] => 1

[fraction] => 0.85540740740741

xNotePos:resolve() xNotePos{sequence=1, track=2, line=126, fraction=0.85540740740741, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=126, fraction=0.85540740740741, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=126, fraction=0.85540740740741, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=126, fraction=0.85540740740741, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=125, fraction=0.85540740740741, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=126, fraction=0.85540740740741, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=126, fraction=0.85540740740741, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=126, fraction=0.85540740740741, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=127, fraction=0.85540740740741, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 127

[sequence] => 1

[column] => 1

[fraction] => 0.26967800453515

xNotePos:resolve() xNotePos{sequence=1, track=2, line=127, fraction=0.26967800453515, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=127, fraction=0.26967800453515, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=127, fraction=0.26967800453515, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=127, fraction=0.26967800453515, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=126, fraction=0.26967800453515, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=127, fraction=0.26967800453515, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=127, fraction=0.26967800453515, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=127, fraction=0.26967800453515, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=128, fraction=0.26967800453515, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 127

[sequence] => 1

[column] => 1

[fraction] => 0.68394860166289

xNotePos:resolve() xNotePos{sequence=1, track=2, line=127, fraction=0.68394860166289, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=127, fraction=0.68394860166289, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=127, fraction=0.68394860166289, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=127, fraction=0.68394860166289, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=126, fraction=0.68394860166289, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=127, fraction=0.68394860166289, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=127, fraction=0.68394860166289, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=127, fraction=0.68394860166289, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=128, fraction=0.68394860166289, column=1} function: 172AD488

SliceMate:select(user_selected) false

xNoteCapture.nearest(notepos,compare_fn) nil function: 172AD488

xNotePos:__init - args #1

xNotePos:__init - args #2

[track] => 2

[line] => 128

[sequence] => 1

[column] => 1

[fraction] => 0.18107331821618

xNotePos:resolve() xNotePos{sequence=1, track=2, line=128, fraction=0.18107331821618, column=1}

xNoteCapture.previous(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=128, fraction=0.18107331821618, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=128, fraction=0.18107331821618, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=128, fraction=0.18107331821618, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=127, fraction=0.18107331821618, column=1} function: 172AD488

xNoteCapture.next(compare_fn,notepos,end_seq_idx) function: 172AD488 xNotePos{sequence=1, track=2, line=128, fraction=0.18107331821618, column=1} nil

xNotePos:__init - args #1 xNotePos{sequence=1, track=2, line=128, fraction=0.18107331821618, column=1}

xNotePos:__init - args #2 xNotePos{sequence=1, track=2, line=128, fraction=0.18107331821618, column=1}

xNoteCapture.search_track(notepos,compare_fn) xNotePos{sequence=1, track=2, line=129, fraction=0.18107331821618, column=1} function: 172AD488

*** std::logic_error: ‘invalid line range: 129, 128.’

*** stack traceback:

*** [C]: in function ‘lines_in_range’

*** .\source/xLib/classes/xNoteCapture.lua:148: in function ‘search_track’

*** .\source/xLib/classes/xNoteCapture.lua:96: in function <.></.>

*** (tail call): ?

*** .\source/SliceMate.lua:254: in function ‘select’

*** .\source/SliceMate.lua:494: in function ‘on_idle’

*** .\source/SliceMate.lua:126: in function <.></.>

So the fact that there is a mention of 129 in the invalid range bit isn’t suspect on a pattern length of 128?


(danoise) #8

Thanks!

I’ve found that the error is not particular to your PC - it happened here as well. But extremely rarely, as I’d been using the tool for hours.

So very nice with that debug log…

Btw: also found that fine-tuning is not carried over to newly sliced samples. I was matching a 126 bpmrender to a 128 bpm song, when I realized it.

This is easy to fix, will be part of the next update.


(danoise) #9

There’s a new version up. Think I nailed the bug?

Download: http://renoise.com/tools/slicemate


(Djeroek) #10

There’s a new version up. Think I nailed the bug?

Download: http://renoise.com/tools/slicemate

unfortunately still doesn’t work here, it doesn’t find any sample/instrument. When having the cursor on a note event it does see the sample name, but it shows the exclamation icon; “Can’t determine position - please enable auto-seek on the sample”, while autoseek is on!

If I move the cursor away from the note event I’m getting 'Instrument N/A".

Have to run now, so can’t test further, maybe tonight? (Btw I’m on windows 10, 32 bit 3.1 Renoise, 64 bit version same issues).


(danoise) #11

At least the error you first reported is gone, no?

From what you write, it sounds almost like the tool is picking up wrong instrument. But before I head off on a wild goose chase, maybe it’s better to let some more people test the tool.

As an encouragement, I can only say that I did a lot of slicing yesterday night - and it was exactly as easy as I’d hoped it would be :slight_smile:

Edit: and while using it, it occurred to me how useful it would be to support quantize across an arbitrary number of lines.

This is particularly important, since slicing up a playing sample will make Renoise stop the sample playback. And while I can’t magically fix that the sample keeps playing, at least the tool could be a bit smarter and place the slice point / note slightly into the future (a.k.a. forward quantize).

The result would be slightly more useful when using the tool in realtime (with the cursor following playback position): you only get a brief moment of silence, from the moment you create the slice, until playback reaches the quantized note that was just inserted.

I have no idea if anyone else if planning to use this tool to slice up samples in realtime, while the song is playing. But I know that I do, so this just made it to the top of my “planned features” list B)


(joule) #12

Nice tool!

@Danoise: On another topic:

This already has some of the math fundamentals needed for a simple note aligner tool (you’re already converting samples<->lines, right?). Now that you have your head wrapped around it, maybe it would be simple for you to make a note aligner tool? Just a simple “align the end of the above note (sample) to the current cursor position”. Alignmate.

EDIT: And another feature… “Align note under cursor to end of previous sample”. It makes theoretical sense in this framework too, like if you moved a perfect slice and later want to move it back.


(Djeroek) #13

At least the error you first reported is gone, no?

yep, looks like it.

I’ve tried disabling all other scripts, and a/b’ing different settings in the preferences to no avail, weird that it only sees the sample when the pattern editor cursor is on top of the note event.

There is a change in value of the Pos parameter in the tool that seems dependent on the octave setting, on the highest octave setting of 8 I get alternating results (for example 37762, 48551, 64735 etc), on octave setting of 4; 4046, 3709, 2698 etc.

I’m not sure this value is supposed to run, change while a pattern is playing equivalent of sample position, but I get value updates only when a note-event is triggered.


(danoise) #14

@djeroek: let me shoot a small video when I get home tonight. Hopefully it will be more clear how things are supposed to work :slight_smile:

@joule: AlignMate,absolutely -if there’s some potential for code reusability, that’s great. Feel free to dig in.


(danoise) #15

@Danoise: On another topic:
This already has some of the math fundamentals needed for a simple note aligner tool (you’re already converting samples<->lines, right?). Now that you have your head wrapped around it, maybe it would be simple for you to make a note aligner tool? Just a simple “align the end of the above note (sample) to the current cursor position”. Alignmate

Just to clarify: you’re looking for a way to shift a note so that it plays exactly up to a given position in the song.

I’m imagining reversed cymbals, vocal recordings with breathing and “EDM risers” here - this is the general idea?

Slightly related, I found, while using the tool, that it would be nice if I could move a given slice after it had been created. And obviously, not just the slice itself (which is simple), but also any associated notes. But that whole idea is a bit “dirty”, because you might have used that sample in a manner of ways. Not just cleanly slicing up a source sound, but getting creative with it.

So I might skip that one, and instead focus on things that are relatively straightforward. This involves forward quantize (as previously mentioned), and that the tool actually monitors sample properties and pattern content in realtime. Because right now, when you’re in the instrument editor and not actively playing the song, you don’t get visual feedback about the playback position when you adjust properties such as sample transpose, fine-tune etc. - you have to pop back in the pattern editor and “nudge” the cursor position. Not intuitive at all.

Same goes for editing the pattern - e.g. via shift+F1/F2 (transpose) - would be great if the values were updated here as well.


(hazeltine) #16

Having the same issue. Just can’t get it to work. I enter a note at step 00, Slice Mate is connected to the instrument slot, I scroll down 2 steps and try to insert slive and get “Could not find a sample to slice, perhaps the track doesn’t contain any notes.”


(mikobuntu) #17

I have installed the latest version by dragging onto the Renoise window and I get the following error …

‘/home/miko/.renoise/V3.1.0/Scripts/Tools/com.renoise.SliceMate.xrnx/’ failed to execute in one of its menu entry functions.

Please contact the author (danoise [bjorn.nesby@gmail.com]) for assistance…

std::runtime_error: ‘ViewBuilder: bitmap ‘./icons/warning.bmp’ does not exist or failed to load’

stack traceback:

[C]: in function ‘bitmap’

./source/SliceMate_UI.lua:249: in function ‘build’

./source/SliceMate.lua:144: in function <./source/SliceMate.lua:16>

[C]: in function ‘SliceMate’

main.lua:64: in function ‘show’

main.lua:82: in function main.lua:81


(fladd) #18

I also don’t get what the tool is supposed to do.

I get “Can’t insert slice where notes are present -
please set the cursor somewhere else” when slicing being on the note,

and “Could not find a sample to slice,
perhaps the track doesn’t contain any notes?” when slicing on the tail.


(danoise) #19

I was just about to release another new version when I discovered that I’m suddenly getting the same behaviour as some of you.

Finally, the error message !!

EDIT: GOT IT. New version coming up…


(joule) #20

@Danoise,

  1. Yes, that’s what I meant about aligning.

  2. It’s an interesting topic, letting different objects react to one another. Like you explain, it becomes a bit complicated with slices in this case (e g would only work on “perfect slice sequences”. And should it react to every occurance everywhere?). I’m refactoring my f(tracks) project classes a bit with this kind of structures in mind, so I’ve thought a bit about it (e g, let an automation curve generate note data, which in turn “generates” note data in another track… kind of modular/flexible). Sooner or later the usability of it all boils down to the need for 1) wanting to store custom data per object, 2) providing custom visual cues to the user in the Renoise GUI via the API. If these were available we could make awesome custom behaviors… In your case, showing the user that this/that particular block of notes is tied/synced to sample slices.