Exemple #1
0
bool RawPlayer::load(const std::string& filename)
{
    FileStream f(filename);
    if(!f)
        return false;

    // file validation section
    char id[8];
    f.read(id, 8);
    if(!std::equal(id, id + 8, "RAWADATA"))
    {
        return false;
    }

    // load section
    uint16_t clock;
    f >> clock;
    setInitialSpeed(clock);
    setCurrentSpeed(clock);

    BOOST_ASSERT(f.pos() == 10);
    static_assert(sizeof(TrackData) == 2, "Ooops");
    m_data.resize((f.size() - 10) / 2);
    f.read(m_data.data(), m_data.size());

    addOrder(0);

    rewind(0);
    return true;
}
Exemple #2
0
void RawPlayer::rewind(const boost::optional<size_t>&)
{
    m_dataPosition = m_delay = 0;
    setCurrentSpeed(initialSpeed());
    m_songend = false;
    getOpl()->writeReg(1, 32); // go to 9 channel mode
}
Exemple #3
0
void Pokemon::SetStatsForLevel()
{
	setHP(round(ceil(2 * getBaseHP() + 31) * getLevel() / 100 + getLevel() + 10));
   setAtt(round(ceil(2 * getBaseAtt() + 31) * getLevel() / 100 + 5));
   setDef(round(ceil(2 * getBaseDef() + 31) * getLevel() / 100 + 5));
   setSpeed(round(ceil(2 * getBaseSpeed() + 31) * getLevel() / 100 + 5));

	setCurrentHP(getHP());
	setCurrentAtt(getAtt());
	setCurrentDef(getDef());
	setCurrentSpeed(getSpeed());
}
Exemple #4
0
bool RawPlayer::update()
{
    if(m_dataPosition >= m_data.size())
        return false;

    if(m_delay > 0)
    {
        --m_delay;
        return !m_songend;
    }

    while(m_dataPosition < m_data.size())
    {
        const auto& d = m_data[m_dataPosition++];
        bool setspeed = false;
        switch(d.command)
        {
            case 0:
                BOOST_ASSERT(d.param > 0);
                m_delay = d.param - 1;
                break;
            case 2:
                if(d.param != 0)
                {
                    setCurrentSpeed(d.param + (d.command * 256));
                    setspeed = true;
                }
                else
                {
                    ; //FIXME sto opl->setchip(data[pos].param - 1);
                }
                break;
            case 0xff:
                if(d.param == 0xff)
                {
                    rewind(0); // auto-rewind song
                    m_songend = true;
                    return !m_songend;
                }
                break;
            default:
                getOpl()->writeReg(d.command, d.param);
                break;
        }
        if(!setspeed && d.command == 0)
            break;
    }

    return !m_songend;
}
Exemple #5
0
void Controller::initController(int channel, int velocity, int base_octave, int transpose, int speed)
{
    setCurrentChannel(channel);
    setCurrentVelocity(velocity);
    setCurrentBase_octave(base_octave);
    setCurrentTranspose(transpose);
    setCurrentSpeed(speed);

    ui->label_dp_key_pic->setPixmap(QPixmap(":/images/C Major_A Minor.jpg"));
    ui->label_dp_key->setText("C Major | A Minor");
    ui->btn_note_24->setChecked(true);
    ui->label_dp_meter_pic->setPixmap(QPixmap(":/images/4_4.png"));
    ui->label_dp_meter->setText(QString::fromUtf8("4/4拍"));

    currentStatus->setKey(0);
    currentStatus->setMeter(FOUR4);
    currentStatus->setSpeed(speed);
    currentStatus->setTone(1);
    currentStatus->setVolume(velocity);
}
Exemple #6
0
int Controller::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
    _id = QToolBox::qt_metacall(_c, _id, _a);
    if (_id < 0)
        return _id;
    if (_c == QMetaObject::InvokeMetaMethod) {
        switch (_id) {
        case 0: channelChanged((*reinterpret_cast< int(*)>(_a[1]))); break;
        case 1: velocityChanged((*reinterpret_cast< int(*)>(_a[1]))); break;
        case 2: base_octaveChanged((*reinterpret_cast< int(*)>(_a[1]))); break;
        case 3: transposeChanged((*reinterpret_cast< int(*)>(_a[1]))); break;
        case 4: enableEdit((*reinterpret_cast< bool(*)>(_a[1]))); break;
        case 5: durationChanged((*reinterpret_cast< QAction*(*)>(_a[1]))); break;
        case 6: pauseFlag((*reinterpret_cast< int(*)>(_a[1]))); break;
        case 7: dotEnable((*reinterpret_cast< bool(*)>(_a[1]))); break;
        case 8: setCurrentChannel((*reinterpret_cast< int(*)>(_a[1]))); break;
        case 9: setCurrentVelocity((*reinterpret_cast< int(*)>(_a[1]))); break;
        case 10: setCurrentBase_octave((*reinterpret_cast< int(*)>(_a[1]))); break;
        case 11: setCurrentTranspose((*reinterpret_cast< int(*)>(_a[1]))); break;
        case 12: setCurrentSpeed((*reinterpret_cast< int(*)>(_a[1]))); break;
        case 13: setCurrentMeter((*reinterpret_cast< Meter(*)>(_a[1]))); break;
        case 14: setCurrentKey((*reinterpret_cast< int(*)>(_a[1]))); break;
        case 15: on_btn_note_dot_clicked((*reinterpret_cast< bool(*)>(_a[1]))); break;
        case 16: on_btn_run_clicked(); break;
        case 17: on_slider_speed_valueChanged((*reinterpret_cast< int(*)>(_a[1]))); break;
        case 18: on_slider_meter_valueChanged((*reinterpret_cast< int(*)>(_a[1]))); break;
        case 19: on_slider_key_valueChanged((*reinterpret_cast< int(*)>(_a[1]))); break;
        case 20: on_slider_transpose_valueChanged((*reinterpret_cast< int(*)>(_a[1]))); break;
        case 21: on_slider_base_octave_valueChanged((*reinterpret_cast< int(*)>(_a[1]))); break;
        case 22: on_slider_channel_valueChanged((*reinterpret_cast< int(*)>(_a[1]))); break;
        case 23: on_slider_velocity_valueChanged((*reinterpret_cast< int(*)>(_a[1]))); break;
        case 24: durationCheck((*reinterpret_cast< int(*)>(_a[1]))); break;
        case 25: pauseCheck((*reinterpret_cast< int(*)>(_a[1]))); break;
        default: ;
        }
        _id -= 26;
    }
    return _id;
}