diff options
-rw-r--r-- | gtk2_ardour/editor_audio_import.cc | 4 | ||||
-rw-r--r-- | gtk2_ardour/midi_region_view.cc | 2 | ||||
-rw-r--r-- | libs/ardour/ardour/importable_source.h | 14 | ||||
-rw-r--r-- | libs/ardour/ardour/resampled_source.h | 14 | ||||
-rw-r--r-- | libs/ardour/ardour/sndfileimportable.h | 21 | ||||
-rw-r--r-- | libs/ardour/import.cc | 1 | ||||
-rw-r--r-- | libs/ardour/resampled_source.cc | 5 | ||||
-rw-r--r-- | libs/ardour/sndfileimportable.cc | 8 |
8 files changed, 37 insertions, 32 deletions
diff --git a/gtk2_ardour/editor_audio_import.cc b/gtk2_ardour/editor_audio_import.cc index c1d51e11a4..db470fbe64 100644 --- a/gtk2_ardour/editor_audio_import.cc +++ b/gtk2_ardour/editor_audio_import.cc @@ -827,20 +827,16 @@ Editor::add_sources (vector<string> paths, SourceList& sources, nframes64_t& pos if (as->natural_position() != 0) { pos = as->natural_position(); - cerr << "\tgot " << pos << " from source TC info\n"; } else if (target_tracks == 1) { /* hmm, no timestamp available, put it after the previous region */ if (n == 0) { pos = get_preferred_edit_position (); - cerr << "\tno timestamp, first file, use edit pos = " << pos << endl; } else { pos += rlen; - cerr << "\tpacked-sequence-shuffle to " << pos << endl; } } else { pos = get_preferred_edit_position (); - cerr << "\tmultitracks, using edit position = " << pos << endl; } } diff --git a/gtk2_ardour/midi_region_view.cc b/gtk2_ardour/midi_region_view.cc index f3e1b2cd98..505380cc25 100644 --- a/gtk2_ardour/midi_region_view.cc +++ b/gtk2_ardour/midi_region_view.cc @@ -1997,7 +1997,7 @@ MidiRegionView::move_selection(double dx, double dy, double cumulative_dy) } if (dy && !_selection.empty() && !no_sound_notes && trackview.editor().sound_notes()) { - + if (to_play.size() > 1) { PossibleChord shifted; diff --git a/libs/ardour/ardour/importable_source.h b/libs/ardour/ardour/importable_source.h index 7df346a782..c610d546f2 100644 --- a/libs/ardour/ardour/importable_source.h +++ b/libs/ardour/ardour/importable_source.h @@ -30,13 +30,13 @@ public: ImportableSource () {} virtual ~ImportableSource() {} - virtual nframes_t read (Sample* buffer, nframes_t nframes) = 0; - virtual float ratio() const { return 1.0f; } - virtual uint32_t channels() const = 0; - virtual nframes_t length() const = 0; - virtual nframes_t samplerate() const = 0; - virtual void seek (nframes_t pos) = 0; - virtual nframes64_t natural_position() const = 0; + virtual nframes_t read (Sample* buffer, nframes_t nframes) = 0; + virtual float ratio() const { return 1.0f; } + virtual uint32_t channels() const = 0; + virtual framecnt_t length() const = 0; + virtual nframes_t samplerate() const = 0; + virtual void seek (nframes_t pos) = 0; + virtual framepos_t natural_position() const = 0; virtual bool clamped_at_unity () const = 0; }; diff --git a/libs/ardour/ardour/resampled_source.h b/libs/ardour/ardour/resampled_source.h index b61303b65c..6d630bc44b 100644 --- a/libs/ardour/ardour/resampled_source.h +++ b/libs/ardour/ardour/resampled_source.h @@ -34,13 +34,13 @@ class ResampledImportableSource : public ImportableSource ~ResampledImportableSource (); - nframes_t read (Sample* buffer, nframes_t nframes); - float ratio() const { return src_data.src_ratio; } - uint32_t channels() const { return source->channels(); } - nframes_t length() const { return source->length(); } - nframes_t samplerate() const { return source->samplerate(); } - void seek (nframes_t); - nframes64_t natural_position() const { return source->natural_position(); } + nframes_t read (Sample* buffer, nframes_t nframes); + float ratio() const { return src_data.src_ratio; } + uint32_t channels() const { return source->channels(); } + framecnt_t length() const { return source->length(); } + nframes_t samplerate() const { return source->samplerate(); } + void seek (nframes_t); + framepos_t natural_position() const; bool clamped_at_unity () const { /* resampling may generate inter-sample peaks with magnitude > 1 */ diff --git a/libs/ardour/ardour/sndfileimportable.h b/libs/ardour/ardour/sndfileimportable.h index 6e308415c9..aab8b6ac59 100644 --- a/libs/ardour/ardour/sndfileimportable.h +++ b/libs/ardour/ardour/sndfileimportable.h @@ -33,18 +33,23 @@ class SndFileImportableSource : public ImportableSource { SndFileImportableSource (const std::string& path); virtual ~SndFileImportableSource(); - nframes_t read (Sample* buffer, nframes_t nframes); - uint32_t channels() const; - nframes_t length() const; - nframes_t samplerate() const; - void seek (nframes_t pos); - nframes64_t natural_position() const; - bool clamped_at_unity () const; + nframes_t read (Sample* buffer, nframes_t nframes); + uint32_t channels() const; + framecnt_t length() const; + nframes_t samplerate() const; + void seek (nframes_t pos); + framepos_t natural_position() const; + bool clamped_at_unity () const; protected: SF_INFO sf_info; boost::shared_ptr<SNDFILE> in; - nframes_t timecode; + + /* these are int64_t so as to be independent of whatever + types Ardour may use for framepos_t, framecnt_t etc. + */ + + int64_t timecode; int64_t get_timecode_info (SNDFILE*, SF_BROADCAST_INFO*, bool&); }; diff --git a/libs/ardour/import.cc b/libs/ardour/import.cc index 784fedefdb..13fb859efe 100644 --- a/libs/ardour/import.cc +++ b/libs/ardour/import.cc @@ -214,7 +214,6 @@ create_mono_sources_for_writing (const vector<string>& new_paths, Session& sess, { const DataType type = SMFSource::safe_midi_file_extension (*i) ? DataType::MIDI : DataType::AUDIO; - source = SourceFactory::createWritable (type, sess, i->c_str(), false, // destructive diff --git a/libs/ardour/resampled_source.cc b/libs/ardour/resampled_source.cc index 675a0e426d..7379aa74af 100644 --- a/libs/ardour/resampled_source.cc +++ b/libs/ardour/resampled_source.cc @@ -134,3 +134,8 @@ ResampledImportableSource::seek (nframes_t pos) src_data.end_of_input = 0; } +framepos_t +ResampledImportableSource::natural_position () const +{ + return source->natural_position() * ratio (); +} diff --git a/libs/ardour/sndfileimportable.cc b/libs/ardour/sndfileimportable.cc index 99697b888f..b51ad3634a 100644 --- a/libs/ardour/sndfileimportable.cc +++ b/libs/ardour/sndfileimportable.cc @@ -57,10 +57,10 @@ SndFileImportableSource::channels () const return sf_info.channels; } -nframes_t +framecnt_t SndFileImportableSource::length () const { - return sf_info.frames; + return (framecnt_t) sf_info.frames; } nframes_t @@ -75,10 +75,10 @@ SndFileImportableSource::seek (nframes_t /*pos*/) sf_seek (in.get(), 0, SEEK_SET); } -nframes64_t +framepos_t SndFileImportableSource::natural_position () const { - return timecode; + return (framepos_t) timecode; } bool |