本文整理汇总了C++中Hydrogen::getTimeline方法的典型用法代码示例。如果您正苦于以下问题:C++ Hydrogen::getTimeline方法的具体用法?C++ Hydrogen::getTimeline怎么用?C++ Hydrogen::getTimeline使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Hydrogen
的用法示例。
在下文中一共展示了Hydrogen::getTimeline方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: action_file_new
void MainForm::action_file_new()
{
Hydrogen * pEngine = Hydrogen::get_instance();
if ( (pEngine->getState() == STATE_PLAYING) ) {
pEngine->sequencer_stop();
}
bool proceed = handleUnsavedChanges();
if(!proceed) {
return;
}
h2app->m_undoStack->clear();
pEngine->getTimeline()->m_timelinevector.clear();
Song * pSong = Song::get_empty_song();
pSong->set_filename( "" );
h2app->setSong(pSong);
pEngine->setSelectedPatternNumber( 0 );
h2app->getInstrumentRack()->getSoundLibraryPanel()->update_background_color();
h2app->getSongEditorPanel()->updatePositionRuler();
pEngine->getTimeline()->m_timelinetagvector.clear();
// update director tags
EventQueue::get_instance()->push_event( EVENT_METRONOME, 2 );
// update director songname
EventQueue::get_instance()->push_event( EVENT_METRONOME, 3 );
}
示例2: on_okBtn_clicked
void SongEditorPanelTagWidget::on_okBtn_clicked()
{
Hydrogen* engine = Hydrogen::get_instance();
Timeline* pTimeline = engine->getTimeline();
int patterngroupvectorsize;
patterngroupvectorsize = engine->getSong()->get_pattern_group_vector()->size();
//oldText list contains all old item values. we need them for undo an item
QStringList oldText;
if(pTimeline->m_timelinetagvector.size() > 0){
for (int i = 0; i < patterngroupvectorsize; i++){
oldText << "";
}
for(int i = 0; i < pTimeline->m_timelinetagvector.size(); ++i){
oldText.replace(pTimeline->m_timelinetagvector[i].m_htimelinetagbeat , pTimeline->m_timelinetagvector[i].m_htimelinetag);
}
}
for( int i = 0; i < __theChangedItems.size() ; i++ )
{
QTableWidgetItem *newTagItem = new QTableWidgetItem();
int songPosition = __theChangedItems.value( i ).toInt();
newTagItem = tagTableWidget->item( songPosition, 0 );
if ( newTagItem ) {
SE_editTagAction *action = new SE_editTagAction( newTagItem->text() ,oldText.value( songPosition ), songPosition );
HydrogenApp::get_instance()->m_undoStack->push( action );
}
}
accept();
}
示例3: createTheTagTableWidget
void SongEditorPanelTagWidget::createTheTagTableWidget()
{
Hydrogen* engine = Hydrogen::get_instance();
Timeline* pTimeline = engine->getTimeline();
int patterngroupvectorsize;
patterngroupvectorsize = engine->getSong()->get_pattern_group_vector()->size();
for( int i = 0; i < patterngroupvectorsize; i++ )
{
tagTableWidget->insertRow( i );
}
std::vector<Timeline::HTimelineTagVector> timelineTagVector = pTimeline->m_timelinetagvector;
//read the tag vector and fill all tags into items
if( timelineTagVector.size() > 0 ){
for ( unsigned int t = 0; t < timelineTagVector.size(); t++ ){
QTableWidgetItem *newTagItem = new QTableWidgetItem();
newTagItem->setText( QString( "%1" ).arg( timelineTagVector[t].m_htimelinetag ) );
tagTableWidget->setItem( timelineTagVector[t].m_htimelinetagbeat, 0, newTagItem );
tagTableWidget->setCurrentItem( newTagItem );
tagTableWidget->openPersistentEditor( newTagItem );
}
}
//activate the clicked item and
//if you click on an existing tag
//fill in the old contend
if( timelineTagVector.size() > 0 ){
int vpos = -1;
QTableWidgetItem *newTagItem2 = new QTableWidgetItem();
newTagItem2->setText( QString( "" ) );
for ( unsigned int t = 0; t < timelineTagVector.size(); t++ ){
if( timelineTagVector[t].m_htimelinetagbeat == m_stimelineposition){
vpos = t;
}
}
if( vpos >-1 ){
newTagItem2->setText( QString( "%1" ).arg( timelineTagVector[vpos].m_htimelinetag ) );
}
tagTableWidget->setItem( m_stimelineposition , 0, newTagItem2 );
tagTableWidget->setCurrentItem( newTagItem2 );
tagTableWidget->openPersistentEditor( newTagItem2 );
}
//add first tag
if( timelineTagVector.size() == 0 ){
QTableWidgetItem *newTagItem3 = new QTableWidgetItem();
tagTableWidget->setItem( m_stimelineposition , 0, newTagItem3 );
tagTableWidget->setCurrentItem( newTagItem3 );
tagTableWidget->openPersistentEditor( newTagItem3 );
}
}
示例4: on_deleteBtn_clicked
void SongEditorPanelBpmWidget::on_deleteBtn_clicked()
{
Hydrogen* engine = Hydrogen::get_instance();
Timeline* pTimeline = engine->getTimeline();
float oldBpm = -1.0;
//search for an old entry
if( pTimeline->m_timelinevector.size() >= 1 ){
for ( int t = 0; t < pTimeline->m_timelinevector.size(); t++){
if ( pTimeline->m_timelinevector[t].m_htimelinebeat == ( QString( lineEditBeat->text() ).toInt() ) -1 ) {
oldBpm = pTimeline->m_timelinevector[t].m_htimelinebpm;
}
}
}
SE_deleteTimeLineAction *action = new SE_deleteTimeLineAction( lineEditBeat->text().toInt(), oldBpm );
HydrogenApp::get_instance()->m_undoStack->push( action );
accept();
}
示例5: QDialog
SongEditorPanelBpmWidget::SongEditorPanelBpmWidget( QWidget* pParent, int beat )
: QDialog( pParent )
, Object( __class_name )
, m_stimelineposition ( beat )
{
setupUi( this );
INFOLOG( "INIT" );
setWindowTitle( trUtf8( "BPM" ) );
setFixedSize( width(), height() );
lineEditBeat->setText(QString("%1").arg( m_stimelineposition + 1) );
deleteBtn->setEnabled ( false );
Hydrogen* engine = Hydrogen::get_instance();
Timeline* pTimeline = engine->getTimeline();
std::vector<Timeline::HTimelineVector> timelineVector = pTimeline->m_timelinevector;
//restore the bpm value
if( timelineVector.size() > 0 ){
for ( int t = 0; t < timelineVector.size(); t++ ){
// ERRORLOG(QString("%1 %2").arg(Hydrogen::get_instance()->m_timelinevector[t].m_htimelinebeat).arg(m_stimelineposition));
if ( timelineVector[t].m_htimelinebeat == m_stimelineposition ) {
lineEditBpm->setText( QString("%1").arg( timelineVector[t].m_htimelinebpm ) );
deleteBtn->setEnabled ( true );
return;
}
else
{
lineEditBpm->setText( QString("%1").arg( engine->getNewBpmJTM()) );
}
}
}else
{
lineEditBpm->setText( QString("%1").arg( engine->getNewBpmJTM() ) );
}
}
示例6: on_m_pPlaylistTree_itemDoubleClicked
void PlaylistDialog::on_m_pPlaylistTree_itemDoubleClicked ()
{
QTreeWidgetItem* m_pPlaylistItem = m_pPlaylistTree->currentItem();
if ( m_pPlaylistItem == NULL ){
QMessageBox::information ( this, "Hydrogen", trUtf8 ( "No Song selected!" ) );
return;
}
QString selected;
selected = m_pPlaylistItem->text ( 0 );
QTreeWidget* m_pPlaylist = m_pPlaylistTree;
int index = m_pPlaylist->indexOfTopLevelItem ( m_pPlaylistItem );
Playlist::get_instance()->setSelectedSongNr( index );
Playlist::get_instance()->setActiveSongNumber( index );
HydrogenApp *pH2App = HydrogenApp::get_instance();
Hydrogen *pEngine = Hydrogen::get_instance();
if ( pEngine->getState() == STATE_PLAYING ){
pEngine->sequencer_stop();
}
m_pPlayBtn->setPressed(false);
Timeline* pTimeline = pEngine->getTimeline();
pTimeline->m_timelinetagvector.clear();
Song *pSong = Song::load ( selected );
if ( pSong == NULL ){
QMessageBox::information ( this, "Hydrogen", trUtf8 ( "Error loading song." ) );
return;
}
pH2App->setSong ( pSong );
pEngine->setSelectedPatternNumber ( 0 );
HydrogenApp::get_instance()->getSongEditorPanel()->updatePositionRuler();
pH2App->setStatusBarMessage( trUtf8( "Playlist: set song no. %1" ).arg( index +1 ), 5000 );
HydrogenApp::get_instance()->getInstrumentRack()->getSoundLibraryPanel()->update_background_color();
EventQueue::get_instance()->push_event( EVENT_METRONOME, 3 );
///exec script
///this is very very simple and only an experiment
#ifdef WIN32
//I know nothing about windows scripts -wolke-
return;
#else
QString execscript;
selected = m_pPlaylistItem->text ( 1 );
bool execcheckbox = m_pPlaylistItem->checkState ( 2 );
if( execcheckbox == false){
//QMessageBox::information ( this, "Hydrogen", trUtf8 ( "No Script selected!" ));
return;
}
if( execscript == "Script not used"){
//QMessageBox::information ( this, "Hydrogen", trUtf8 ( "Script not in use!" ));
return;
}
char *file;
file = new char[ selected.length() + 1 ];
strcpy( file , selected.toAscii() );
int ret = std::system( file );
delete [] file;
return;
#endif
}
示例7: diskWriterDriver_thread
//.........这里部分代码省略.........
if ( !sf_format_check( &soundInfo ) ) {
__ERRORLOG( "Error in soundInfo" );
return 0;
}
SNDFILE* m_file = sf_open( pDriver->m_sFilename.toLocal8Bit(), SFM_WRITE, &soundInfo );
float *pData = new float[ pDriver->m_nBufferSize * 2 ]; // always stereo
float *pData_L = pDriver->m_pOut_L;
float *pData_R = pDriver->m_pOut_R;
Hydrogen* engine = Hydrogen::get_instance();
std::vector<PatternList*> *pPatternColumns = Hydrogen::get_instance()->getSong()->get_pattern_group_vector();
int nColumns = pPatternColumns->size();
int nPatternSize;
int validBpm = engine->getSong()->__bpm;
float oldBPM = 0;
float ticksize = 0;
for ( int patternposition = 0; patternposition < nColumns; ++patternposition ) {
PatternList *pColumn = ( *pPatternColumns )[ patternposition ];
if ( pColumn->size() != 0 ) {
nPatternSize = pColumn->get( 0 )->get_length();
} else {
nPatternSize = MAX_NOTES;
}
ticksize = pDriver->m_nSampleRate * 60.0 / engine->getSong()->__bpm / engine->getSong()->__resolution;
// check pattern bpm if timeline bpm is in use
Timeline* pTimeline = engine->getTimeline();
if(Preferences::get_instance()->getUseTimelineBpm() ){
if( pTimeline->m_timelinevector.size() >= 1 ){
for ( int t = 0; t < pTimeline->m_timelinevector.size(); t++){
if(pTimeline->m_timelinevector[t].m_htimelinebeat == patternposition &&
pTimeline->m_timelinevector[t].m_htimelinebpm != validBpm){
validBpm = pTimeline->m_timelinevector[t].m_htimelinebpm;
}
}
}
pDriver->setBpm(validBpm);
ticksize = pDriver->m_nSampleRate * 60.0 / validBpm / Hydrogen::get_instance()->getSong()->__resolution;
pDriver->audioEngine_process_checkBPMChanged();
engine->setPatternPos(patternposition);
// delay needed time to calculate all rubberband samples
if( Preferences::get_instance()->getRubberBandBatchMode() && validBpm != oldBPM ){
EventQueue::get_instance()->push_event( EVENT_RECALCULATERUBBERBAND, -1);
int sleepTime = Preferences::get_instance()->getRubberBandCalcTime()+1;
while ((sleepTime = sleep(sleepTime)) > 0);
}
oldBPM = validBpm;
}
else
{
ticksize = pDriver->m_nSampleRate * 60.0 / Hydrogen::get_instance()->getSong()->__bpm / Hydrogen::get_instance()->getSong()->__resolution;
//pDriver->m_transport.m_nTickSize = ticksize;
}