top of page

GameAudio & Art

Media

AZSTOKE_AllMediaNameAscendingOrderSetter

全てのメディアを昇順に並べ替える

2

import sys

sys.path.append(RPR_GetResourcePath() + r"\UserPlugins")

from AZSTOKE_BRONZE_python import *


def Msg(parm):

    RPR_ShowConsoleMsg(str(parm) + "\n")


_,_,_,allCount,_ = AZ_GetMediaTypeCount(0,"",0,0)


mediaList = []

sortList = [None]*allCount


mediaInterval = 0.5

setMediaTime = 0


for i in range(allCount):


    mediaList.insert(i, {})

    retval,_,_,mediaList[i]["name"],_= AZ_GetMediaName(0,i,"",1024)

    sortList[i] = mediaList[i]["name"]

    mediaList[i]["media"]=AZ_GetMediaItemSelect(0,i,0)

    retval,_,_,mediaList[i]["length"]= AZ_GetMediaLength(0,i,0)


mediaList= sorted(mediaList, key=lambda sortList:sortList["name"])



for index, value in enumerate(mediaList,0):

    if index == 0:

       AZ_SetMediaItemStartTimeSeconds(mediaList[index]["media"],setMediaTime)

    else:

       setMediaTime = setMediaTime + mediaList[index-1]["length"]+mediaInterval

       AZ_SetMediaItemStartTimeSeconds(mediaList[index]["media"],setMediaTime)

       

import sys

sys.path.append(RPR_GetResourcePath() + r"\UserPlugins")

from AZSTOKE_BRONZE_python import *


  • BronzeのAPIのインポートを行います。

  • インストールできていない方はこちらでダウンロードが必要


def Msg(parm):

    RPR_ShowConsoleMsg(str(parm) + "\n")


  • 信号確認するためにMsg関数を設置(必須ではありません)

    

_,_,_,allCount,_ = AZ_GetMediaTypeCount(0,"",0,0)

  • 全てのメディアの数(allCount)を取得します。


mediaList = []

  • 配列(medialist)を定義する

sortList = [None]*allCount

  • *1

  • sortList配列にカウント分(allCount)の枠を用意


mediaInterval = 0.5

  • メディアの間隔値を変数として準備

setMediaTime = 0

  • メディアの開始位置を変数として準備


for i in range(allCount):

  • *2

  • 変数(allCount)分、ループさせる



    mediaList.insert(i, {})

  • リスト(mediaList)の指定した場所に要素を追加する

  • i:挿入したい位置

  • {}:追加したい要素

    retval,_,_,mediaList[i]["name"],_= AZ_GetMediaName(0,i,"",1024)

  • メディアの名前を取得し、mediaList[i]の["name"]に保存

    sortList[i] = mediaList[i]["name"]

  • 変数(sortList)に保存した["name"]を追加

    mediaList[i]["media"]=AZ_GetMediaItemSelect(0,i,0)

  • MeidaItemを取得し、mediaList[i]の["media"]に保存

    retval,_,_,mediaList[i]["length"]= AZ_GetMediaLength(0,i,0)

  • メディアの長さを取得し、mediaList[i]の["length"]に保存



mediaList= sorted(mediaList, key=lambda sortList:sortList["name"])

  • *3

  • mediaListのkeyのnameでソートを行ってmediaListに登録

  •  key=lambda:名前の無い関数を作るもの



for index, value in enumerate(mediaList,0):

  • mediaList

  • enumerate()関数:格納されている値と順番を同時に取得できる

    if index == 0:

  • *4

  • indexが0なら

  • ==:等しい

     AZ_SetMediaItemStartTimeSeconds(mediaList[index]["media"],setMediaTime)

  • 配列(mediaList[index])のメディアを変数(setMediaTime)にセットする

  • 開始位置は0になる

  

    else:

  • if文 変数(index)の中身を確認

  • 1つ目以外の場合、下に続く

       setMediaTime = setMediaTime + mediaList[index-1]["length"]+mediaInterval

  • 2つ目以降の開始地点を出力

  • メディアの開始位置の変数(setMediaTime)+メディアの長さ+メディアの間隔値(1秒)

 AZ_SetMediaItemStartTimeSeconds(mediaList[index]["media"],setMediaTime)

  • 配列mediaList[index]のメディアをsetMediaTime(2つ目以降の位置)にセットする


  • 配列(mediaList)分、繰り返す

  • プロジェクトに配置された全てのメディアを昇順に並べ替えられている



=参考文献===


       

APIの利用にはBRONZEに

加入し専用APIを

ダウンロード

する必要があります。

  1. プロジェクト内にメディアを複数設置

- Script Code -
- Script Image -
- Warm Up -
- Script Detail -
- API LINK -

PYTHON

​ReaScript File Download 👇

​※実行するには専用APIが必要です

- Script Download -
bottom of page