xMidiIO
: add hot-plug support (device change), improve documentationxLine/Pattern
: don't pass down tokens when writing, simplifyxNoteColumn
: ability to use callback when writing (reveal columns on the fly)xStreamBuffer
: callback-based implementation, improved performancexSongPos
: bug-fixes, beat/songpos converter methodsxSongPos
: made most methods immutable (don't modify in-place, instead return)xSample.convert_sample
: fix issue where stereo becomes mono (no channel action)xSampleBufferOperation
: switch to purely static impl.xSampleMapping
: addhas_full_note_range
methodxSample
: use buffer operationxColumns
: fix missing track index when jumping to next/previous- (various) add missing require statements
- New class:
xKeyZone
, contains refactored methodsxInstrument.get_samples_mapped_to_note
->xKeyZone.get_samples_mapped_to_note
xSampleMapping.shift_keyzone_by_semitones
->xKeyZone.shift_by_semitones
- xInstrument: new methods
insert_sample
,clone_sample
- Change
xSongSettings
->xPersistentSettings
- support instr. comments - New class:
xSampleBuffer
- contains refactored methods and propertiesxSample.get_bit_depth
->xSampleBuffer.get_bit_depth
xSample.bits_to_xbits
->xSampleBuffer.bits_to_xbits
xSample.get_channel_info
->xSampleBuffer.get_channel_info
xSample.sample_buffer_is_silent
->xSampleBuffer.is_silent
xSample.detect_leading_trailing_silence
->xSampleBuffer.detect_leading_trailing_silence
xSample.set_buffer_selection
->xSampleBuffer.set_buffer_selection
xSample.get_buffer_frame_by_line
->xSampleBuffer.get_frame_by_line
xSample.get_buffer_frame_by_beat
->xSampleBuffer.get_frame_by_beat
xSample.SAMPLE_INFO
->xSampleBuffer.SAMPLE_INFO
xSample.SAMPLE_CHANNELS
->xSampleBuffer.SAMPLE_CHANNELS
xSample.BIT_DEPTH
->xSampleBuffer.BIT_DEPTH
xSample.SAMPLE_RATE
->xSampleBuffer.SAMPLE_RATE
- Fixed:
xPhraseManager.delete_selected_phrase_mapping
- resolve mapping, not phrase
xLinePattern
- ensure thatvisible_only
applies everywherexLinePattern.set_effect_column_command
- return the columnxPhrase.get_line_from_cursor
- fix value when last line in phrasexSample.get_buffer_frame_by_notepos
: obtain fraction from linexLinePattern
- use new syntax (amount_value
)xCursorPos
: make it clear that line can be fractionalxPhrase.get_line_from_cursor
: apply delay column to resultxLinePattern
- make table key names returned byget_effect_XX
more descriptivexLinePattern.get_effect_column_command
- allow it to search all columnsxLinePattern.get_available_effect_column
- allow optional start column for searchxLinePattern.set_effect_column_command
- don't search note cols if no column indexxLinePattern
- method for retrieving first effect column + writing effect commandsxPhrase
- method for determining line from pattern positionxLinePattern.get_effect_command
: includexEffectColumn.TYPE
in resultxInstrument.get_selected_phrase_index
- get selected phrase index in any instr.xParameterAutomation
- include "inverted" line boundaryxAudioDeviceAutomation
- addnumber_of_lines
methodxEnvelope
- addnumber_of_lines
method
- Specify dependencies within classes, using
cLib.require()
- Make offline automation classes extend from
cPersistence
xEnvelope
, refactored fromxParameterAutomation
(now a static class)xSongPos
: (fix) return when going past song boundaryxLib
: specify constants for sliced processing
- Added classes to deal with offline automation:
xAudioDeviceAutomation
,xParameterAutomation
- Refactored
xSelection
into separate classes:
xPatternSelection
,xMatrixSelection
,xPatternSelection
,xSequencerSelection
Method are now available as:
xSelection.get_pattern_track
->xPatternSelection.get_pattern_track
xSelection.get_pattern_column
->xPatternSelection.get_pattern_column
xSelection.get_pattern_if_single_track
->xPatternSelection.get_pattern_if_single_track
xSelection.get_column_in_track
->xPatternSelection.get_column_in_track
xSelection.get_group_in_pattern
->xPatternSelection.get_group_in_pattern
xSelection.get_phrase
->xPhraseSelection.get_phrase
xSelection.get_matrix_selection
->xMatrixSelection.get_selection
xSelection.get_entire_sequence
->xSequencerSelection.get_entire_range
xSelection.is_single_column
->xPatternSelection.is_single_column
xSelection.is_single_track
->xPatternSelection.is_single_track
xSelection.includes_note_columns
->xPatternSelection.includes_note_columns
xSelection.within_sequence_range
-->xSequencerSelection.within_range
xSelection.get_lines_in_range
-->xSequencerSelection.pluck_from_range
- Fixed
xTrack.get_next_track
/get_previous_track
: wrap_pattern option was always applied
xPhrase
: new DOC_PROPS implementation- Standalone version