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_rangemethodxSample: 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_notexSampleMapping.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_depthxSample.bits_to_xbits->xSampleBuffer.bits_to_xbitsxSample.get_channel_info->xSampleBuffer.get_channel_infoxSample.sample_buffer_is_silent->xSampleBuffer.is_silentxSample.detect_leading_trailing_silence->xSampleBuffer.detect_leading_trailing_silencexSample.set_buffer_selection->xSampleBuffer.set_buffer_selectionxSample.get_buffer_frame_by_line->xSampleBuffer.get_frame_by_linexSample.get_buffer_frame_by_beat->xSampleBuffer.get_frame_by_beatxSample.SAMPLE_INFO->xSampleBuffer.SAMPLE_INFOxSample.SAMPLE_CHANNELS->xSampleBuffer.SAMPLE_CHANNELSxSample.BIT_DEPTH->xSampleBuffer.BIT_DEPTHxSample.SAMPLE_RATE->xSampleBuffer.SAMPLE_RATE - Fixed:
xPhraseManager.delete_selected_phrase_mapping- resolve mapping, not phrase
xLinePattern- ensure thatvisible_onlyapplies 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_XXmore 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.TYPEin resultxInstrument.get_selected_phrase_index- get selected phrase index in any instr.xParameterAutomation- include "inverted" line boundaryxAudioDeviceAutomation- addnumber_of_linesmethodxEnvelope- addnumber_of_linesmethod
- 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
xSelectioninto 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