⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rosegardenguiview.cpp

📁 LINUX下的混音软件
💻 CPP
📖 第 1 页 / 共 5 页
字号:
            states[instrumentId] = (isNew ? newState : oldState);        }        if (recStates[instrumentId] == unknownState) {            bool isNew = mapper->getInstrumentRecordLevel(instrumentId,                         recLevels[instrumentId]);            recStates[instrumentId] = (isNew ? newState : oldState);        }        if (states[instrumentId] == oldState &&                recStates[instrumentId] == oldState)            continue;        Instrument *instrument =            getDocument()->getStudio().getInstrumentById(instrumentId);        if (!instrument)            continue;		// This records the level of this instrument, not neccessarily		//  caused by notes on this particular track.        LevelInfo &info = levels[instrumentId];        LevelInfo &recInfo = recLevels[instrumentId];        if (instrument->getType() == Instrument::Audio ||                instrument->getType() == Instrument::SoftSynth) {            float dBleft = AudioLevel::DB_FLOOR;            float dBright = AudioLevel::DB_FLOOR;            float recDBleft = AudioLevel::DB_FLOOR;            float recDBright = AudioLevel::DB_FLOOR;            bool toSet = false;            if (states[instrumentId] == newState &&                    (getDocument()->getSequenceManager()->getTransportStatus()                     != STOPPED)) {                if (info.level != 0 || info.levelRight != 0) {                    dBleft = AudioLevel::fader_to_dB                             (info.level, 127, AudioLevel::LongFader);                    dBright = AudioLevel::fader_to_dB                              (info.levelRight, 127, AudioLevel::LongFader);                }                toSet = true;                m_trackEditor->getTrackButtons()->slotSetTrackMeter                ((info.level + info.levelRight) / 254.0, track->getPosition());            }            if (recStates[instrumentId] == newState &&                    instrument->getType() == Instrument::Audio &&                    (getDocument()->getSequenceManager()->getTransportStatus()                     != PLAYING)) {                if (recInfo.level != 0 || recInfo.levelRight != 0) {                    recDBleft = AudioLevel::fader_to_dB                                (recInfo.level, 127, AudioLevel::LongFader);                    recDBright = AudioLevel::fader_to_dB                                 (recInfo.levelRight, 127, AudioLevel::LongFader);                }                toSet = true;            }            if (toSet &&                    m_instrumentParameterBox->getSelectedInstrument() &&                    instrument->getId() ==                    m_instrumentParameterBox->getSelectedInstrument()->getId()) {                m_instrumentParameterBox->setAudioMeter(dBleft, dBright,                                                        recDBleft, recDBright);            }        } else {			// Not audio or softsynth            if (info.level == 0)                continue;            if (getDocument()->getSequenceManager()->getTransportStatus()                    != STOPPED) {				// The information in 'info' is specific for this instrument, not				//  for this track.				//m_trackEditor->getTrackButtons()->slotSetTrackMeter				//	(info.level / 127.0, track->getPosition());                m_trackEditor->getTrackButtons()->slotSetMetersByInstrument                	(info.level / 127.0, instrumentId);            }        }    }    for (StateMap::iterator i = states.begin(); i != states.end(); ++i) {        if (i->second == newState) {            emit instrumentLevelsChanged(i->first, levels[i->first]);        }    }}voidRosegardenGUIView::updateMonitorMeters(SequencerMapper *mapper){    Instrument *instrument =        m_instrumentParameterBox->getSelectedInstrument();    if (!instrument ||            (instrument->getType() != Instrument::Audio))        return ;    LevelInfo level;    if (!mapper->getInstrumentRecordLevel(instrument->getId(), level))        return ;    float dBleft = AudioLevel::fader_to_dB                   (level.level, 127, AudioLevel::LongFader);    float dBright = AudioLevel::fader_to_dB                    (level.levelRight, 127, AudioLevel::LongFader);    m_instrumentParameterBox->setAudioMeter    (AudioLevel::DB_FLOOR, AudioLevel::DB_FLOOR,     dBleft, dBright);}voidRosegardenGUIView::slotSelectedSegments(const SegmentSelection &segments){    // update the segment parameter box    m_segmentParameterBox->useSegments(segments);    if (!segments.empty()) {        emit stateChange("have_selection", true);        if (!segments.hasNonAudioSegment())            emit stateChange("audio_segment_selected", true);    } else {        emit stateChange("have_selection", false);    }    emit segmentsSelected(segments);}void RosegardenGUIView::slotShowRulers(bool v){    if (v) {        m_trackEditor->getTopStandardRuler()->getLoopRuler()->show();        m_trackEditor->getBottomStandardRuler()->getLoopRuler()->show();    } else {        m_trackEditor->getTopStandardRuler()->getLoopRuler()->hide();        m_trackEditor->getBottomStandardRuler()->getLoopRuler()->hide();    }}void RosegardenGUIView::slotShowTempoRuler(bool v){    if (v) {        m_trackEditor->getTempoRuler()->show();    } else {        m_trackEditor->getTempoRuler()->hide();    }}void RosegardenGUIView::slotShowChordNameRuler(bool v){    if (v) {        m_trackEditor->getChordNameRuler()->setStudio(&getDocument()->getStudio());        m_trackEditor->getChordNameRuler()->show();    } else {        m_trackEditor->getChordNameRuler()->hide();    }}void RosegardenGUIView::slotShowPreviews(bool v){    m_trackEditor->getSegmentCanvas()->setShowPreviews(v);    m_trackEditor->getSegmentCanvas()->slotUpdateSegmentsDrawBuffer();}void RosegardenGUIView::slotShowSegmentLabels(bool v){    m_trackEditor->getSegmentCanvas()->setShowSegmentLabels(v);    m_trackEditor->getSegmentCanvas()->slotUpdateSegmentsDrawBuffer();}void RosegardenGUIView::slotAddTracks(unsigned int nbTracks,                                      InstrumentId id, int pos){    RG_DEBUG << "RosegardenGUIView::slotAddTracks(" << nbTracks << ", " << pos << ")" << endl;    m_trackEditor->slotAddTracks(nbTracks, id, pos);}void RosegardenGUIView::slotDeleteTracks(    std::vector<TrackId> tracks){    RG_DEBUG << "RosegardenGUIView::slotDeleteTracks - "    << "deleting " << tracks.size() << " tracks"    << endl;    m_trackEditor->slotDeleteTracks(tracks);}MultiViewCommandHistory*RosegardenGUIView::getCommandHistory(){    return getDocument()->getCommandHistory();}voidRosegardenGUIView::slotAddCommandToHistory(KCommand *command){    getCommandHistory()->addCommand(command);}voidRosegardenGUIView::slotChangeInstrumentLabel(InstrumentId id,        QString label){    m_trackEditor->getTrackButtons()->changeInstrumentLabel(id, label);}voidRosegardenGUIView::slotChangeTrackLabel(TrackId id,                                        QString label){    m_trackEditor->getTrackButtons()->changeTrackLabel(id, label);}voidRosegardenGUIView::slotAddAudioSegment(AudioFileId audioId,                                       TrackId trackId,                                       timeT position,                                       const RealTime &startTime,                                       const RealTime &endTime){    AudioSegmentInsertCommand *command =        new AudioSegmentInsertCommand(getDocument(),                                      trackId,                                      position,                                      audioId,                                      startTime,                                      endTime);    slotAddCommandToHistory(command);    Segment *newSegment = command->getNewSegment();    if (newSegment) {        SegmentSelection selection;        selection.insert(newSegment);        slotPropagateSegmentSelection(selection);        emit segmentsSelected(selection);    }}voidRosegardenGUIView::slotAddAudioSegmentCurrentPosition(AudioFileId audioFileId,        const RealTime &startTime,        const RealTime &endTime){    Composition &comp = getDocument()->getComposition();    AudioSegmentInsertCommand *command =        new AudioSegmentInsertCommand(getDocument(),                                      comp.getSelectedTrack(),                                      comp.getPosition(),                                      audioFileId,                                      startTime,                                      endTime);    slotAddCommandToHistory(command);    Segment *newSegment = command->getNewSegment();    if (newSegment) {        SegmentSelection selection;        selection.insert(newSegment);        slotPropagateSegmentSelection(selection);        emit segmentsSelected(selection);    }}voidRosegardenGUIView::slotAddAudioSegmentDefaultPosition(AudioFileId audioFileId,        const RealTime &startTime,        const RealTime &endTime){    // Add at current track if it's an audio track, otherwise at first    // empty audio track if there is one, otherwise at first audio track.    // This behaviour should be of no interest to proficient users (who    // should have selected the right track already, or be using drag-    // and-drop) but it should save beginners from inserting an audio    // segment and being quite unable to work out why it won't play    Composition &comp = getDocument()->getComposition();    Studio &studio = getDocument()->getStudio();    TrackId currentTrackId = comp.getSelectedTrack();    Track *track = comp.getTrackById(currentTrackId);    if (track) {        InstrumentId ii = track->getInstrument();        Instrument *instrument = studio.getInstrumentById(ii);        if (instrument &&                instrument->getType() == Instrument::Audio) {            slotAddAudioSegment(audioFileId, currentTrackId,                                comp.getPosition(), startTime, endTime);            return ;        }    }    // current track is not an audio track, find a more suitable one    TrackId bestSoFar = currentTrackId;    for (Composition::trackcontainer::const_iterator            ti = comp.getTracks().begin();            ti != comp.getTracks().end(); ++ti) {        InstrumentId ii = ti->second->getInstrument();        Instrument *instrument = studio.getInstrumentById(ii);        if (instrument &&                instrument->getType() == Instrument::Audio) {            if (bestSoFar == currentTrackId)                bestSoFar = ti->first;            bool haveSegment = false;            for (Composition::segmentcontainer::const_iterator si =                        comp.getSegments().begin();                    si != comp.getSegments().end(); ++si) {                if ((*si)->getTrack() == ti->first) {                    // there's a segment on this track                    haveSegment = true;                    break;                }            }            if (!haveSegment) { // perfect                slotAddAudioSegment(audioFileId, ti->first,                                    comp.getPosition(), startTime, endTime);                return ;            }        }    }    slotAddAudioSegment(audioFileId, bestSoFar,                        comp.getPosition(), startTime, endTime);    return ;}voidRosegardenGUIView::slotDroppedNewAudio(QString audioDesc){    QTextIStream s(&audioDesc);    QString url;    int trackId;    timeT time;    url = s.readLine();    s >> trackId;    s >> time;    std::cerr << "RosegardenGUIView::slotDroppedNewAudio: url " << url << ", trackId " << trackId << ", time " << time << std::endl;    RosegardenGUIApp *app = RosegardenGUIApp::self();    AudioFileManager &aFM = getDocument()->getAudioFileManager();    AudioFileId audioFileId = 0;    int sampleRate = 0;    if (getDocument()->getSequenceManager()) {        sampleRate = getDocument()->getSequenceManager()->getSampleRate();    }    KURL kurl(url);    if (!kurl.isLocalFile()) {        if (!RosegardenGUIApp::self()->testAudioPath("importing a remote audio file")) return;    } else if (aFM.fileNeedsConversion(qstrtostr(kurl.path()), sampleRate)) {	if (!RosegardenGUIApp::self()->testAudioPath("importing an audio file that needs to be converted or resampled")) return;    }    ProgressDialog progressDlg(i18n("Adding audio file..."),                               100,                               this);    CurrentProgressDialog::set(&progressDlg);    progressDlg.progressBar()->hide();    progressDlg.show();    // Connect the progress dialog    //    connect(&aFM, SIGNAL(setProgress(int)),            progressDlg.progressBar(), SLOT(setValue(int)));    connect(&aFM, SIGNAL(setOperationName(QString)),            &progressDlg, SLOT(slotSetOperationName(QString)));    connect(&progressDlg, SIGNAL(cancelClicked()),

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -