Major refactoring: SignalSource no longer abstract, all sources using std::vector.