MusicEvent についての内容 ※間違いが含まれている場合があるので注意
/*!
@function MusicTrackNewMIDINoteEvent
@abstract Adds a MIDINoteMessage event to a track
@discussion The event is added at the specified time stamp. The time stamp should not be less than zero.
@param inTrack the track
@param inTimeStamp the time stamp
@param inMessage the event
*/
extern OSStatus
MusicTrackNewMIDINoteEvent( MusicTrack inTrack,
MusicTimeStamp inTimeStamp,
const MIDINoteMessage * inMessage) __OSX_AVAILABLE_STARTING(__MAC_10_0,__IPHONE_5_0);
トラックに MIDINoteMessage イベントを指定したタイムスタンプで追加します。 タイムスタンプは 0 より小さくすべきではありません。
/*!
@function MusicTrackNewMIDIChannelEvent
@abstract Adds a MIDIChannelMessage event to a track
@discussion The event is added at the specified time stamp. The time stamp should not be less than zero.
@param inTrack the track
@param inTimeStamp the time stamp
@param inMessage the event
*/
extern OSStatus
MusicTrackNewMIDIChannelEvent( MusicTrack inTrack,
MusicTimeStamp inTimeStamp,
const MIDIChannelMessage * inMessage) __OSX_AVAILABLE_STARTING(__MAC_10_0,__IPHONE_5_0);
トラックに MIDIChannelMessage イベントを指定したタイムスタンプで追加します。 タイムスタンプは 0 より小さくすべきではありません。
/*!
@function MusicTrackNewMIDIRawDataEvent
@abstract Adds a MIDIRawData event to a track
@discussion The event is added at the specified time stamp. The time stamp should not be less than zero.
@param inTrack the track
@param inTimeStamp the time stamp
@param inRawData the event
*/
extern OSStatus
MusicTrackNewMIDIRawDataEvent( MusicTrack inTrack,
MusicTimeStamp inTimeStamp,
const MIDIRawData * inRawData) __OSX_AVAILABLE_STARTING(__MAC_10_0,__IPHONE_5_0);
トラックに MIDIRawData イベントを指定したタイムスタンプで追加します。 タイムスタンプは 0 より小さくすべきではありません。
/*!
@function MusicTrackNewExtendedNoteEvent
@abstract Adds a ExtendedNoteOnEvent to a track
@discussion The event is added at the specified time stamp. The time stamp should not be less than zero.
@param inTrack the track
@param inTimeStamp the time stamp
@param inInfo the event
*/
extern OSStatus
MusicTrackNewExtendedNoteEvent( MusicTrack inTrack,
MusicTimeStamp inTimeStamp,
const ExtendedNoteOnEvent *inInfo) __OSX_AVAILABLE_STARTING(__MAC_10_0,__IPHONE_5_0);
トラックに ExtendedNoteOnEvent イベントを指定したタイムスタンプで追加します。 タイムスタンプは 0 より小さくすべきではありません。
[cpp]
/*!
@function MusicTrackNewParameterEvent
@abstract Adds a ParameterEvent to a track
@discussion The event is added at the specified time stamp. The time stamp should not be less than zero.
@param inTrack the track
@param inTimeStamp the time stamp
@param inInfo the event
*/
extern OSStatus
MusicTrackNewParameterEvent( MusicTrack inTrack,
MusicTimeStamp inTimeStamp,
const ParameterEvent * inInfo) __OSX_AVAILABLE_STARTING(__MAC_10_2,__IPHONE_5_0);
トラックに ParameterEvent イベントを指定したタイムスタンプで追加します。
タイムスタンプは 0 より小さくすべきではありません。
[cpp]
/*!
@function MusicTrackNewExtendedTempoEvent
@abstract Adds a tempo event to a track
@discussion The event is added at the specified time stamp. The time stamp should not be less than zero.
@param inTrack the track
@param inTimeStamp the time stamp
@param inBPM the event
*/
extern OSStatus
MusicTrackNewExtendedTempoEvent( MusicTrack inTrack,
MusicTimeStamp inTimeStamp,
Float64 inBPM) __OSX_AVAILABLE_STARTING(__MAC_10_0,__IPHONE_5_0);
トラックに tempo イベント(Float64)を指定したタイムスタンプで追加します。
タイムスタンプは 0 より小さくすべきではありません。
[cpp]
/*!
@function MusicTrackNewMetaEvent
@abstract Adds a MIDIMetaEvent to a track
@discussion The event is added at the specified time stamp. The time stamp should not be less than zero.
@param inTrack the track
@param inTimeStamp the time stamp
@param inMetaEvent the event
*/
extern OSStatus
MusicTrackNewMetaEvent( MusicTrack inTrack,
MusicTimeStamp inTimeStamp,
const MIDIMetaEvent * inMetaEvent) __OSX_AVAILABLE_STARTING(__MAC_10_0,__IPHONE_5_0);
トラックに MIDIMetaEvent イベントを指定したタイムスタンプで追加します。
タイムスタンプは 0 より小さくすべきではありません。
[cpp]
/*!
@function MusicEventUserData
@abstract Adds a MusicEventUserData event to a track
@discussion The event is added at the specified time stamp. The time stamp should not be less than zero.
@param inTrack the track
@param inTimeStamp the time stamp
@param inUserData the event
*/
extern OSStatus
MusicTrackNewUserEvent( MusicTrack inTrack,
MusicTimeStamp inTimeStamp,
const MusicEventUserData * inUserData) __OSX_AVAILABLE_STARTING(__MAC_10_0,__IPHONE_5_0);
トラックに MusicEventUserData イベントを指定したタイムスタンプで追加します。
タイムスタンプは 0 より小さくすべきではありません。
[cpp]
/*!
@function MusicTrackNewAUPresetEvent
@abstract Adds a AUPresetEvent to a track
@discussion The event is added at the specified time stamp. The time stamp should not be less than zero.
@param inTrack the track
@param inTimeStamp the time stamp
@param inPresetEvent the event
*/
extern OSStatus
MusicTrackNewAUPresetEvent( MusicTrack inTrack,
MusicTimeStamp inTimeStamp,
const AUPresetEvent * inPresetEvent) __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_5_0);
トラックに AUPresetEvent イベントを指定したタイムスタンプで追加します。
タイムスタンプは 0 より小さくすべきではありません。
MusicTrack についての内容 ※間違いが含まれている場合があるので注意
/*!
@function MusicTrackGetSequence
@abstract Gets the sequence which the track is a member of
@param inTrack the track
@param outSequence the track's sequence
*/
extern OSStatus
MusicTrackGetSequence( MusicTrack inTrack,
MusicSequence *outSequence) __OSX_AVAILABLE_STARTING(__MAC_10_0,__IPHONE_5_0);
トラックがメンバーになっているシーケンスを取得する。
/*!
@function MusicTrackSetDestNode
@abstract Sets the track's target to the specified AUNode
@discussion The node must be a member of the graph that the track's sequence is using. When played, the track
will send all of its events to that node.
@param inTrack the track
@param inNode the new node
*/
extern OSStatus
MusicTrackSetDestNode( MusicTrack inTrack,
AUNode inNode) __OSX_AVAILABLE_STARTING(__MAC_10_0,__IPHONE_5_0);
指定したノード(AUNode)に トラック(MusicTrack)のターゲットを設定する。 ノードは、利用されるトラックシーケンスであるグラフのメンバーを持たなければいけない。
/*!
@function MusicTrackSetDestMIDIEndpoint
@abstract Sets the track's target to the specified MIDI endpoint
@discussion When played, the track will send all of its events to the specified MIDI Endpoint.
@param inTrack the track
@param inEndpoint the new MIDI endpoint
*/
extern OSStatus
MusicTrackSetDestMIDIEndpoint( MusicTrack inTrack,
MIDIEndpointRef inEndpoint) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_5_0);
指定されたMIDIエンドポイント(MIDIEndpointRef)に、トラックのターゲットを設定する。 再生されたとき、トラック(MusicTrack)は指定された MIDI に全てのイベントを送信する。
/*!
@function MusicTrackGetDestNode
@abstract Gets the track's target if it is an AUNode
@discussion Returns kAudioToolboxErr_IllegalTrackDestination if the track's target is a MIDIEndpointRef
and NOT an AUNode
@param inTrack the track
@param outNode the node target for the track
*/
extern OSStatus
MusicTrackGetDestNode( MusicTrack inTrack,
AUNode * outNode) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_5_0);
トラック(MusicTrack)から、AUNode を取得する。
/*!
@function MusicTrackGetDestMIDIEndpoint
@abstract Gets the track's target if it is a MIDI Endpoint
@discussion Returns kAudioToolboxErr_IllegalTrackDestination if the track's target is an AUNode
and NOT a MIDI Endpoint
@param inTrack the track
@param outEndpoint the MIDI Endpoint target for the track
*/
extern OSStatus
MusicTrackGetDestMIDIEndpoint( MusicTrack inTrack,
MIDIEndpointRef * outEndpoint) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_5_0);
トラック(MusicTrack)から、MIDIエンドポイント(MIDIEndpointRef) を取得する。
/*!
@function MusicTrackSetProperty
@abstract Sets the specified property value
@discussion Property values are always get and set by reference
@param inTrack the track
@param inPropertyID the property ID
@param inData the new property value
@param inLength the size of the property value being set
*/
extern OSStatus
MusicTrackSetProperty( MusicTrack inTrack,
UInt32 inPropertyID,
void *inData,
UInt32 inLength) __OSX_AVAILABLE_STARTING(__MAC_10_0,__IPHONE_5_0);
MusicTrack に指定されたプロパティを設定する。 プロパティ値は、常に参照による getter、setter である。
/*!
@function MusicTrackGetProperty
@abstract Gets the specified property value
@discussion If outData is NULL, then the size of the data will be passed back in ioLength
This allows the client to allocate a buffer of the correct size (useful for variable
length properties -- currently all properties have fixed size)
Property values are always get and set by reference
@param inTrack the track
@param inPropertyID the property ID
@param outData if not NULL, points to data of size ioLength
@param ioLength on input the available size of outData, on output the size of the valid data that outData
will then point too.
*/
extern OSStatus
MusicTrackGetProperty( MusicTrack inTrack,
UInt32 inPropertyID,
void *outData,
UInt32 *ioLength) __OSX_AVAILABLE_STARTING(__MAC_10_0,__IPHONE_5_0);
MusicTrack から指定されたプロパティを取得する。 outData が NULL だった場合、データサイズは ioLength(UInt32)で受け渡される。 これにより、クライアントは正しいサイズのバッファ(現在、全てのプロパティがもつ固定サイズの可変長プロパティとして便利)に割り当てる事ができます。 プロパティ値は、常に参照による getter、setter である。
/*!
@function MusicTrackMoveEvents
@abstract Move events in a track
@discussion Moves all of the events in the specified time range by the moveTime. MoveTime maybe negative to
move events backwards (towards zero).
All time ranges are [starttime < endtime]
@param inTrack the track
@param inStartTime the start time for the range of events
@param inEndTime the end time up to which will form the range of the events to move
@param inMoveTime amount of beats to move the selected events.
*/
extern OSStatus
MusicTrackMoveEvents( MusicTrack inTrack,
MusicTimeStamp inStartTime,
MusicTimeStamp inEndTime,
MusicTimeStamp inMoveTime) __OSX_AVAILABLE_STARTING(__MAC_10_0,__IPHONE_5_0);
移動時間で、指定した時間範囲内の全てのイベントを移動します。 移動時間は、イベント後方(0 に向かって)にマイナス移動します。 全ての時間範囲は、「starttime < endtime」です。
/*!
@function MusicTrackClear
@abstract Removes all events within the specified range
@discussion All time ranges are [starttime < endtime]
@param inTrack the track
@param inStartTime the start time for the range of events
@param inEndTime the end time up to which will form the range of the events to clear
*/
extern OSStatus
MusicTrackClear( MusicTrack inTrack,
MusicTimeStamp inStartTime,
MusicTimeStamp inEndTime) __OSX_AVAILABLE_STARTING(__MAC_10_0,__IPHONE_5_0);
指定した範囲内の、全てのイベントを削除します。
/*!
@function MusicTrackCut
@abstract Removes all the events within the specified range
@discussion Events that fall past the specified range will be moved back by the specified range time.
All time ranges are [starttime < endtime]
@param inTrack the track
@param inStartTime the start time for the range of events
@param inEndTime the end time up to which will form the range of the events to cut out
*/
extern OSStatus
MusicTrackCut( MusicTrack inTrack,
MusicTimeStamp inStartTime,
MusicTimeStamp inEndTime) __OSX_AVAILABLE_STARTING(__MAC_10_0,__IPHONE_5_0);
指定した時間範囲でイベントを削除して、指定時間内に戻ります。
/*!
@function MusicTrackCopyInsert
@abstract Copies events from one track and inserts them into another
@discussion Copies all of the events with the specified time range of the source track. It then inserts
those events into the destination track. All events at and after inDestInsertTime in inDestTrack
are moved forward by the range's duration
All time ranges are [starttime < endtime]
@param inSourceTrack the source track
@param inSourceStartTime the start time for the range of events
@param inSourceEndTime the end time up to which will form the range of the events to copy from the source track
@param inDestTrack the destination track to copy too
@param inDestInsertTime the time at which the copied events will be inserted.
*/
extern OSStatus
MusicTrackCopyInsert( MusicTrack inSourceTrack,
MusicTimeStamp inSourceStartTime,
MusicTimeStamp inSourceEndTime,
MusicTrack inDestTrack,
MusicTimeStamp inDestInsertTime) __OSX_AVAILABLE_STARTING(__MAC_10_0,__IPHONE_5_0);
元のトラック(MusicTrack)で指定した範囲時間で全てのイベントをコピーし、対象のトラック(MusicTrack)にコピーしたイベントを挿入します。 全てのイベントは、inDestTrack(MusicTrack)に、inDestInsertTime(MusicTimeStamp) 後に置かれます。
/*!
@function MusicTrackMerge
@abstract Copies events from one track and merges them into another
@discussion Copies all of the events with the specified time range of the source track. It then merges
those events into the destination track starting at inDestInsertTime.
All time ranges are [starttime < endtime]
@param inSourceTrack the source track
@param inSourceStartTime the start time for the range of events
@param inSourceEndTime the end time up to which will form the range of the events to copy from the source track
@param inDestTrack the destination track to copy too
@param inDestInsertTime the time at which the copied events will be merged.
*/
extern OSStatus
MusicTrackMerge( MusicTrack inSourceTrack,
MusicTimeStamp inSourceStartTime,
MusicTimeStamp inSourceEndTime,
MusicTrack inDestTrack,
MusicTimeStamp inDestInsertTime) __OSX_AVAILABLE_STARTING(__MAC_10_0,__IPHONE_5_0);
元のトラック(MusicTrack)で指定した範囲時間で全てのイベントをコピーし、対象のトラックに inDestInsertTime(MusicTImeStamp)でイベントをマージします。
MusicSequence についての内容 ※間違いが含まれている場合があるので注意
/*!
@function NewMusicSequence
@abstract Create a new empty sequence
@discussion A new music sequence will only have a tempo track (with a default tempo of 120 bpm),
and the default type is beat based.
When a sequence is to be played by a player, it can play to either an AUGraph, a MIDI Destination or a
mixture/combination of both. See MusicSequenceSetAUGraph and MusicSequenceSetMIDIEndpoint for the generic
destination assignments. Specific tracks can also be assigned nodes of a graph or a MIDI endpoint as targets
for the events that they contain; see MusicTrackSetDestNode and MusicTrackSetDestMIDIEndpoint.
@param outSequence the new sequence
*/
extern OSStatus
NewMusicSequence( MusicSequence *outSequence) __OSX_AVAILABLE_STARTING(__MAC_10_0,__IPHONE_5_0);
新しい空のシーケンスを作成する。 新規シーケンスは、テンポトラックを持つ(デフォルトは120bpm) シーケンスがプレイヤーによって委細制された時、 AUGraph、MIDI Destination または mixiture/combination の両方のいずれかで再生される。 一般的なデスティネーションの割り当てには、MusicSequenceSetAUGraph と MusicSequenceSetMIDIEndpoint を参照。 具体的なトラックは、グラフのノードやイベントの為のターゲットとして MIDI endpoint にアサインする事ができる。 MusicTrackSetDestNode と MusicTrackSetDestMIDIEndpoint を参照。
/*!
@function DisposeMusicSequence
@abstract Dispose the sequence
@discussion A sequence cannot be disposed while a MusicPlayer has it.
@param inSequence the sequence
*/
extern OSStatus
DisposeMusicSequence( MusicSequence inSequence) __OSX_AVAILABLE_STARTING(__MAC_10_0,__IPHONE_5_0);
シーケンスを処分するが、MusicPlayer がシーケンスを持っている間は処分できない。
/*!
@function MusicSequenceNewTrack
@abstract Add a new (empty) track to the sequence
@param inSequence the sequence
@param outTrack the new track (it is always appended to any existing tracks)
*/
extern OSStatus
MusicSequenceNewTrack( MusicSequence inSequence,
MusicTrack *outTrack) __OSX_AVAILABLE_STARTING(__MAC_10_0,__IPHONE_5_0);
新規(空の)トラックを、シーケンスに追加する。 新規トラックは常にどこかのトラックに付随している。
[cpp]
/*!
@function MusicSequenceDisposeTrack
@abstract Remove and dispose a track from a sequence
@param inSequence the sequence
@param inTrack the track to remove and dispose
*/
extern OSStatus
MusicSequenceDisposeTrack( MusicSequence inSequence,
MusicTrack inTrack) __OSX_AVAILABLE_STARTING(__MAC_10_0,__IPHONE_5_0);
シーケンスからトラックを削除し処分する。
[cpp]
/*!
@function MusicSequenceGetTrackCount
@abstract The number of tracks in a sequence.
The track count and accessors exclude the tempo track (which is treated as a special case)
@param inSequence the sequence
@param outNumberOfTracks the number of tracks
*/
extern OSStatus
MusicSequenceGetTrackCount( MusicSequence inSequence,
UInt32 *outNumberOfTracks) __OSX_AVAILABLE_STARTING(__MAC_10_0,__IPHONE_5_0);
トラック数を取得し、テンポトラック(特別な扱い)を除外したアクセッサー
[cpp]
/*!
@function MusicSequenceGetIndTrack
@abstract Get a track at the specified index
@discussion Index is zero based. It will return kAudio_ParamError if index is not in the range: 0 < TrackCount
The track count and accessors exclude the tempo track (which is treated as a special case)
@param inSequence the sequence
@param inTrackIndex the index
@param outTrack the track at that index
*/
extern OSStatus
MusicSequenceGetIndTrack( MusicSequence inSequence,
UInt32 inTrackIndex,
MusicTrack *outTrack) __OSX_AVAILABLE_STARTING(__MAC_10_0,__IPHONE_5_0);
シーケンスから明示的なインデックスでトラックを取得
インデックスの基本は 0 で、インデックスが 0 〜 トラック数出ない場合は、kAudio_ParamError を返すでしょう。
[cpp]
/*!
@function MusicSequenceGetTrackIndex
@abstract Get the index for a specific track
@discussion Index is zero based. It will return an error if the track is not a member of the sequence.
The track count and accessors exclude the tempo track (which is treated as a special case)
@param inSequence the sequence
@param inTrack the track
@param outTrackIndex the index of the track
*/
extern OSStatus
MusicSequenceGetTrackIndex( MusicSequence inSequence,
MusicTrack inTrack,
UInt32 *outTrackIndex) __OSX_AVAILABLE_STARTING(__MAC_10_0,__IPHONE_5_0);
シーケンスから明示的なトラックでインデックスを取得
インデックスの基本は 0 で、トラックがシーケンスのメンバーでない場合、エラーを返すでしょう。
トラックのカウントとテンポトラック(特別なケースとして取り扱い)を除くアクセッサー
[cpp]
/*!
@function MusicSequenceGetTempoTrack
@abstract Get the tempo track of the sequence
@discussion Each sequence has a single tempo track. All tempo events are placed into this tempo track (as well
as other appropriate events (time sig for instance from a MIDI file). The tempo track, once retrieved
can be edited and iterated upon as any other track. Non-tempo events in a tempo track are ignored.
@param inSequence the sequence
@param outTrack the tempo track of the sequence
*/
extern OSStatus
MusicSequenceGetTempoTrack( MusicSequence inSequence,
MusicTrack *outTrack) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_5_0);
シーケンスからテンポトラックを取得
それぞれのシーケンスは、テンポトラックを1つだけ持つ。
全てのテンポイベントは、テンポトラック(MIDIファイルからの時間信号)インスタンス他の適切なイベント同様に配置される。
テンポトラックは一度取得されると、編集や他のトラック上にイテレートされる。
テンポトラックの中で、テンポが無いイベントは、無視される。
[cpp]
/*!
@function MusicSequenceSetAUGraph
@abstract Set the graph to be associated with the sequence
@discussion A sequence can be associated with an AUGraph and this graph will be used to render the events as
controlled by the sequence when it is played. By default, all of the tracks of a sequence will
find the first AUNode that is an instance an Apple MusicDevice audio unit. This audio unit is a
software synthesiser that is compatible with the GM and GS MIDI standards.
Specific nodes of the graph can be targeted for different tracks as well (MusicTrackSetDestNode)
@param inSequence the sequence
@param inGraph the graph
*/ extern OSStatus MusicSequenceSetAUGraph( MusicSequence inSequence, AUGraph inGraph) __OSX_AVAILABLE_STARTING(__MAC_10_0,__IPHONE_5_0); シーケンスにAUGraph を設定する。 シーケンスはAUGraph と一緒に構成され、グラフはシーケンスが制御するようなイベントを描画するのに利用される。 通常、全てのシーケンストラックは、Apple Music Device のオーディオ単位である AUNode を最初に検知する。 このオーディオ単位は、GM と GS MIDI スタンダードと互換のあるソフトウェアシンセである。
[cpp]
/*!
@function MusicSequenceGetAUGraph
@abstract Gets the graph currently associated with a sequence
@discussion By default if no graph is assigned to a sequence then the sequence will create a default graph.
This default graph contains a MusicDevice and a DynamicsProcessor and all tracks will be targeted
to the MusicDevice.
This call will thus either return the graph as set by the user, or this default graph.
@param inSequence the sequence
@param outGraph the graph
*/ extern OSStatus MusicSequenceGetAUGraph( MusicSequence inSequence, AUGraph *outGraph) __OSX_AVAILABLE_STARTING(__MAC_10_0,__IPHONE_5_0); シーケンスから AUGraph を取得する。 デフォルトで、シーケンスにアサインされているグラフがない場合、デフォルトグラフを作成する。 このデフォルトグラフは、MusicDevice や ダイナミックプロセッサーを含み、全てのトラックは MusicDevice に結びつきます。
[cpp]
/*!
@function MusicSequenceSetMIDIEndpoint
@abstract Makes the target of all of the tracks in the sequence a MIDI endpoint
@discussion This is a convenience function, and is equivalent to iterating through all of the tracks in a sequence
and targeting each track to the MIDI endpoint
@param inSequence the sequence
@param inEndpoint the MIDI endpoint
*/ extern OSStatus MusicSequenceSetMIDIEndpoint( MusicSequence inSequence, MIDIEndpointRef inEndpoint) __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_5_0); シーケンスから、MIDIエンドポイントを設定する。 シーケンス中の全てのトラックのターゲットを作成 便利なファンクションで、シーケンス内の全てのトラックを通してイテレートする事と同等で、MIDIエンドポイントにそれぞれのトラックを対象にしている。
[cpp]
/*!
@function MusicSequenceSetSequenceType
@abstract Set the sequence type (the default is beats)
@discussion
These two calls allow you to get and set a MusicSequence type; specifying
kMusicSequenceType_Beats = 'beat',
kMusicSequenceType_Seconds = 'secs',
kMusicSequenceType_Samples = 'samp'
The sequence type can be set to beats at any time. The sequence type can only be set to
seconds or samples if there are NO tempo events already in the sequence.
For beats - it can have as many tempo events as you want
For Samples and Seconds - you should add a single tempo event after setting the type
Samples - the tempo is the desired sample rate - e.g. 44100 and each "beat" in the sequence will be
interpreted as a sample count at that sample rate (so beat == 44100 is a second)
Seconds - the tempo should be set to 60 - a beat is a second.
Beats is the default (and is the behaviour on pre 10.5 systems)
A meta event of interest for Seconds based MIDI files is the SMPTE Offset meta event - stored in the tempo track.
The sequence doesn't do anything with this event (except store/write it)
@param inSequence the sequence
@param inType the sequence type
*/ extern OSStatus MusicSequenceSetSequenceType( MusicSequence inSequence, MusicSequenceType inType) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_5_0);
[cpp]
/*!
@function MusicSequenceGetSequenceType
@abstract Get the sequence type
@discussion See SetSequence for a full description
@param inSequence the sequence
@param outType the type
*/
extern OSStatus
MusicSequenceGetSequenceType( MusicSequence inSequence,
MusicSequenceType * outType) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_5_0);
シーケンスから、シーケンスタイプを取得する。
MisicSequenceType は、拍、秒、サンプル数
[cpp]
/*!
@function MusicSequenceFileLoad
@abstract Load the data contained within the referenced file to the sequence
@discussion This function will parse the file referenced by the URL and add the events to the sequence.
@param inSequence the sequence
@param inFileRef a file:// URL that references a file
@param inFileTypeHint provides a hint to the sequence on the file type being imported
@param inFlags flags that can control how the data is parsed in the file and laid out in the tracks
that will be created and added to the sequence in this operation
*/
extern OSStatus
MusicSequenceFileLoad (MusicSequence inSequence,
CFURLRef inFileRef,
MusicSequenceFileTypeID inFileTypeHint, // can be zero in many cases
MusicSequenceLoadFlags inFlags) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_5_0);
シーケンスからにファイルをロードする。
URL参照(CFURLRef)のファイルをパースし、シーケンスイベントの追加をする。
inFileTypeHint(MusicSequenceFileTypeID)はインポートされるファイルタイプシーケンスするヒントを提供。多くの場合は、0 とする。
inFlags(MusicSequenceLoadFlags) は ファイルをパースやトラック上の配置方法等をコントロールするフラグだが、現在は kMusicSequenceLoadSMF_ChannelsToTracks しかない。
[cpp]
/*!
@function MusicSequenceFileLoadData
@abstract Load the data to the sequence
@discussion This function will parse the data and add the events to the sequence. The data provided needs to
be of a particular file type as specified by the fileTypeHint.
@param inSequence the sequence
@param inData the contents of a valid file loaded into a CFData object
@param inFileTypeHint provides a hint to the sequence on the file type being imported
@param inFlags flags that can control how the data is parsed in the file and laid out in the tracks
that will be created and added to the sequence in this operation
*/
extern OSStatus
MusicSequenceFileLoadData (MusicSequence inSequence,
CFDataRef inData,
MusicSequenceFileTypeID inFileTypeHint, // can be zero in many cases
MusicSequenceLoadFlags inFlags) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_5_0);
データをパースして、シーケンスにイベントを追加する。
データは、fileTypeHint によって指定された特別のファイルタイプを提供。
inData(CFDataRef)は、 CFData オブジェクトにロードされた有効なファイルのコンテンツ。
inFileTypeHint(MusicSequenceFileTypeID)は、インポートされたファイルタイプ上のシーケンスにヒントを提供する。
inFlags(MusicSequenceLoadFlags) は ファイルをパースやトラック上の配置方法等をコントロールするフラグだが、現在は kMusicSequenceLoadSMF_ChannelsToTracks しかない。
[cpp]
/*!
@function MusicSequenceSetSMPTEResolution
@abstract Helper function to establish the SMPTE based MIDI file resolution for the specified ticks
@discussion SMPTE resolution helpers for dealing with the interpretation and creation of
tick values for standard MIDI files (see MusicSequenceFileCreate)
@param fps the frames per second
@param ticks the ticks per quarter note
@result the resolution that can be used when creating a MIDI file derived from the two parameters
*/
CF_INLINE SInt16
MusicSequenceSetSMPTEResolution (SignedByte fps, Byte ticks)
{
SInt16 res = fps < 0 ? fps : -fps;
res = res << 8;
res += ticks;
return res;
}
指定されたティックスのMIDIファイル解像度をベースとしたSMTPE を確立するヘルパーファンクション
SMTPE 解像度ヘルパーは スタンダードMIDIファイルの為の解釈とティックス値作成(MusicSequenceFileCreate参照)
fps(SignedByte)は、1秒間のフレーム
ticks(Byte)は、4分音符間のティックス
解像度は、2つのパラメータからMIDIファイルを作成するときに利用する事ができる。
[cpp]
/*!
@function MusicSequenceGetSMPTEResolution
@abstract Helper function to get the fps and ticks from their representation in a SMPTE based MIDI file
@discussion SMPTE resolution helpers for dealing with the interpretation and creation of
tick values for standard MIDI files (see MusicSequenceFileCreate)
@param inRes the resolution from a MIDI file
@param fps the frames per second
@param ticks the ticks per quarter note
*/
CF_INLINE void
MusicSequenceGetSMPTEResolution (SInt16 inRes, SignedByte * fps, Byte * ticks)
{
*fps = (SignedByte)((0xFF00 & inRes) >> 8);
*ticks = 0x7F & inRes;
}
MIDIファイルをベースとしたSMTPE 内の表現から、fps(SingnedByte)と、ticks(Byte)を取得
[cpp]
/*!
@function MusicSequenceFileCreate
@abstract Create a file from a sequence
@discussion This function can be (and is most commonly) used to create a MIDI file from the events in a sequence.
Only MIDI based events are used when creating the MIDI file. MIDI files are normally beat based, but
can also have a SMPTE (or real-time rather than beat time) representation.
inResolution is relationship between "tick" and quarter note for saving to Standard MIDI File
- pass in zero to use default - this will be the value that is currently set on the tempo track
- see the comments for the set track property's time resolution
The different Sequence types determine the kinds of files that can be created:
Beats
When saving a MIDI file, it saves a beats (PPQ) based axis
Seconds
When saving a MIDI file, it will save it as a SMPTE resolution - so you should specify this resolution
when creating the MIDI file.
If zero is specified, 25 fps and 40 ticks/frame is used (a time scale of a millisecond)
Samples
You cannot save to a MIDI file with this sequence type
The complete meaning of the 16-bit "division" field in a MIDI File's MThd chunk.
If it is positive, then a tick represents 1/D quarter notes.
If it negative:
bits 14-8 are a signed 7-bit number representing the SMPTE format:
-24, -25, -29 (drop), -30
bits 7-0 represents the number of ticks per SMPTE frame
typical values: 4, 10, 80, 100
You can obtain millisecond resolution by specifying 25 frames/sec and 40 divisions/frame.
30 fps with 80 bits (ticks) per frame: 0xE250 ((char)0xE2 == -30)
@param inSequence the sequence
@param inFileRef the location of the file to create
@param inFileType the type of file to create
@param inFlags flags to control the file creation
@param inResolution the resolution (depending on file type and sequence type)
*/ extern OSStatus MusicSequenceFileCreate (MusicSequence inSequence, CFURLRef inFileRef, MusicSequenceFileTypeID inFileType, MusicSequenceFileFlags inFlags, SInt16 inResolution) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_5_0);
シーケンス内のイベントからMIDIファイルを作る、最も一般的な関数です。 イベントベースのMIDI だけ、MIDIファイルが作成されたときに利用できる。 MIDI ファイルは通常、拍ベースで用いられるが、SMPTE (拍の時間よりリアルタイム) 表現も利用可能です。 inResolution(SInt16)は、スタンダードMIDIファイルの保存用に、ティックスと4分音符の間に関係する。 ・デフォルトを利用では 0 を受け渡す。これはテンポトラック上の現在の設定値となります ・トラックのプロパティの時間解像度を設定する為には、コメントを参照
異なるシーケンスタイプは、作成されたファイルの種類を決定する。 拍: MIDIファイルが保存されたときに、軸を基本とした拍(PPQ)を保存する。 秒:MIDIファイルが保存されたときに、SMTPE 解像度として保存される(解像度を指定する必要がある) サンプル:シーケンスタイプと一緒に、MIDIファイルにに保存する事はできません。
MIDIファイル内の、16ビット MThdチャンク内の division の完全な意味、 もし、Positive だったら、ティックスは 1/D (四分音符) を表します。 もし、Negative だったら、 ・14から8ビットは、SMPTEフォーマットを表す符号付き7ビットの番号:-24, -25, -29 (drop), -30 ・7から0ビットは、SMPTEフレームごとのティック数を表す:典型的な値:4、10、80、100
25フレーム/秒、40分割/フレームの指定による、ミリセカンド解像度を取得する事ができます。 80ビット(ティックス)/秒 での 30 fps :0xE250 ((char)0xE2 == -30)
[cpp]
/*!
@function MusicSequenceFileCreateData
@abstract Create a data object from a sequence
@discussion The same basic parameters apply to this as with the MusicSequenceFileCreate function. The difference
being that that function will create a file on disk, whereas this one will create a CFData object
that is a file in memory. The CFData object should be released by the caller.
@param inSequence the sequence
@param inFileType the type of file to create
@param inFlags flags to control the file creation
@param inResolution the resolution (depending on file type and sequence type)
@param outData the resulting data object
*/
extern OSStatus
MusicSequenceFileCreateData (MusicSequence inSequence,
MusicSequenceFileTypeID inFileType,
MusicSequenceFileFlags inFlags,
SInt16 inResolution,
CFDataRef * outData) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_5_0);
シーケンスファイルから、データオブジェクトを作成する。
基本はMusicSequenceFileCreate と同様のパラメータを提供。
違いは、1つはメモリ内にCFDataオブジェクトを作成するのに対して、ディスク上にファイルを作成する。
CFDataオブジェクトは呼び出し側で解放する必要があります。
[cpp]
/*!
@function MusicSequenceReverse
@abstract Reverse in time all events in a sequence, including the tempo events
@param inSequence the sequence
*/
extern OSStatus
MusicSequenceReverse( MusicSequence inSequence) __OSX_AVAILABLE_STARTING(__MAC_10_0,__IPHONE_5_0);
テンポイベントを含むシーケンス内の全てのイベントを、元にもどします。
[cpp]
/*!
@function MusicSequenceGetSecondsForBeats
@abstract Returns a seconds value that would correspond to the supplied beats
@discussion Uses the sequence's tempo events
@param inSequence the sequence
@param inBeats the beats
@param outSeconds the seconds (time from 0 beat)
*/
extern OSStatus
MusicSequenceGetSecondsForBeats( MusicSequence inSequence,
MusicTimeStamp inBeats,
Float64 * outSeconds) __OSX_AVAILABLE_STARTING(__MAC_10_2,__IPHONE_5_0);
提供されている拍:inBeats(MusicTimeStamp)に相応した、秒:outSeconds(Float64)の値を返します。
[cpp]
/*!
@function MusicSequenceGetBeatsForSeconds
@abstract Returns a beat value that would correspond to the supplied seconds from zero.
@discussion Uses the sequence's tempo events
@param inSequence the sequence
@param inSeconds the seconds
@param outBeats the corresponding beat
*/
extern OSStatus
MusicSequenceGetBeatsForSeconds( MusicSequence inSequence,
Float64 inSeconds,
MusicTimeStamp * outBeats) __OSX_AVAILABLE_STARTING(__MAC_10_2,__IPHONE_5_0);
提供されている秒:outSeconds(Float64)に相応した、拍:inBeats(MusicTimeStamp)の値を返します。
[cpp]
/*!
@function MusicSequenceSetUserCallback
@abstract Establish a user callback for a sequence
@discussion This call is used to register (or remove if inCallback is NULL) a callback
that the MusicSequence will call for ANY UserEvents that are added to any of the
tracks of the sequence.
If there is a callback registered, then UserEvents will be chased when
MusicPlayerSetTime is called. In that case the inStartSliceBeat and inEndSliceBeat
will both be the same value and will be the beat that the player is chasing too.
In normal cases, where the sequence data is being scheduled for playback, the
following will apply:
inStartSliceBeat <= inEventTime < inEndSliceBeat
The only exception to this is if the track that owns the MusicEvent is looping.
In this case the start beat will still be less than the end beat (so your callback
can still determine that it is playing, and what beats are currently being scheduled),
however, the inEventTime will be the original time-stamped time of the user event.
@param inSequence the sequence
@param inCallback the callback
@param inClientData client (user supplied) data provided back to the callback when it is called by the sequence
/ extern OSStatus MusicSequenceSetUserCallback( MusicSequence inSequence, MusicSequenceUserCallback inCallback, void inClientData) __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_5_0); シーケンス用のユーザコールバックを設定します。 MusicSequenceがシーケンストラックに追加したユーザイベント用にコールバックを登録するすることで、この呼び出しは利用されます。(もし inCallback が NULL だったら削除)
登録されたコールバックがあれば、MusicPlayerSetTIme で呼ばれたときに、ユーザイベントはクラッシュするかも知れません。 inStartSliceBeat と inEndSliceBeat の両方に同じ値の時や、プレイヤーもクラッシュする拍の場合です。
通常の場合、再生のスケジュールされたシーケンスデータの位置は、以下のように適用されます。
inStartSliceBeat <= inEventTime < inEndSliceBeat
MusicEvent を所有しているトラックがループしている場合は例外です。 最初の拍が最後の拍(コールバックがまだ再生中と判断し、何ビートかが現在管理されている)より小さくなるまでの場合でも、inEventTime はユーザイベントのオリジナルのタイムスタンプ時間になります。
/*!
@function MusicSequenceBeatsToBarBeatTime
@abstract Convenience function to format a sequence's beat time to its bar-beat time
@discussion see . The sequence's tempo track Time Sig events are used to
to calculate the bar-beat representation. If there are no Time Sig events added to the sequence
4/4 is assumed. A Time Sig event is a MIDI Meta Event as specified for MIDI files.
@param inSequence the sequence
@param inBeats the beat which should be represented by the bar-beat
@param inSubbeatDivisor The denominator of the fractional number of beats.
@param outBarBeatTime the formatted bar/beat time
*/
extern OSStatus
MusicSequenceBeatsToBarBeatTime(MusicSequence inSequence,
MusicTimeStamp inBeats,
UInt32 inSubbeatDivisor,
CABarBeatTime * outBarBeatTime) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_5_0);
シーケンサーのbeat time(MusicTimeStamp)をbar-beat time(CABarBeatTime) に変換する。 シーケンスのTime Sig イベントテンポトラックは、bar-beat time 表現で計算するのに用いられる。 もしシーケンスに追加するTime Sig イベントが無ければ、4/4 拍子が指定される。 TIme Sig イベントは、MIDIファイル用に指定されるMIDI Meta Event です。
/*!
@function MusicSequenceBarBeatTimeToBeats
@abstract Convenience function to format a bar-beat time to a sequence's beat time
@discussion see . The sequence's tempo track Time Sig events are used to
to calculate the bar-beat representation. If there are no Time Sig events added to the sequence
4/4 is assumed. A Time Sig event is a MIDI Meta Event as specified for MIDI files.
@param inSequence the sequence
@param inBarBeatTime the bar-beat time
@param outBeats the sequence's beat time for that bar-beat time
*/
extern OSStatus
MusicSequenceBarBeatTimeToBeats(MusicSequence inSequence,
const CABarBeatTime * inBarBeatTime,
MusicTimeStamp * outBeats) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_5_0);
シーケンサーの bar-beat time(CABarBeatTime)を beat time(MusicTimeStamp)に変換する。 シーケンスのTime Sig イベントテンポトラックは、bar-bea 表現で計算するのに用いられる。 もしシーケンスに追加するTime Sig イベントが無ければ、4/4 拍子が指定される。 TIme Sig イベントは、MIDIファイル用に指定されるMIDI Meta Event です。
/*!
@function MusicSequenceGetInfoDictionary
@abstract Returns a dictionary containing meta-data derived from a sequence
@discussion The dictionary can contain one or more of the kAFInfoDictionary_*
keys specified in
The caller should release the returned dictionary. If the call fails it will return NULL
@param inSequence the sequence
@result a CFDictionary or NULL if the call fails.
*/
extern CFDictionaryRef
MusicSequenceGetInfoDictionary( MusicSequence inSequence) __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_5_0);
シーケンスから導出される meta data を dictionary で返す。 dictionary は、1つないし、複数の <AudioToolbox/AudioFile.h> で指定されたキー kAFInfoDictionary_ を含む事ができる。 呼び出しで返された dictionary は release すべきです。 もし、呼び出しが失敗した場合は NULL を返します。
svn checkout http://tesseract-ocr.googlecode.com/svn/trunk/ tesseract-ocr sh autogen.sh
libtoolize →glibtoolize ./configure
http://tinsuke.wordpress.com/2011/02/17/how-to-cross-compiling-libraries-for-ios-armv6armv7i386/
http://tinsuke.wordpress.com/2011/11/01/how-to-compile-and-use-tesseract-3-01-on-ios-sdk-5/
http://www.malcolmhardie.com/ocr/xcode4.html
# svn checkout http://tesseract-ocr.googlecode.com/svn/trunk/ tesseract-ocr
http://code.google.com/p/tesseract-ocr/issues/detail?id=340#c0
http://mousecradle.wordpress.com/2011/05/17/compiling-svn-tesseract-on-osx/
sudo port install leptonica swig
./autogen.sh
configure 書き換え
./configure
make
sudo make install
Error opening data file /usr/local/share/tessdata/eng.traineddata
cp *.traineddata /usr/local/share/tessdata/
tesseract test.png test -l eng
wget http://leptonica.googlecode.com/files/leptonica-1.68.tar.gz
http://code.google.com/p/python-tesseract/wiki/HowToCompilePythonTesseract
tar jxvf leptonica-1.68.tar.gz
http://robertcarlsen.net/2009/12/06/ocr-on-iphone-demo-1043
http://samuraism.jp/diary/2007/04/14/1176560157667.html
http://tinsuke.wordpress.com/2011/11/01/how-to-compile-and-use-tesseract-3-01-on-ios-sdk-5/
会社で、SVN から Git に移行する流れになってきたので、今更ながら Git の基本をメモ。 手当たり次第なので、ところどころ間違いがあるかと思います。
$ mkdir プロジェクト名 $ cd プロジェクト名 $ git init --bare --shared=true $ git --bare update-server-info
これで空のリポジトリが作成と、WebDav経由での公開設定
Titanium Studio の Team で AptanaGit を利用しようとしたが、どうにもこうにも作業コピーできない(?)ので、手動でコマンドすることに。
$ git clone http://サーバ/git/プロジェクト名
TitaniumStudio に戻り Team > Commit を選択
コメントを入れて、Commit したいファイルを、Unstaged Changes から staged Changes に移動して【Commit】
リモート(origin) を選択すると push、SVN で言うリポジトリへの Commit となります。 TitaniumStudio ではコンソール上で赤文字(デフォルト色)で表示されるので、エラーが出たかと勘違いしますが、問題なく push できました。
コマンドだと大体こういう流れになるでしょうか?
$ git add 追加ファイル $ git add . $ git commit -m 'コメント' $ git remote add origin http://リモートサーバ/git/プロジェクト名 $ git push origin master
以前は JSON ライブラリを利用してましたが、iOS5 から JSON が標準対応になりました。 JSONテキストファイルを読み込んで、オブジェクト化するのにたった4行と素晴らしい。 (ファイル存在チェックはしてませんが・・・)
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"txt"];
NSFileHandle *fileHandle = [NSFileHandle fileHandleForReadingAtPath:filePath];
NSData *data =[fileHandle readDataToEndOfFile];
NSArray *results = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
NSLog("%@", results);
NSJSONSerialization の API は以下の通り、非常に少ないのでシンプルです。
#import
@class NSError, NSOutputStream, NSInputStream, NSData;
enum {
NSJSONReadingMutableContainers = (1UL << 0),
NSJSONReadingMutableLeaves = (1UL << 1),
NSJSONReadingAllowFragments = (1UL << 2)
};
typedef NSUInteger NSJSONReadingOptions;
enum {
NSJSONWritingPrettyPrinted = (1UL << 0)
};
typedef NSUInteger NSJSONWritingOptions;
NS_CLASS_AVAILABLE(10_7, 5_0)
@interface NSJSONSerialization : NSObject {
@private
void *reserved[6];
}
+ (BOOL)isValidJSONObject:(id)obj;
+ (NSData *)dataWithJSONObject:(id)obj options:(NSJSONWritingOptions)opt error:(NSError **)error;
+ (id)JSONObjectWithData:(NSData *)data options:(NSJSONReadingOptions)opt error:(NSError **)error;
+ (NSInteger)writeJSONObject:(id)obj toStream:(NSOutputStream *)stream options:(NSJSONWritingOptions)opt error:(NSError **)error;
+ (id)JSONObjectWithStream:(NSInputStream *)stream options:(NSJSONReadingOptions)opt error:(NSError **)error;
@end
詳細や実用は、以下のサイトが参考になるかもです。 NSJSONSerialization Class Reference Working with JSON in iOS 5 Tutorial
MusicPlayer についての内容 ※間違いが含まれている場合があるので注意
/*! @function NewMusicPlayer @abstract Create a new music player @discussion A music player is used to play a sequence back. This call is used to create a player When a sequence is to be played by a player, it can play to either an AUGraph, a MIDI Destination or a mixture/combination of both. @param outPlayer the newly created player */ extern OSStatus NewMusicPlayer( MusicPlayer *outPlayer) __OSX_AVAILABLE_STARTING(__MAC_10_0,__IPHONE_5_0);
MusicPlayer は シーケンスを演奏する為に使われる。 この呼び出しは、新規 MusicPlayer の作成で利用。 シーケンスがプレイヤーで再生されるとき、「AUGraph」もしくは、「MIDI Destination とMixture/Combination」の両方のいずれかで再生可能。
/*!
@function DisposeMusicPlayer
@abstract Dispose a music player
@param inPlayer the player to dispose
*/
extern OSStatus
DisposeMusicPlayer( MusicPlayer inPlayer) __OSX_AVAILABLE_STARTING(__MAC_10_0,__IPHONE_5_0);
MusicPlayer の処分をする。
/*!
@function MusicPlayerSetSequence
@abstract Set the sequence for the player to play
@discussion A Sequence cannot be set on a player while it is playing. Setting a sequence
will overide the currently set sequence.
@param inPlayer the player
@param inSequence the sequence for the player to play
*/
extern OSStatus
MusicPlayerSetSequence( MusicPlayer inPlayer,
MusicSequence inSequence) __OSX_AVAILABLE_STARTING(__MAC_10_0,__IPHONE_5_0);
MusicPlayer に シーケンスを設定する。
/*!
@function MusicPlayerGetSequence
@abstract Get the sequence attached to a player
@discussion If the player does not have a sequence set, this will return the _NoSequence error
@param inPlayer the player
@param outSequence the sequence currently set on the player
*/
extern OSStatus
MusicPlayerGetSequence( MusicPlayer inPlayer,
MusicSequence *outSequence) __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_5_0);
MusicPlayer の シーケンスを取得する。
[cpp]
/*!
@function MusicPlayerSetTime
@abstract Set the current time on the player
@discussion The Get and Set Time calls take a specification of time as beats. This positions the player
to the specified time based on the currently set sequence. No range checking on the time value
is done. This can be set on a playing player (in which case playing will be resumed from the
new time).
@param inPlayer the player
@param inTime the new time value
*/
extern OSStatus
MusicPlayerSetTime( MusicPlayer inPlayer,
MusicTimeStamp inTime) __OSX_AVAILABLE_STARTING(__MAC_10_0,__IPHONE_5_0);
MusicPlayer に MusicTimeStamp を設定する。
/*!
@function MusicPlayerGetTime
@abstract Get the current time of the player
@discussion The Get and Set Time calls take a specification of time as beats. This retrieves the player's
current time. If it is playing this time is the time of the player at the time the call was made.
@param inPlayer the player
@param outTime the current time value
*/
extern OSStatus
MusicPlayerGetTime( MusicPlayer inPlayer,
MusicTimeStamp *outTime) __OSX_AVAILABLE_STARTING(__MAC_10_0,__IPHONE_5_0);
MusicPlayer から MusicTimeStamp を取得する。
/*!
@function MusicPlayerGetHostTimeForBeats
@abstract Returns the host time that will be (or was) played at the specified beat.
@discussion This call is only valid if the player is playing and will return an error if the player is not playing
or if the starting position of the player (its "starting beat") was after the specified beat.
For general translation of beats to time in a sequence, see the MusicSequence calls for beat<->seconds.
The call uses the player's sequence's tempo map to translate a beat time from the starting time and beat
of the player.
@param inPlayer the player
@param inBeats the specified beat-time value
@param outHostTime the corresponding host time
*/
extern OSStatus
MusicPlayerGetHostTimeForBeats( MusicPlayer inPlayer,
MusicTimeStamp inBeats,
UInt64 * outHostTime) __OSX_AVAILABLE_STARTING(__MAC_10_2,__IPHONE_5_0);
MusicPlayer に拍数(MusicTimeStamp)を設定して、ホストタイムを取得する。
/*!
@function MusicPlayerGetBeatsForHostTime
@abstract Returns the beat that will be (or was) played at the specified host time.
@discussion This call is only valid if the player is playing and will return an error if the player is not playing
or if the starting time of the player was after the specified host time.
For general translation of beats to time in a sequence, see the MusicSequence calls for beat<->seconds.
The call uses the player's sequence's tempo map to retrieve a beat time from the starting and specified host time.
@param inPlayer the player
@param inHostTime the specified host time value
@param outBeats the corresponding beat time
*/
extern OSStatus
MusicPlayerGetBeatsForHostTime( MusicPlayer inPlayer,
UInt64 inHostTime,
MusicTimeStamp *outBeats) __OSX_AVAILABLE_STARTING(__MAC_10_2,__IPHONE_5_0);
MusicPlayer にホストタイムを設定して、拍数(MusicTimeStamp)を取得する。
/*!
@function MusicPlayerPreroll
@abstract Prepare the player for playing
@discussion Allows the player to prepare its state so that starting is has a lower latency. If a player is started without
being prerolled, the player will pre-roll itself and then start.
@param inPlayer the player
*/
extern OSStatus
MusicPlayerPreroll( MusicPlayer inPlayer) __OSX_AVAILABLE_STARTING(__MAC_10_0,__IPHONE_5_0);
MusicPlayer の再生の準備をする。 再生する準備ができたプレイヤーは、ローレイテンシーを実現できる。 プリロールされずにスタートした場合、プレイヤーは自分自身をプリロールしてそれからスタートするかもしれない。
/*!
@function MusicPlayerStart
@abstract Start the player
@discussion If the player has not been prerolled, it will pre-roll itself and then start.
@param inPlayer the player
*/
extern OSStatus
MusicPlayerStart( MusicPlayer inPlayer) __OSX_AVAILABLE_STARTING(__MAC_10_0,__IPHONE_5_0);
MusicPlayer を再生する。
/*!
@function MusicPlayerStop
@abstract Stop the player
@param inPlayer the player
*/
extern OSStatus
MusicPlayerStop( MusicPlayer inPlayer) __OSX_AVAILABLE_STARTING(__MAC_10_0,__IPHONE_5_0);
MusicPlayer を停止する。
//
/*!
@function MusicPlayerIsPlaying
@abstract Returns the playing state of the player. "Is it playing?"
@discussion This call returns a non-zero value in outIsPlaying if the player has been
started and not stopped. It may have "played" past the events of the attached
MusicSequence, but it is still considered to be playing (and its time value increasing)
until it is explicitly stopped
@param inPlayer the player
@param outIsPlaying false if not, true (non-zero) if is playing
*/
extern OSStatus
MusicPlayerIsPlaying( MusicPlayer inPlayer,
Boolean * outIsPlaying) __OSX_AVAILABLE_STARTING(__MAC_10_2,__IPHONE_5_0);
MusicPlayer が再生中か判断する。
/*!
@function MusicPlayerSetPlayRateScalar
@abstract Scale the playback rate of the player
@param inPlayer the player
@param inScaleRate a scalar that will be applied to the playback rate. If 2, playback is twice as fast, if
0.5 it is half as fast. As a scalar, the value must be greater than zero.
*/
extern OSStatus
MusicPlayerSetPlayRateScalar( MusicPlayer inPlayer,
Float64 inScaleRate) __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_5_0);
MusicPlayer の再生スピードを変える。 inScaleRate が2なら2倍、0.5なら半分の速さとなる。 inScaleRate は必ず 0 より大きい値にする。
/*!
@function MusicPlayerGetPlayRateScalar
@abstract Get the playback rate scalar of the player
@param inPlayer the player
@param outScaleRate the current scalar being applied to the player. Default value is 1.0
*/
extern OSStatus
MusicPlayerGetPlayRateScalar( MusicPlayer inPlayer,
Float64 * outScaleRate) __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_5_0);
MusicPlayer の再生スピードを取得する。
Macports で久々アップデート&インストールしようと思ったら以下のエラー
Error: Dependency 'p5.12-locale-gettext' not found.
p5.12-locale-gettext をクリーンにする
sudo port clean p5.12-locale-gettext
再度インストールしようと思ったら今度は Perl のエラー
Error: Target org.macports.activate returned: Image error: /opt/local/bin/a2p is being used by the active perl5.8 port.
どうやら Perl が重複して Active になっているぽい
sudo port installed | grep perl perl5 @5.8.9_0 perl5 @5.12.3_1+perl5_12 perl5.8 @5.8.9_3 (active) perl5.12 @5.12.3_2 (active)
ので、perl5.8 を無効にする。
sudo port deactivate perl5.8
何のきっかけでこうなったのか不明だが、同じ現象が起きている人もちらほらいるみたいです。
Debian6 に Jenkins をインストールしてみた。 Java を入れてなかったので java6-sdk をインストールしようとしたら、2つ選択肢があったみたいなので、openjdk-6-jdk をインストールしてみた。
# aptitude install openjdk-6-jdk
# wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | apt-key add - # aptitude install jenkins
オートマチックにアップグレードするようキーを登録するそうです。
あっけなく起動完了!
Jenkins のホームは以下のようです。
/var/lib/jenkins/