Подтвердить что ты не робот

Воспроизведение музыкальных нот в Swift Playground

Я пытаюсь сыграть короткую последовательность музыкальных нот с синусоидальной волной по умолчанию как звук внутри Swift Playground. В более позднем моменте я хотел бы заменить звук Soundfont, но на данный момент я был бы доволен просто произведением звука.

Я хочу, чтобы это была MIDI-последовательность, с прямым контролем над нотами, а не с чисто аудио. AudioToolbox, кажется, обеспечивает то, что я ищу, но у меня проблемы с пониманием его использования. Вот что я сейчас пытаюсь

import AudioToolbox

// Creating the sequence    

var sequence:MusicSequence = nil
var musicSequence = NewMusicSequence(&sequence)

// Creating a track

var track:MusicTrack = nil
var musicTrack = MusicSequenceNewTrack(sequence, &track)

// Adding notes

var time = MusicTimeStamp(1.0)
for index:UInt8 in 60...72 {
    var note = MIDINoteMessage(channel: 0,
                               note: index,
                               velocity: 64,
                               releaseVelocity: 0,
                               duration: 1.0 )
    musicTrack = MusicTrackNewMIDINoteEvent(track, time, &note)
    time += 1
}

// Creating a player    

var musicPlayer:MusicPlayer = nil
var player = NewMusicPlayer(&musicPlayer)

player = MusicPlayerSetSequence(musicPlayer, sequence)
player = MusicPlayerStart(musicPlayer)

Как вы можете себе представить, нет звука. Я ценю любые идеи о том, как воспроизводить звуковую последовательность вслух.

4b9b3361

Ответ 1

Вы должны включить асинхронный режим для игровой площадки.

Добавьте это вверху (Xcode 7, Swift 2):

import XCPlayground
XCPlaygroundPage.currentPage.needsIndefiniteExecution = true

и ваша последовательность будет воспроизводиться.

То же самое для Xcode 8 (Swift 3):

import PlaygroundSupport
PlaygroundPage.current.needsIndefiniteExecution = true