| 2371 | | unsigned long Hydrogen::getHumantimeFrames() |
| 2372 | | { |
| 2373 | | return m_nHumantimeFrames; |
| 2374 | | } |
| 2375 | | |
| 2376 | | void Hydrogen::setHumantimeFrames(unsigned long hframes) |
| 2377 | | { |
| 2378 | | m_nHumantimeFrames = hframes; |
| 2379 | | } |
| 2380 | | |
| 2381 | | |
| 2382 | | |
| 2383 | | #ifdef JACK_SUPPORT |
| 2384 | | void Hydrogen::offJackMaster() |
| 2385 | | { |
| 2386 | | static_cast< JackOutput* >( m_pAudioDriver )->com_release(); |
| 2387 | | } |
| 2388 | | |
| 2389 | | void Hydrogen::onJackMaster() |
| 2390 | | { |
| 2391 | | static_cast< JackOutput* >( m_pAudioDriver )->initTimeMaster(); |
| 2392 | | } |
| 2393 | | |
| 2394 | | unsigned long Hydrogen::getTimeMasterFrames() |
| 2395 | | { |
| 2396 | | float allframes = 0 ; |
| 2397 | | |
| 2398 | | if ( m_pAudioDriver->m_transport.m_status == TransportInfo::STOPPED ){ |
| 2399 | | |
| 2400 | | int oldtick = getTickPosition(); |
| 2401 | | for (int i = 0; i <= getPatternPos(); i++){ |
| 2402 | | float framesforposition = |
| 2403 | | (long)getTickForHumanPosition(i) |
| 2404 | | * (float)m_pAudioDriver->m_transport.m_nTickSize; |
| 2405 | | allframes = framesforposition + allframes; |
| 2406 | | } |
| 2407 | | unsigned long framesfortimemaster = (unsigned int)( |
| 2408 | | allframes |
| 2409 | | + oldtick * (float)m_pAudioDriver->m_transport.m_nTickSize |
| 2410 | | ); |
| 2411 | | m_nHumantimeFrames = framesfortimemaster; |
| 2412 | | return framesfortimemaster; |
| 2413 | | }else |
| 2414 | | { |
| 2415 | | return m_nHumantimeFrames; |
| 2416 | | } |
| 2417 | | } |
| 2418 | | #endif |
| 2419 | | |
| 2420 | | long Hydrogen::getTickForHumanPosition( int humanpos ) |
| 2421 | | { |
| 2422 | | std::vector< PatternList* > * columns = m_pSong->get_pattern_group_vector(); |
| 2423 | | |
| 2424 | | int nPatternGroups = columns->size(); |
| 2425 | | if ( humanpos >= nPatternGroups ) { |
| 2426 | | if ( m_pSong->is_loop_enabled() ) { |
| 2427 | | humanpos = humanpos % nPatternGroups; |
| 2428 | | } else { |
| 2429 | | return -1; |
| 2430 | | } |
| 2431 | | } |
| 2432 | | |
| 2433 | | // std::vector<PatternList*> *pColumns = |
| 2434 | | // m_pSong->get_pattern_group_vector()[ humanpos - 1 ] |
| 2435 | | // .get( 0 )->get_length(); |
| 2436 | | |
| 2437 | | // ERRORLOG( "Kick me!" ); |
| 2438 | | if ( humanpos == 0 ) return 0; |
| 2439 | | Pattern *pPattern = columns->at( humanpos - 1 )->get( 0 ); |
| 2440 | | if ( pPattern ) { |
| 2441 | | return pPattern->get_length(); |
| 2442 | | } else { |
| 2443 | | return MAX_NOTES; |
| 2444 | | } |
| 2445 | | // int nPatternSize; |
| 2446 | | |
| 2447 | | // pColumns |
| 2448 | | |
| 2449 | | /* Pattern *pPattern = NULL; |
| 2450 | | for ( int i = 0; i < humanpos; ++i ) { |
| 2451 | | PatternList *pColumn = ( *pColumns )[ i ]; |
| 2452 | | pPattern = pColumn->get( 0 ); |
| 2453 | | if ( pPattern ) { |
| 2454 | | nPatternSize = pPattern->get_length(); |
| 2455 | | } else { |
| 2456 | | nPatternSize = MAX_NOTES; |
| 2457 | | } |
| 2458 | | |
| 2459 | | humanTick = nPatternSize; |
| 2460 | | }*/ |
| 2461 | | // return humanTick; |
| 2462 | | } |
| 2463 | | |
| 2464 | | |
| 2465 | | |
| 2466 | | float Hydrogen::getNewBpmJTM() |
| 2467 | | { |
| 2468 | | return m_nNewBpmJTM; |
| 2469 | | } |
| 2470 | | |
| 2471 | | void Hydrogen::setNewBpmJTM( float bpmJTM ) |
| 2472 | | { |
| 2473 | | m_nNewBpmJTM = bpmJTM; |
| 2474 | | } |
| 2475 | | |
| | 2371 | |
| | 2372 | bool Hydrogen::setJackTimeMaster(bool if_none_already) |
| | 2373 | { |
| | 2374 | return m_pTransport->setJackTimeMaster(if_none_already); |
| | 2375 | } |
| | 2376 | |
| | 2377 | void Hydrogen::clearJackTimeMaster() |
| | 2378 | { |
| | 2379 | m_pTransport->clearJackTimeMaster(); |
| | 2380 | } |
| | 2381 | |
| | 2382 | bool Hydrogen::getJackTimeMaster() |
| | 2383 | { |
| | 2384 | return m_pTransport->getJackTimeMaster(); |
| | 2385 | } |