Essayer de déboguer mystery sinewave en utilisant AKMIDISampler dans Audiokit

Suite à un précédent numéro , j'ai arrêté d'utiliser AKSampler pour passer à la fonctionnalité utilisée dans AKMIDISampler . J'ai recommencé à utiliser mes loops (avec l'aide de cet article de Google Groupes ), mais j'ai une onde sinusoïdale (ce qui arrive quand le MIDISampler ne trouve pas son file source).

Ce n'est pas un problème avec les files sources que je cible, car ils fonctionnent tous correctement. L'onde sinusoïdale vient d'ailleurs, mais je ne vois pas où …

S'il vous plaît, aidez 8)

(Code simplifié et modifié pour afficher uniquement les détails pertinents – veuillez nous contacter pour toute précision)

 var MIDISamplePlayer = AKMIDISampler() var sequencer: AKSequencer? var mixer: AKMixer! // initialise the mixer mixer = AKMixer() do { audiofile = try AKAudioFile(readFileName: SoundFilename as! Ssortingng, baseDir: .resources) } catch let error as NSError { print("There's an error: \(error)") } do { try sprite.MIDISamplePlayer.loadAudioFile(audiofile) } catch let error as NSError { print("There's an error: \(error)") } sprite.tracker = AKAmplitudeTracker(sprite.MIDISamplePlayer) mixer.connect(to:sprite.tracker, bus: mixer.nextInput.bus) sequencer = AKSequencer(filename: POPmidi) sequencer?.enableLooping() let midi = AKMIDI() for i in 0..<popCount { gPOPs[i].MIDISamplePlayer.enableMIDI(midi.client, name: "MIDISample_\(i)") mixer.connect(gPOPs[i].MIDISamplePlayer) sequencer!.tracks[i].setMIDIOutput(gPOPs[i].MIDISamplePlayer.midiIn) } AudioKit.start() sequencer!.play() 

J'ai découvert la cause de ce problème. J'ai appris que le séquenceur MIDI créait une piste supplémentaire quand je lui ai donné un nombre spécifique de pistes MIDI; pour quatre pistes dans mon file midi, le séquenceur m'en donnait cinq. Cette piste supplémentaire est pour le tempo (comme découvert ici ).

J'ai également appris que mon premier morceau était ignoré de mon .plist (où j'ai mis en place les tiges pour différentes chansons).

Mon hypothèse que la première piste est utilisée pour la piste de tempo a été testée, et quand j'ai créé cinq pistes dans mon .plist pour correspondre au séquenceur, le ton sinusoïdale a disparu.

Cela conduit à une solution de contournement. Je l'ai fait en dupliquant le premier échantillon de mon .plist, qui était ignoré de toute façon, puis en cachant le sprite qui représentait ce son hors écran. Cela fonctionne pour l'instant, mais si quelqu'un a une idée de la façon de contrôler cette piste de tempo et de son utilisation dans AKSequencer j'aimerais en savoir plus.

Donc en bref: Assurez-vous que le file MIDI possède le nombre exact de pistes que vous voulez utiliser. Créez le même nombre de AKMIDISampler à utiliser dans AKSequencer ajoutant un pour la piste de tempo. Alors prenez garde que la première piste du séquenceur est la piste de tempo et ne fonctionnera pas en jouant des samples.

C'est un peu une supposition, mais c'est un problème très commun d'avoir vos files audio dans un endroit que l'échantillonneur aime. Essayez de placer les audiofiles dans un dossier Samples / comme dans ces exemples:

http://audiokit.io/playgrounds/Playback/Sequencer/ http://audiokit.io/playgrounds/Playback/Sampler/

ou je pense qu'un Sounds ou des dossiers "Sampler Instruments" fonctionnent aussi bien que dans la Sampler Demo:

https://github.com/AudioKit/AudioKit/tree/master/Examples/iOS/SamplerDemo/SamplerDemo/Sounds