Classes
The following classes are available globally.
-
Maintains the active SoundFont patch being used for sound generation. There should only ever be one instance of this class, but this is not enforced.
See moreDeclaration
Swift
public final class ActivePatchManager : SubscriptionManager<ActivePatchEvent> -
Manager for posting alerts to the user. The plumbing guarantees that only one alert will happen at a time – others will queue until it is their turn to be shown. Although this works, there is the risk of annoying the user with a crapload of alerts because of some catastrophic failure.
See moreDeclaration
Swift
public final class AlertManager -
Collection of UIViewControllers and protocol facades which helps establish inter-controller relationships during the application launch. Each view controller is responsible for establishing the connections in their
See moreestablishConnectionsmethod. The goal should be to have relations between a controller and protocols / facades, and not between controllers themselves. This is enforced here through access restrictions to known controllers.Declaration
Swift
public final class Components<T: UIViewController>: SubscriptionManager<ComponentContainerEvent>, ComponentContainer where T: ControllerConfiguration -
Undocumented
See moreDeclaration
Swift
public final class BackgroundManagedObjectContext -
Undocumented
See moreDeclaration
Swift
open class CoreDataStack<T> where T : NSPersistentContainer -
Customized NSPersistentContainer that knows how to locate and load the managed object model (MOM) resource. It then caches this value for future use – basically useful for unit tests.
See moreDeclaration
Swift
open class PersistentContainer : NSPersistentContainer -
Undocumented
See moreDeclaration
Swift
public final class SoundFontCoreData : CoreDataStack<PersistentContainer> -
A data source for a UITableView that relies on a NSFetchedResultsController for model values. This design was heavily based on code from obj.io Core Data book.
See moreDeclaration
Swift
public class TableViewDataSource<Delegate: TableViewDataSourceDelegate>: NSObject, UITableViewDataSource, NSFetchedResultsControllerDelegate -
View controller for the effects controls view. Much of this functionality is duplicated in the AUv3 effects components.
See moreDeclaration
Swift
public final class EffectsController : UIViewControllerextension EffectsController: ControllerConfigurationextension EffectsController: UIPickerViewDataSourceextension EffectsController: UIPickerViewDelegate -
A tag is just a unique name that can be associated with zero or more sound fonts. By default there is an ‘all’ tag which matches all sound fonts, and a ‘built-in’ tag that shows just those that come with the app.
See moreDeclaration
Swift
public final class LegacyTag : Codableextension LegacyTag: Equatableextension LegacyTag: CustomStringConvertible -
Specialization of
See moreUICollectionViewCellthat knows how to render Favorite attributes.Declaration
Swift
final class FavoriteCell : UICollectionViewCell, ReusableView, NibLoadableView -
Provides an editing facility for presets and favorites instances.
See moreDeclaration
Swift
final public class FavoriteEditor : UIViewControllerextension FavoriteEditor: UITextFieldDelegateextension FavoriteEditor: UITextViewDelegateextension FavoriteEditor: UIPopoverPresentationControllerDelegate, UIAdaptivePresentationControllerDelegate -
Manages the movement of a Favorite cells in a UICollectionView
See moreDeclaration
Swift
final class FavoriteMover : NSObject -
Manages the view of Favorite items. Users can choose a Favorite by tapping it in order to apply the Favorite settings. The user may long-touch on a Favorite to move it around. Double-tapping on it will open the editor.
See moreDeclaration
Swift
public final class FavoritesViewController : UIViewController, FavoritesViewManagerextension FavoritesViewController: ControllerConfigurationextension FavoritesViewController: SegueHandlerextension FavoritesViewController: FavoriteEditorDelegateextension FavoritesViewController: UICollectionViewDataSourceextension FavoritesViewController: UICollectionViewDelegateextension FavoritesViewController: UICollectionViewDelegateFlowLayout -
A custom setting with a SoundFont patch and a keyboard configuration.
See moreDeclaration
Swift
public class LegacyFavorite : Codableextension LegacyFavorite: Equatableextension LegacyFavorite: CustomStringConvertible -
Collection of Favorite instances created by the user.
See moreDeclaration
Swift
final public class LegacyFavoriteCollection : Codableextension LegacyFavoriteCollection: CustomStringConvertible -
Manages the collection of Favorite instances created by the user. Changes to the collection are saved, and they will be restored when the app relaunches.
See moreDeclaration
Swift
final class LegacyFavoritesManager : SubscriptionManager<FavoritesEvent>extension LegacyFavoritesManager: Favorites -
Undocumented
See moreDeclaration
Swift
public final class GuideViewController : UIViewControllerextension GuideViewController: ControllerConfiguration -
Undocumented
See moreDeclaration
Swift
final class BindableGestureRecognizer : UITapGestureRecognizer -
Manager of the strip informational strip between the keyboard and the SoundFont patches / favorites screens. Supports left/right swipes to switch the upper view, and two-finger left/right pan to adjust the keyboard range.
See moreDeclaration
Swift
public final class InfoBarController : UIViewControllerextension InfoBarController: ControllerConfigurationextension InfoBarController: InfoBarextension InfoBarController: SegueHandler -
Visual representation of a piano key. Each key has an associated Note value which determines what MIDI note the key will emit when touched.
See moreDeclaration
Swift
public final class Key : UIView -
Controller for the keyboard view. Creates the individual Key views and handles touch event detection within them. The controller creates an entire 108 keyboard which it then shows only a part of on the screen. The keyboard can be shifted up/down by octaves or by sliding via touch (if enabled).
See moreDeclaration
Swift
final class KeyboardController : UIViewControllerextension KeyboardController: ControllerConfigurationextension KeyboardController: Keyboard -
Undocumented
See moreDeclaration
Swift
public class KeyboardRender : NSObject -
A bookmark represents a file located outside of the app’s own storage space. It is used to reference sound font files without making a copy of them. However there are risks involved, namely that the bookmark may not resolve to a real file.
See moreDeclaration
Swift
public final class Bookmark : Codableextension Bookmark: Hashable -
Undocumented
See moreDeclaration
Swift
internal class ConfigFile<T> : UIDocument where T : ConfigFileManager -
Holds reference to ConsolidatedConfigFile and monitors it for changes to its
See morerestoredattribute. When it changes to true, calls the closure which was given during construction.Declaration
Swift
public final class ConfigFileObserver -
Undocumented
See moreDeclaration
Swift
public final class ConsolidatedConfigFile : UIDocument -
Delay audio effect by way of Apple’s AVAudioUnitDelay component.
See moreDeclaration
Swift
public final class DelayEffect : NSObject -
Representation of a patch in a sound font.
See moreDeclaration
Swift
final public class LegacyPatch : Codableextension LegacyPatch: CustomStringConvertible -
Representation of a sound font library. NOTE: all sound font files must have ‘sf2’ extension.
See moreDeclaration
Swift
public final class LegacySoundFont : Codableextension LegacySoundFont: Hashableextension LegacySoundFont: CustomStringConvertible -
Collection of SoundFont entities. The collection maintains a mapping between a SoundFont.Key (UUID) and a SoundFont instance. It also maintains an array of SoundFont.Key values that are ordered by SoundFont.name values.
See moreDeclaration
Swift
public final class LegacySoundFontCollection : Codableextension LegacySoundFontCollection: CustomStringConvertible -
Manages a collection of SoundFont instances. Changes to the collection are communicated as a SoundFontsEvent event.
See moreDeclaration
Swift
public final class LegacySoundFontsManager : SubscriptionManager<SoundFontsEvent>extension LegacySoundFontsManager: SoundFonts -
Undocumented
See moreDeclaration
-
Undocumented
See moreDeclaration
Swift
final class PresetChangeManager -
Reverberation audio effect by way of Apple’s AVAudioUnitReverb component.
See moreDeclaration
Swift
public final class ReverbEffect : NSObject -
This class encapsulates Apple’s AVAudioUnitSampler in order to load MIDI sound bank.
See moreDeclaration
Swift
public final class Sampler : SubscriptionManager<SamplerEvent> -
Collection of Tag instances.
See moreDeclaration
Swift
public final class LegacyTagCollection : Codableextension LegacyTagCollection: CustomStringConvertible -
Manager for the tag collection.
See moreDeclaration
Swift
final class LegacyTagsManager : SubscriptionManager<TagsEvent>extension LegacyTagsManager: Tags -
Undocumented
See moreDeclaration
Swift
public final class SelectedSoundFontManager : SubscriptionManager<SelectedSoundFontEvent> -
Manages window showing various runtime settings and options.
See moreDeclaration
Swift
public final class SettingsViewController : UIViewControllerextension SettingsViewController: MFMailComposeViewControllerDelegate -
Tracks and manages the active tag.
See moreDeclaration
Swift
final class ActiveTagManager : NSObjectextension ActiveTagManager: UITableViewDataSourceextension ActiveTagManager: UITableViewDelegate -
Provides an editing facility for SoundFont meta-data and tags.
See moreDeclaration
Swift
final class FontEditor : UIViewControllerextension FontEditor: UITextFieldDelegateextension FontEditor: UIPopoverPresentationControllerDelegate, UIAdaptivePresentationControllerDelegateextension FontEditor: SegueHandler -
Data source and delegate for the SoundFont UITableView. This view shows all of the names of the SoundFont files that are available in the app.
See moreDeclaration
Swift
final class FontsTableViewManager : NSObjectextension FontsTableViewManager: UITableViewDataSourceextension FontsTableViewManager: UITableViewDelegate -
View controller for the UITableView showing the presets of a sound font
See moreDeclaration
Swift
public final class PresetsTableViewController : UITableViewControllerextension PresetsTableViewController: ControllerConfiguration -
Data source and delegate for the Patches UITableView. This is one of the most complicated managers and it should be broken up into smaller components. There are three four areas of functionality:
- table view drawing and selecting
- row visibility editing
- searching
- row swiping
Declaration
Swift
final class PresetsTableViewManager : NSObjectextension PresetsTableViewManager: UITableViewDataSourceextension PresetsTableViewManager: UITableViewDelegateextension PresetsTableViewManager: UISearchBarDelegate -
View controller for the SoundFont / Patches UITableView combination. Much of the UITableView management is handled by specific *Manager classes. This controller mainly serves to manage the active Patch state, plus the switching between normal Patch table view display and Patch search results display. Apart from the adopted protocols, there is no API for this class.
See moreDeclaration
Swift
public final class SoundFontsViewController : UIViewControllerextension SoundFontsViewController: UIDocumentPickerDelegateextension SoundFontsViewController: ControllerConfigurationextension SoundFontsViewController: FontsViewManagerextension SoundFontsViewController: FontEditorActionGeneratorextension SoundFontsViewController: SegueHandlerextension SoundFontsViewController: FontEditorDelegate -
Specialization of UITableViewCell that will display a SoundFont name, a Preset name, or a Tag name. Probably better would be to separate these into distinct classes, but this works for now.
See moreDeclaration
Swift
public final class TableCell : UITableViewCell, ReusableView, NibLoadableView -
Manages the table view that appears off of the preset editor. Allows full editing of the tags collection.
See moreDeclaration
Swift
public final class TagsTableViewController : UITableViewControllerextension TagsTableViewController: UITextFieldDelegate -
Top-level view controller for the application. It contains the Sampler which will emit sounds based on what keys are touched. It also starts the audio engine when the application becomes active, and stops it when the application goes to the background or stops being active.
See moreDeclaration
Swift
public final class SoundFontsControlsController : UIViewControllerextension SoundFontsControlsController: ControllerConfigurationextension SoundFontsControlsController: SegueHandler -
Undocumented
See moreDeclaration
Swift
@objc public final class TuningComponent : NSObjectextension TuningComponent: UITextFieldDelegate -
Undocumented
See moreDeclaration
Swift
final class ChangesPageViewController : TutorialPageViewController -
Undocumented
See moreDeclaration
Swift
class DonePageViewController : TutorialPageViewController -
Undocumented
See moreDeclaration
Swift
class PresetsPageViewController : TutorialPageViewController -
Undocumented
See moreDeclaration
Swift
public final class TutorialContentPagerViewController : UIPageViewControllerextension TutorialContentPagerViewController: UIPageViewControllerDataSource -
Undocumented
See moreDeclaration
Swift
class TutorialPageViewController : UIViewController -
Undocumented
See moreDeclaration
Swift
public final class TutorialViewController : UIViewController -
Show a vertical blue gradient band to indicate the active item in a list.
See moreDeclaration
Swift
public class ActiveIndicatorView : UIView -
Custom UIView that draws an arrow between an entry and an exit point on the border of the view.
See moreDeclaration
Swift
open class ArrowView : UIView -
Manages when to ask the user for an app review. Relies on SKStoreReviewController.requestReview to do the actual review prompt, but makes sure that the interval between asks is reasonable and within App Store policy.
See moreDeclaration
Swift
public final class AskForReview : NSObject -
Template class that manages an association between two objects using Objective-C API.
See moreDeclaration
Swift
public final class AssociatedObject<T> -
Derivation of TypedNotification that remembers the last
See morepostvalue and will use that for anyregistercalls that happen after thepostcall.Declaration
Swift
open class CachedValueTypedNotification<A> : TypedNotification<A> -
Undocumented
See moreDeclaration
Swift
final public class Foo : Codable -
Custom UIControl that depicts a value as a point on a circle. Changing the value is done by touching on the control and moving up to increase and down to decrease the current value. While touching, moving away from the control in either direction will increase the resolution of the touch changes, causing the value to change more slowly as vertical distance changes. Pretty much works like UISlider but with the travel path as an arc.
Visual representation of the knob is done via CoreAnimation components, namely CAShapeLayer and UIBezierPath. The diameter of the arc of the knob is defined by the min(width, height) of the view’s frame. The start and end of the arc is controlled by the
See morestartAngleandendAnglesettings.Declaration
Swift
open class Knob : UIControl -
Container to place SettingKey definitions (as class members)
See moreDeclaration
Swift
public class SettingKeys -
Template class that supports get/set operations for the template type. Using
See moreclasshere instead ofstructdue to the lazy initialization of the defaultValue at runtime.Declaration
Swift
public class SettingKey<ValueType> : SettingKeys where ValueType : SettingGettable, ValueType : SettingSettable -
Manage subscriptions to event notifications. Events can be anything but are usually defined as an enum.
See moreDeclaration
Swift
public class SubscriptionManager<Event> -
Monitors the iOS keyboard appearance and manipulates a given UIScrollView to keep the content in view when the keyboard appears. Contains a slot
See moreviewToKeepVisiblewhich when set to a UIView will cause the monitor to scroll so that the view is visible.Declaration
Swift
final public class TextFieldKeyboardMonitor -
Typed notification definition. Template argument defines the type of a value that will be transmitted in the notification userInfo[“value”] slot. This value will be available to blocks registered to receive it
See moreDeclaration
Swift
open class TypedNotification<A> -
Manager of a TypedNotification registration. When the instance is no longer being held, it will automatically unregister the internal observer from future notification events.
See moreDeclaration
Swift
public class NotificationObserver -
Instances know how to slide themselves around horizontally.
See moreDeclaration
Swift
public final class ViewSlider : CustomStringConvertible -
Delegate for the SoundFonts app.
See moreDeclaration
Swift
@UIApplicationMain final class AppDelegate : UIResponder, UIApplicationDelegate -
Manages a HUD view to show a short bit of text as an overlay on top of the existing application view.
See moreDeclaration
Swift
final class InfoHUD : NSObject -
Connects to any and all MIDI sources, processing all messages it sees. There really is no API right now. Just create an instance and set the controller (aka delegate) to receive the incoming MIDI traffic.
See moreDeclaration
Swift
final class MIDI -
Top-level view controller for the application. It contains the Sampler which will emit sounds based on what keys are touched. It also starts the audio engine when the application becomes active, and stops it when the application goes to the background or stops being active.
See moreDeclaration
Swift
final class MainViewController : UIViewControllerextension MainViewController: ControllerConfiguration -
Monitor volume setting on device and the “silence” or “mute” switch. When there is no apparent audio output, update the Keyboard and NotePlayer instances so that they can show an indication to the user.
See moreDeclaration
Swift
final class VolumeMonitor
View on GitHub
Classes Reference