void MidiPlayerWindow::OnInputChanged(BMessage* msg) { int32 newId; if (msg->FindInt32("id", &newId) == B_OK) { BMidiProducer* endp; endp = BMidiRoster::FindProducer(inputId); if (endp != NULL) { endp->Disconnect(bridge); endp->Release(); } inputId = newId; endp = BMidiRoster::FindProducer(inputId); if (endp != NULL) { if (!instrLoaded) { scopeView->SetLoading(true); scopeView->Invalidate(); UpdateIfNeeded(); bridge->Init(B_BIG_SYNTH); instrLoaded = true; scopeView->SetLoading(false); scopeView->Invalidate(); } endp->Connect(bridge); endp->Release(); scopeView->SetLiveInput(true); scopeView->Invalidate(); } else { scopeView->SetLiveInput(false); scopeView->Invalidate(); } } }