bool DirectInputRegistry::initKeyboard( HWND handle )
{
    if ( !_inputDevice ) return false;
    
    HRESULT hr = _inputDevice->CreateDevice( GUID_SysKeyboard, &_keyboard, NULL );
    if ( FAILED(hr) || _keyboard==NULL )
    {
        osg::notify(osg::WARN) << "Unable to create keyboard." << std::endl;
        return false;
    }
    buildKeyMap();
    return initImplementation( handle, _keyboard, &c_dfDIKeyboard );
}
Exemplo n.º 2
0
OSStatus AKSampler_Plugin::loadPreset()
{
    // Nicer way to load presets using .sfz metadata files. See bottom of AKSampler_Params.h
    // for instructions to download and set up these presets.
    const char *pPath = CFStringGetCStringPtr(presetFolderPath, kCFStringEncodingMacRoman);
    const char *pName = CFStringGetCStringPtr(presetName, kCFStringEncodingMacRoman);
    printf("loadPreset: %s...", pName);

    stopAllVoices();        // make sure no voices are active
    deinit();               // unload any samples already present
    
    char buf[1000];
    sprintf(buf, "%s/%s.sfz", pPath, pName);
    
    FILE* pfile = fopen(buf, "r");
    if (!pfile) return fnfErr;
    
    int lokey, hikey, pitch, lovel, hivel;
    bool isLooping;
    float fLoopStart, fLoopEnd;
    float volBoost, tuningOffset;
    char sampleFileName[100];
    char *p, *pp;

    while (fgets(buf, sizeof(buf), pfile))
    {
        p = buf;
        while (*p != 0 && isspace(*p)) p++;
        
        pp = strrchr(p, '\n');
        if (pp) *pp = 0;
        
        if (hasPrefix(p, "<group>"))
        {
            p += 7;
            lokey = 0;
            hikey = 127;
            pitch = 60;

            pp = strstr(p, " key");
            if (pp)
            {
                pp = strchr(pp, '=');
                if (pp) pp++;
                if (pp) pitch = hikey = lokey = atoi(pp);
            }
            
            pp = strstr(p, "lokey");
            if (pp)
            {
                pp = strchr(pp, '=');
                if (pp) pp++;
                if (pp) lokey = atoi(pp);
            }
            
            pp= strstr(p, "hikey");
            if (pp)
            {
                pp = strchr(pp, '=');
                if (pp) pp++;
                if (pp) hikey = atoi(pp);
            }
            
            pp= strstr(p, "pitch_keycenter");
            if (pp)
            {
                pp = strchr(pp, '=');
                if (pp) pp++;
                if (pp) pitch = atoi(pp);
            }
        }
        else if (hasPrefix(p, "<region>"))
        {
            p += 8;
            lovel = 0;
            hivel = 127;
            sampleFileName[0] = 0;
            isLooping = false;
            fLoopStart = 0.0f;
            fLoopEnd = 0.0f;
            volBoost = 0.0f;
            tuningOffset = 0.0f;
            
            pp = strstr(p, "lovel");
            if (pp)
            {
                pp = strchr(pp, '=');
                if (pp) pp++;
                if (pp) lovel = atoi(pp);
            }
            
            pp = strstr(p, "hivel");
            if (pp)
            {
                pp = strchr(pp, '=');
                if (pp) pp++;
                if (pp) hivel = atoi(pp);
            }

            pp = strstr(p, "volume");
            if (pp)
            {
                pp = strchr(pp, '=');
                if (pp) pp++;
                if (pp) volBoost = atof(pp);
            }

            pp = strstr(p, "tune");
            if (pp)
            {
                pp = strchr(pp, '=');
                if (pp) pp++;
                if (pp) tuningOffset = atof(pp);
            }

            pp = strstr(p, "loop_mode");
            if (pp)
            {
                isLooping = true;
            }

            pp = strstr(p, "loop_start");
            if (pp)
            {
                pp = strchr(pp, '=');
                if (pp) pp++;
                if (pp) fLoopStart = atof(pp);
            }
            
            pp = strstr(p, "loop_end");
            if (pp)
            {
                pp = strchr(pp, '=');
                if (pp) pp++;
                if (pp) fLoopEnd = atof(pp);
            }
            
            pp = strstr(p, "sample");
            if (pp)
            {
                pp = strchr(pp, '=');
                if (pp) pp++;
                while (*pp != 0 && isspace(*pp)) pp++;
                char* pq = sampleFileName;
                char* pdot = strrchr(pp, '.');
                while (pp < pdot) *pq++ = *pp++;
                strcpy(pq, ".wv");
            }
            
            sprintf(buf, "%s/%s", pPath, sampleFileName);

            AKSampleFileDescriptor sfd;
            sfd.path = buf;
            sfd.sampleDescriptor.isLooping = isLooping;
            sfd.sampleDescriptor.startPoint = 0.0;
            sfd.sampleDescriptor.loopStartPoint = fLoopStart;
            sfd.sampleDescriptor.loopEndPoint = fLoopEnd;
            sfd.sampleDescriptor.endPoint = 0.0f;
            sfd.sampleDescriptor.noteNumber = pitch;
            sfd.sampleDescriptor.noteFrequency = NOTE_HZ(sfd.sampleDescriptor.noteNumber - tuningOffset/100.0f);
            sfd.sampleDescriptor.minimumNoteNumber = lokey;
            sfd.sampleDescriptor.maximumNoteNumber = hikey;
            sfd.sampleDescriptor.minimumVelocity = lovel;
            sfd.sampleDescriptor.maximumVelocity = hivel;
            loadCompressedSampleFile(sfd, volBoost);
        }
    }
    fclose(pfile);
    
    buildKeyMap();
    restartVoices();    // now it's safe to start new notes
    printf("done\n");
    return noErr;
}
Exemplo n.º 3
0
 RocketUIManager::RocketUIManager()
   : mRenderSystemWrapper(0)
   , mIsSetUp(false)
 {
   buildKeyMap();
 }
Exemplo n.º 4
0
void AKSampler_Plugin::loadDemoSamples()
{
    // Example showing how to load a group of samples when you don't have a .sfz metadata file.
    
    // Download http://audiokit.io/downloads/TX_LoTine81z.zip
    // These are Wavpack-compressed versions of the similarly-named samples in ROMPlayer.
    // Put folder wherever you wish (e.g. inside a "Compressed Sounds" folder on your Mac desktop
    // and edit paths below accordingly
    
    char pathBuffer[200];
    const char* baseDir = "/Users/shane/Desktop/Compressed Sounds/";
    const char* samplePrefix = "TX LoTine81z/TX LoTine81z_ms";
    AKSampleFileDescriptor sfd;
    sfd.path = pathBuffer;
    sfd.sampleDescriptor.isLooping = false;    // set true to test looping with fractional endpoints
    sfd.sampleDescriptor.startPoint = 0.0;
    sfd.sampleDescriptor.loopStartPoint = 0.2f;
    sfd.sampleDescriptor.loopEndPoint = 0.3f;
    sfd.sampleDescriptor.endPoint = 0.0f;
    
    sfd.sampleDescriptor.noteNumber = 48;
    sfd.sampleDescriptor.noteFrequency = NOTE_HZ(sfd.sampleDescriptor.noteNumber);
    sfd.sampleDescriptor.minimumNoteNumber = 0; sfd.sampleDescriptor.maximumNoteNumber = 51;
    sfd.sampleDescriptor.minimumVelocity = 0; sfd.sampleDescriptor.maximumVelocity = 43;
    sprintf(pathBuffer, "%s%s%d_%03d_%s.wv", baseDir, samplePrefix, 2, sfd.sampleDescriptor.noteNumber, "c2");
    loadCompressedSampleFile(sfd);
    sfd.sampleDescriptor.minimumVelocity = 44; sfd.sampleDescriptor.maximumVelocity = 86;
    sprintf(pathBuffer, "%s%s%d_%03d_%s.wv", baseDir, samplePrefix, 1, sfd.sampleDescriptor.noteNumber, "c2");
    loadCompressedSampleFile(sfd);
    sfd.sampleDescriptor.minimumVelocity = 87; sfd.sampleDescriptor.maximumVelocity = 127;
    sprintf(pathBuffer, "%s%s%d_%03d_%s.wv", baseDir, samplePrefix, 0, sfd.sampleDescriptor.noteNumber, "c2");
    loadCompressedSampleFile(sfd);
    
    sfd.sampleDescriptor.noteNumber = 54;
    sfd.sampleDescriptor.noteFrequency = NOTE_HZ(sfd.sampleDescriptor.noteNumber);
    sfd.sampleDescriptor.minimumNoteNumber = 52; sfd.sampleDescriptor.maximumNoteNumber = 57;
    sfd.sampleDescriptor.minimumVelocity = 0; sfd.sampleDescriptor.maximumVelocity = 43;
    sprintf(pathBuffer, "%s%s%d_%03d_%s.wv", baseDir, samplePrefix, 2, sfd.sampleDescriptor.noteNumber, "f#2");
    loadCompressedSampleFile(sfd);
    sfd.sampleDescriptor.minimumVelocity = 44; sfd.sampleDescriptor.maximumVelocity = 86;
    sprintf(pathBuffer, "%s%s%d_%03d_%s.wv", baseDir, samplePrefix, 1, sfd.sampleDescriptor.noteNumber, "f#2");
    loadCompressedSampleFile(sfd);
    sfd.sampleDescriptor.minimumVelocity = 87; sfd.sampleDescriptor.maximumVelocity = 127;
    sprintf(pathBuffer, "%s%s%d_%03d_%s.wv", baseDir, samplePrefix, 0, sfd.sampleDescriptor.noteNumber, "f#2");
    loadCompressedSampleFile(sfd);
    
    sfd.sampleDescriptor.noteNumber = 60;
    sfd.sampleDescriptor.noteFrequency = NOTE_HZ(sfd.sampleDescriptor.noteNumber);
    sfd.sampleDescriptor.minimumNoteNumber = 58; sfd.sampleDescriptor.maximumNoteNumber = 63;
    sfd.sampleDescriptor.minimumVelocity = 0; sfd.sampleDescriptor.maximumVelocity = 43;
    sprintf(pathBuffer, "%s%s%d_%03d_%s.wv", baseDir, samplePrefix, 2, sfd.sampleDescriptor.noteNumber, "c3");
    loadCompressedSampleFile(sfd);
    sfd.sampleDescriptor.minimumVelocity = 44; sfd.sampleDescriptor.maximumVelocity = 86;
    sprintf(pathBuffer, "%s%s%d_%03d_%s.wv", baseDir, samplePrefix, 1, sfd.sampleDescriptor.noteNumber, "c3");
    loadCompressedSampleFile(sfd);
    sfd.sampleDescriptor.minimumVelocity = 87; sfd.sampleDescriptor.maximumVelocity = 127;
    sprintf(pathBuffer, "%s%s%d_%03d_%s.wv", baseDir, samplePrefix, 0, sfd.sampleDescriptor.noteNumber, "c3");
    loadCompressedSampleFile(sfd);
    
    sfd.sampleDescriptor.noteNumber = 66;
    sfd.sampleDescriptor.noteFrequency = NOTE_HZ(sfd.sampleDescriptor.noteNumber);
    sfd.sampleDescriptor.minimumNoteNumber = 64; sfd.sampleDescriptor.maximumNoteNumber = 69;
    sfd.sampleDescriptor.minimumVelocity = 0; sfd.sampleDescriptor.maximumVelocity = 43;
    sprintf(pathBuffer, "%s%s%d_%03d_%s.wv", baseDir, samplePrefix, 2, sfd.sampleDescriptor.noteNumber, "f#3");
    loadCompressedSampleFile(sfd);
    sfd.sampleDescriptor.minimumVelocity = 44; sfd.sampleDescriptor.maximumVelocity = 86;
    sprintf(pathBuffer, "%s%s%d_%03d_%s.wv", baseDir, samplePrefix, 1, sfd.sampleDescriptor.noteNumber, "f#3");
    loadCompressedSampleFile(sfd);
    sfd.sampleDescriptor.minimumVelocity = 87; sfd.sampleDescriptor.maximumVelocity = 127;
    sprintf(pathBuffer, "%s%s%d_%03d_%s.wv", baseDir, samplePrefix, 0, sfd.sampleDescriptor.noteNumber, "f#3");
    loadCompressedSampleFile(sfd);
    
    sfd.sampleDescriptor.noteNumber = 72;
    sfd.sampleDescriptor.noteFrequency = NOTE_HZ(sfd.sampleDescriptor.noteNumber);
    sfd.sampleDescriptor.minimumNoteNumber = 70; sfd.sampleDescriptor.maximumNoteNumber = 75;
    sfd.sampleDescriptor.minimumVelocity = 0; sfd.sampleDescriptor.maximumVelocity = 43;
    sprintf(pathBuffer, "%s%s%d_%03d_%s.wv", baseDir, samplePrefix, 2, sfd.sampleDescriptor.noteNumber, "c4");
    loadCompressedSampleFile(sfd);
    sfd.sampleDescriptor.minimumVelocity = 44; sfd.sampleDescriptor.maximumVelocity = 86;
    sprintf(pathBuffer, "%s%s%d_%03d_%s.wv", baseDir, samplePrefix, 1, sfd.sampleDescriptor.noteNumber, "c4");
    loadCompressedSampleFile(sfd);
    sfd.sampleDescriptor.minimumVelocity = 87; sfd.sampleDescriptor.maximumVelocity = 127;
    sprintf(pathBuffer, "%s%s%d_%03d_%s.wv", baseDir, samplePrefix, 0, sfd.sampleDescriptor.noteNumber, "c4");
    loadCompressedSampleFile(sfd);
    
    sfd.sampleDescriptor.noteNumber = 78;
    sfd.sampleDescriptor.noteFrequency = NOTE_HZ(sfd.sampleDescriptor.noteNumber);
    sfd.sampleDescriptor.minimumNoteNumber = 76; sfd.sampleDescriptor.maximumNoteNumber = 81;
    sfd.sampleDescriptor.minimumVelocity = 0; sfd.sampleDescriptor.maximumVelocity = 43;
    sprintf(pathBuffer, "%s%s%d_%03d_%s.wv", baseDir, samplePrefix, 2, sfd.sampleDescriptor.noteNumber, "f#4");
    loadCompressedSampleFile(sfd);
    sfd.sampleDescriptor.minimumVelocity = 44; sfd.sampleDescriptor.maximumVelocity = 86;
    sprintf(pathBuffer, "%s%s%d_%03d_%s.wv", baseDir, samplePrefix, 1, sfd.sampleDescriptor.noteNumber, "f#4");
    loadCompressedSampleFile(sfd);
    sfd.sampleDescriptor.minimumVelocity = 87; sfd.sampleDescriptor.maximumVelocity = 127;
    sprintf(pathBuffer, "%s%s%d_%03d_%s.wv", baseDir, samplePrefix, 0, sfd.sampleDescriptor.noteNumber, "f#4");
    loadCompressedSampleFile(sfd);
    
    sfd.sampleDescriptor.noteNumber = 84;
    sfd.sampleDescriptor.noteFrequency = NOTE_HZ(sfd.sampleDescriptor.noteNumber);
    sfd.sampleDescriptor.minimumNoteNumber = 82; sfd.sampleDescriptor.maximumNoteNumber = 127;
    sfd.sampleDescriptor.minimumVelocity = 0; sfd.sampleDescriptor.maximumVelocity = 43;
    sprintf(pathBuffer, "%s%s%d_%03d_%s.wv", baseDir, samplePrefix, 2, sfd.sampleDescriptor.noteNumber, "c5");
    loadCompressedSampleFile(sfd);
    sfd.sampleDescriptor.minimumVelocity = 44; sfd.sampleDescriptor.maximumVelocity = 86;
    sprintf(pathBuffer, "%s%s%d_%03d_%s.wv", baseDir, samplePrefix, 1, sfd.sampleDescriptor.noteNumber, "c5");
    loadCompressedSampleFile(sfd);
    sfd.sampleDescriptor.minimumVelocity = 87; sfd.sampleDescriptor.maximumVelocity = 127;
    sprintf(pathBuffer, "%s%s%d_%03d_%s.wv", baseDir, samplePrefix, 0, sfd.sampleDescriptor.noteNumber, "c5");
    loadCompressedSampleFile(sfd);
    
    buildKeyMap();
}