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 ); }
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; }
RocketUIManager::RocketUIManager() : mRenderSystemWrapper(0) , mIsSetUp(false) { buildKeyMap(); }
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(); }