忘備ログ

失い続ける履歴 Pythonとか趣味とかいろいろ

Pythonで音楽を再生したい(6) pygame編

こんにちは、スドウです。

Pygameを使った音楽プレイヤー(もどき)の作成記録です。

前回のソースを(何故か)大幅に変更しました。

【前回の記事】

sudo2501lab01.hatenablog.com

1番大きな変更はClass化したことでしょうか。
そのClass化に至った理由ですが、
Class化の勉強しよう。まずは作りかけの音楽プレイヤーでやってみよう。」
と言うその場のノリと勢いで決めたワケじゃないんですが。。。
正直。。。特に理由らしい理由はない。。。です。
(でも、なんとなくClass化のやり方はわかってきた。。。よ)

Class化以外にも少し機能を追加したので、
変更内容を下記にまとめます。

変更内容
  • Class化
  • ファイル未選択時は一時停止/再開ボタンを無効にする
  • ファイル選択毎に一時停止/再開ボタンを初期化する

いつものように wavファイル を再生します。
※ ソースと同じフォルダに wavファイル がなくてもOKです。

以下ソースです。

import os
import sys
import tkinter as tk
from tkinter import ttk
from tkinter import *
from tkinter.ttk import *
from tkinter import filedialog

import pygame.mixer as pymix
import wave

# ウィンドウクラス
class Frame(ttk.Frame):

    # 初期化
    def __init__(self, master = None):
        super().__init__(master)
        self.master.title('Music Player by Pygame (test12)') # タイトル
        self.master.resizable(False, False) # サイズ変更の禁止
        self.pack()
        self.create_buttons() # ボタン
        self.create_label()   # ラベル
        
    # 終了
    def push_exit(self):
        exit()

    # ファイル選択処理
    def file_select(self):
    
        # ファイル拡張子の指定
        #fType = [("", "*")] # 全てのファイル
        #fType = [("", "*.wav *.mp3")] #.wav,.mp3のみ
        fType = [("", "*.wav")] #.wavのみ
       
       # ディレクトリ名を返す
        iDir = os.path.abspath(os.path.dirname(__file__))

        # ファイル選択ダイアログ(選択ファイルの絶対パスを取得)
        fPath = filedialog.askopenfilename(filetype = fType, initialdir = iDir)

        if (fPath != ""): # 絶対パスが空ではない
        
            # ファイル名のみ表示
            fName = os.path.basename(fPath)

            # ファイル名前をセット
            self.file2.set(fName) # ファイル名のみ(曲名表示用)

            # 再生関連の初期化
            self.setting_init()

            # ファイルを自動再生
            self.music_start(fPath) # 絶対パスを引数として渡す
        
        else : # ファイルパスが空
            pass

    # 音楽再生関連の設定を初期化
    def setting_init(self):
        
        # 一時停止/再生ボタンを有効にする
        self.pause_btn.state(["!disabled"])

        # 一時停止/再生ボタンの初期化
        self.pause_btn_act = 0
        self.btn_text.set("一時停止")

        # 音量スライダを生成する
        self.create_scal()    # 音量スライダ        

    # 音楽再生
    def music_start(self, fPath):

        # 再生中の音楽を終了する
        pymix.quit()

        # 再生するファイルパスを取得
        sound_file = fPath

        # 初期設定
        pymix.init(frequency = 44100, size = -16, channels = 2, buffer = 4096)

        # 再生ファイルを設定
        sounds = pymix.Sound((str)(sound_file))

        # 音楽再生 (loops = -1:無限ループ)
        music_play = sounds.play( loops = -1)

        # 音量初期値
        music_play.set_volume(0.1)

        # 音量スケール初期化
        self.vol_scal.set(10)

        # Sound.play オブジェクトをインスタンス(?)変数化
        self.music_obj = music_play

    # 音楽:一時停止  
    def music_pause(self):
        self.music_obj.pause()

    # 音楽:再開  
    def music_unpause(self):
        self.music_obj.unpause()

    # 音量調節
    def sound_vol(self, n):
        # 0.01刻みで0.00 ~ 1.00 の範囲で変化
        self.music_obj.set_volume((float)(self.vol_scal.get()/100))

    # 再生/一時停止
    def push_pause(self):
        if(self.pause_btn_act == 0):
            self.music_pause()   # 一時停止
            self.pause_btn_act = 1
            self.btn_text.set("再開")
        elif(self.pause_btn_act == 1):
            self.music_unpause() # 再開
            self.pause_btn_act = 0
            self.btn_text.set("一時停止")
        
    # ボタンの作成
    def create_buttons(self):
        # ファイル選択ボタン
        self.file_btn            = ttk.Button(self)
        self.file_btn["text"]    = "ファイル"
        self.file_btn["command"] = self.file_select
        self.file_btn.grid(row = 0, column = 0)

        # 終了ボタン
        self.exit_btn            = ttk.Button(self)
        self.exit_btn["text"]    = "終了"
        self.exit_btn["command"] = self.push_exit
        self.exit_btn.grid(row = 0, column = 1)

        # 再生/一時停止ボタン
        self.btn_text = StringVar()
        self.btn_text.set("一時停止")
        
        self.pause_btn                 = ttk.Button(self)
        self.pause_btn["textvariable"] = self.btn_text
        self.pause_btn["command"]      = self.push_pause
        self.pause_btn.state(["disabled"])  # ボタンを無効(初期状態)
        self.pause_btn.grid(row = 2, column = 0)

    # 音量スライダの作成
    def create_scal(self):
        self.vol_scal               = tk.Scale(self)
        self.vol_scal["orient"]     = HORIZONTAL
        self.vol_scal["length"]     = 400
        self.vol_scal["from_"]      = 0.0
        self.vol_scal["to"]         = 100.0
        self.vol_scal["resolution"] = 1.0
        self.vol_scal["command"]    = self.sound_vol        
        self.vol_scal.grid(row = 3, column = 1)

    # ラベルの作成
    def create_label(self):
        # ファイル名取得
        self.file2 = StringVar()  # 名前のみ取得(表示用)
         
        # ファイル名表示ラベル
        self.name_label                 = ttk.Label(self)
        self.name_label["textvariable"] = self.file2
        self.name_label["font"]         = ("",12)
        self.name_label["width"]        = 50
        self.name_label.grid(row = 1, column = 1)

        # 音量スライダラベル
        self.volume_label         = ttk.Label(self)
        self.volume_label["text"] = "音量" 
        self.volume_label.grid(row = 3, column = 0)        

if __name__ == '__main__':
    
    root = Frame()
    root.mainloop()

IDLEからプログラムを実行します。

見た目と基本的な操作は前回と同じです。

前回も少し触れましたが、Pygame以外の音声処理ライブラリとして
wxPythonの使用を考えています。
まだ、情報を集めている段階なので断言はできないのですが。。。

それと今後、音楽プレイヤーに追加したい機能ですが
* 再生できる形式が多い(Pygameではmp3の再生に制限があるため)
* 再生シークの追加(ファイルポインタの制御ができること)
* 再生時間の表示
* リピート再生のON/OFF
です。
(おそらく、もっとあると思いますが。。。 )
そして、上記にある再生できる形式が多い
現在のPygameからライブラリを変更したい理由です。

2018年 おそらく さいごの記事はPythonでした。
年末の大掃除の如く記事を更新しましたが、
これからはゆっくり目な更新になると思います。  

Python関連の記事が音楽プレイヤーばかりですが、
それ以外にもPythonを使ってやりたい事がたくさんあるので、
これから少しずつ始めていきたいです。

(あと、放置しているUTAU式人力も何とかしたいとは思っているけど、たぶん暫くはやらない。)

何事もなければ、本記事が2018年最後の更新になると思います。
技術的にも、文章的にも拙い記事が多かったと思いますが、
読んでいただきありがとうございました。
そして、来年もよろしくお願い致します。

ではでは!

スポンサードリンク

Pythonで音楽を再生したい(5) pygame編

こんにちは、スドウです。

Pygameを使った音楽プレイヤー(もどき)の作成記録です。
前回のソースを少し改良してみました。

【前回の記事】

sudo2501lab01.hatenablog.com

改良と言っても大きな変更はありません。
本当に地味な、
地味~~な変更です。

変更内容は下記です。
* ファイル選択後に自動再生するように変更
* 上記の変更に伴いスタートボタンの削除
* ファイル選択キャンセル時にファイル名の表示が消えないように変更
* ファイル名表示のフォントサイズを変更
* 再生/一時停止ボタンの表示修正

いつものように wavファイル を再生します。
※ ソースと同じフォルダに wavファイル がなくてもOKです。

以下ソースです。

import os
import sys
import tkinter as tk
from tkinter import ttk
from tkinter import *
from tkinter.ttk import *
from tkinter import filedialog

import wave
import pygame.mixer as pymix

import time

button_act = 0 # 再生/一時停止用のグローバル変数

# ファイル選択処理
def fp_select():
    
    # ファイル拡張子の指定
    #fType = [("", "*")] # 全てのファイル
    #fType = [("", "*.wav *.mp3")] #.wav,.mp3のみ
    fType = [("", "*.wav")] #.wavのみ
       
   # ディレクトリ名を返す
    iDir = os.path.abspath(os.path.dirname(__file__))

    # ファイル選択ダイアログ(選択ファイルの絶対パスを取得)
    fPath = filedialog.askopenfilename(filetype = fType, initialdir = iDir)

    if (fPath != ""): # 絶対パスが空ではない
        
        # ファイル名のみ表示
        fName = os.path.basename(fPath)

        # ファイルパスor名前をセット
        file1.set(fPath) # 絶対パス
        file2.set(fName) # ファイル名のみ(曲名表示用)

        # 選択したファイルを開には絶対パスが必要

        # ファイルを自動再生
        if (fPath != "") : # ファイル選択時
            music_play()
        else :             # ファイル未選択時
            pass
        
    else : # ファイルパスが空
        pass

# プログラム終了
def push_exit():
    exit()

# 音楽再生
def music_play():

    # 再生中の音声を終了する
    pymix.quit()

    # 再生するファイルパスを取得
    sound_file = file1.get()

    # 初期設定
    pymix.init(frequency = 44100, size = -16, channels = 2, buffer = 4096)

    # 再生ファイルを設定
    sounds = pymix.Sound(sound_file) 

    # 再生回数(-1:無限ループ)
    sd_loop = -1

    # 音楽再生
    music_play = sounds.play( loops = sd_loop)

    # 音量初期値
    music_play.set_volume(0.1) 

    # 音量調節
    def sound_vol(n):
        # 0.01刻みで0.00~1.00 の範囲で変化
        music_play.set_volume((float)(vol_scale.get()/100)) 

    vol_scale = tk.Scale(root,
                          orient = HORIZONTAL,
                          length = 400,
                          from_  = 0.0,
                          to     = 100.0,
                          resolution = 1.0 ,
                          command = sound_vol )
    
    vol_scale.set(10) # 音量スライダの初期値
    vol_scale.grid(row = 3, column = 1) # 音量スライダ    

if __name__ == '__main__':
    
    root = Tk()
    root.title('Music Player by Pygame (Test)') # フレームタイトル(名前がひどい)
    root.resizable(False, False)

    # ファイル名取得
    file1 = StringVar()  # フルパス取得(再生に必要)
    file2 = StringVar()  # 名前のみ取得(表示用)
    
    # ファイル名表示ラベルの作成
    name_label = ttk.Label(root,
                           textvariable = file2,
                           font = ("",12), # フォントサイズ変更
                           width = 50)   
    name_label.grid(row = 1, column = 1) #ファイル名表示ラベル

    # ファイル選択用ボタン
    fp_select_btn = ttk.Button(root,
                               text = 'ファイル',
                               command = fp_select)
    fp_select_btn.grid(row = 0, column = 0) # ファイル選択用ボタン(左上)

    # 終了ボタン
    exit_btn = ttk.Button(root,
                          text = '終了',
                          command = push_exit)
    exit_btn.grid(row = 0, column = 1) # 終了ボタン
    
    # 再生/一時停止
    def ply_stop():
        global button_act
        if(button_act == 0):
            pymix.pause() # 一時停止
            button_act = 1
            btn_text.set("再開")
        elif(button_act == 1):
            pymix.unpause() # 再開
            button_act = 0
            btn_text.set("一時停止")
            
    # 再生/一時停止ボタン
    btn_text = StringVar()
    btn_text.set("一時停止")
    play_button = ttk.Button(root,
                             textvariable = btn_text,
                             command = ply_stop)
    play_button.grid(row = 2, column = 0) # 再生/一時停止ボタン 

    # 音量スライダ(ラベル)
    ttk.Label(root, text = '音量').grid(row = 3, column = 0)

    root.mainloop()

IDLEからプログラムを実行します。

ファイル ボタンから wavファイル を選択すると、
再生を開始します。
下図のようにファイル名の表示を大きくしました。
(今回は核P-MODELさんの回=回から「遮眼大師.wav」を使用しています。)

f:id:SUDO2501:20181221154819p:plain

※前回のはコレ(↓)です。比較するとわかりやすいかも?
(前回は核P-MODELさんの「ECHO-233.wav」を使用しました。)
(核P-MODEL好きだね。うん、大好き。)

f:id:SUDO2501:20181221154842p:plain

やーーーーっと音楽プレイヤーらしくなってきました、が。
これからは、今まで使用してきたPygame から
Pydub と言うライブラリへの移行を考えています。

理由は、ざっと調べた限り音声/映像の処理に特化しているため
もっといろいろなことができるのかなー、
と言うボンヤリしたものですが。。。(笑)

なので、次回からはPydubで開発している!
。。。かもしれません。
(Pydubの他にイイ感じのライブラリがあれば、使ってみようと思っています。)

また、気が向いたときにPygameも触ってみると思います。

ペースはかなり落ちると思いますが、
来年もブログの更新を続けていきたいです。

相変わらずグッダグダな内容ですが、これにて。

ではでは!

スポンサードリンク


回=回

Pythonで音楽を再生したい(4) pygame編


お久しぶりです、こんにちは。
スドウです。
ブログの更新が滞っていました、スイマセン。。。
(生きて。。。いました。。。)

Pygameを使った音楽プレイヤー(もどき)の作成記録です。
前回のソースから改良してみました。
(前回が100日以上前。。。)

【前回の記事】 sudo2501lab01.hatenablog.com

変更した内容は下記です。
* ファイル選択の追加
* 曲のタイトル表示追加
* 1つのウィンドウにまとめた
* 再生/一時停止ボタンを1つにまとめた
* 音量を0~10から0~100へとより細かく設定できるように変更

今回も前回と同様に wavファイル を再生します。
※ ソースと同じフォルダに wavファイル がなくてもOKです。

以下ソースです。

import os
import sys
import tkinter as tk
from tkinter import ttk
from tkinter import *
from tkinter.ttk import *
from tkinter import filedialog

import wave
import pygame.mixer as pymix

import time

button_act = 0 # 再生/一時停止用のグローバル変数

# ファイル選択処理
def fp_select():
    
    # ファイル拡張子の指定
    #fType = [("", "*.wav *.mp3")] #.wav,.mp3のみ
    fType = [("", "*.wav")] #.wavのみ
       
   # ディレクトリ名を返す
    iDir = os.path.abspath(os.path.dirname(__file__))

    # ファイル選択ダイアログ(選択ファイルの絶対パスを取得)
    fPath = filedialog.askopenfilename(filetype = fType, initialdir = iDir)

    # ファイル名のみ表示
    fName = os.path.basename(fPath)

    # ファイルパスor名前をセット
    file1.set(fPath) # 絶対パス
    file2.set(fName) # ファイル名のみ(曲名表示用)

    # 選択したファイルを開には絶対パスが必要


# プログラム終了
def push_exit():
    exit()

# 音楽再生
def music_play():

    # 再生中の音声を終了する
    pymix.quit()

    # 再生するファイルパスを取得
    sound_file = file1.get()

    # 初期設定
    pymix.init(frequency = 44100, size = -16, channels = 2, buffer = 4096)

    # 再生ファイルを設定
    sounds = pymix.Sound(sound_file) # Sound系

    # 再生回数(-1:無限ループ)
    sd_loop = -1

    # 音楽再生
    music_play = sounds.play( loops = sd_loop)# Sound系

    # 音量初期値
    music_play.set_volume(0.1) # Sound系

    # 音量調節
    def sound_vol(n):
        music_play.set_volume((float)(vol_scale.get()/100)) # 0.01刻みで0.00~1.00 

    vol_scale = tk.Scale(root,
                          orient = HORIZONTAL,
                          length = 400,
                          from_  = 0.0,
                          to     = 100.0,
                          resolution = 1.0 ,
                          command = sound_vol )
    
    vol_scale.set(10) # 音量スライダの初期値
    vol_scale.grid(row = 3, column = 1) # 音量スライダ
    

if __name__ == '__main__':
    
    root = Tk()
    root.title('Music Player by Pygame (Test)') # フレームタイトル(名前がひどい)
    #root.resizable(False, False)

    # ファイル名取得
    file1 = StringVar()  # フルパス取得(再生に必要)
    file2 = StringVar()  # 名前のみ取得(表示用)
    
    # ファイル名表示ラベルの作成
    name_label = ttk.Label(root,
                           textvariable = file2,
                           width = 50)
    name_label.grid(row = 1, column = 1) #ファイル名表示ラベル

    # ファイル選択用ボタン
    fp_select_btn = ttk.Button(root,
                               text = 'ファイル',
                               command = fp_select)
    fp_select_btn.grid(row = 0, column = 0) # ファイル選択用ボタン(左上)

    # 終了ボタン
    exit_btn = ttk.Button(root,
                          text = '終了',
                          command = push_exit)
    exit_btn.grid(row = 0, column = 1) # 終了ボタン

    # スタートボタン
    start_btn = ttk.Button(root,
                           text = 'Start',
                           command = music_play)
    start_btn.grid(row = 2, column = 0) # スタートボタン
    
    # 再生/一時停止
    def ply_stop():
        global button_act
        if(button_act == 0):
            pymix.pause() # 一時停止
            button_act = 1
            btn_text.set("一時停止")
        elif(button_act == 1):
            pymix.unpause() # 再開
            button_act = 0
            btn_text.set("再生")
            
    # 再生/一時停止ボタン
    btn_text = StringVar()
    btn_text.set("再生")
    play_button = ttk.Button(root,
                             textvariable = btn_text,
                             command = ply_stop)
    play_button.grid(row = 2, column = 1) # 再生/一時停止ボタン

    # 音量スライダ(ラベル)
    ttk.Label(root, text = '音量').grid(row = 3, column = 0)

    root.mainloop()

IDLEからプログラムを実行すると、下図のウィンドウが表示されます。

f:id:SUDO2501:20181218142259p:plain

ファイル ボタンから再生したい wavファイルダブルクリック開く ボタンをクリックします。
(通常のファイル選択と同じです。)

ファイルが選択されていると、下図のようにファイル名が表示されます。
(今回は核P-MODELさんの回=回から「ECHO-233.wav」を使用しています。)

f:id:SUDO2501:20181218142555p:plain

この状態でStart ボタンをクリックすると wavファイル が再生されます。
音量注意

終了する際は上図の 終了 ボタンをクリックすると
wavファイル の再生を停止しウィンドウも閉じます。
ウィンドウ右上の × ボタンでは wavファイル が停止しません。

ファイル選択機能を追加することで、好きな wavファイル を再生できるようになりました。
また、 再生/一時停止 機能を1つのボタンにまとめることで使いやすくなったと思います。
少しずつですが、音楽プレイヤーぽくなってきたと思います。

ただ、Pygameで再生できるファイルが wavogg なので
mp3 といった他の形式を生成するにはもう少し弄る必要があるのですが。。。

しばらくはPygameで作りこんでみようと思います。

また、Pygameの音声ファイルの操作はあくまでゲーム制作に付随した機能なので、
より高度な処理を実装しようとした場合、音声処理に特化したライブラリ への移行も考えています。

それとGUIのデザインも少しずつ変えていきたいですね。
メーカソフトまでいかなくても、せめてダサくないデザインにはしたいです。

ではでは。

スポンサードリンク


回=回

UATU式人力ボカロ作成メモ。足りない音を補う

こんにちは、スドウです。

前回は、原音設定の方法についてまとめました。

sudo2501lab01.hatenablog.com

そして、UTAU式人力ボカロをやっていると、
どうしてもぶつかる壁があるとおもいます。

そう。。。
「有る音は有る」けど「無い音は無い」問題。

そこで、今回はUTAU式人力ボカロの醍醐味(?)と言われる
足りない音の補い方についてまとめます。

はじめに、音が足りないと言われる要因は、以下の二つだと思います。
一つ目、「音階(例「C3」)」が足りない。
二つ目、「特定の音(例「ナ行」の音)」が足りない。
の2つです。

まず、一つ目の「音階が足りない」ですが、
これはピッチ補正(ピッチシフター)ソフトを使用すればある程度解決します。
※大きくピッチを変えてしまうと音質が劣化する場合があります。
ピッチ補正ソフトは、
* VocalShifter と言うフリーソフトを使用しています。
(「歌ってみた」等においても使えると思います)

では、二つ目の「特定の音がたりない」についてはどうでしょうか。
「音が無いんだから解決しようがない」と思われるかもしれません。

ここで注目したいことは、実際の発音は「子音」+「母音」で構成されていることです。
そのため「足りない音の子音」と「足りない音の母音」があれば、
ある程度作ることが可能です。
(例:「そ」を作る場合「さ」の子音部分+母音「お」で作成できる)

この機能はUTAUにも実装されていますが、
オーディオファイルとして作ってしまった方が後々ラク(になると思う)
なので、足りない音のオーディオファイルの作成方法についてまとめます。

使用ソフトは、
* Audacity と言うフリーソフトです。


足りない音の作り方(Audacityで波形を合成する)

今回は「の」+「う」で「ぬ」を作ります。
ここで注意することは、できるだけ同じ音階の「子音」と「母音」を使うことです。
(その方が、綺麗な発音になるかなと思ったからです。根拠はありませんが。。。)
では、作業内容についてです。

  • Audacityに作成に使用するオーディオファイル(.wav)を取り込む (図中、上が「の」、下が「う」)
  • 母音側の設定を「ミュート」にする

f:id:SUDO2501:20180819232042p:plain

  • 子音の「母音」部分を削除する (今回は「お」の部分を消す。実際に聞いて確認する。)

f:id:SUDO2501:20180819232106p:plain

  • 子音に「母音(お)」の波形を合成する (「お」の波形をコピー、「子音」部分に貼り付ける)
    ここで注意したいことは、できるだけ「滑らかな波形」になるように
    張り付けることです。

もし、下図のように張り付けてしまうと、その部分がノイズとなってしまいます。  

f:id:SUDO2501:20180819232124p:plain

ですので、できるだけ下図のようになるように張り付けます。  

f:id:SUDO2501:20180819232141p:plain

作業は以上です。
作成したファイルでは「ぬ」と聞こえるはずです。
作成したオーディオファイルを聞いてみると、
そこそこ上手く発音できていると思います。

これを応用して「子音を削除」して「母音」を取り出すことも可能です。


今回も文字多め、画像重めの記事になってしまいました。。。
うまくまとまってる自信もありません。。。

今回の作業もやり始めるとハマります。
音源作りたのしい

だんだん、歌わせることから遠ざかって行ってる気もしないでもないですが。。。
で、できるだけはやく何か歌わせたいです。何か。
ドナドナじゃあベタすぎだろうか。。。

いつかちゃんと歌ってくれる日を夢見て。

ではでは!

スポンサードリンク

UTAU式人力ボカロ作成メモ。原音設定

こんにちは、スドウです。

今回も、UATU式人力ボカロ作成の作業内容をまとめていきます。

前回は、抽出した音の音階の確認方法についてまとめました。

sudo2501lab01.hatenablog.com

今回は、実際にUTAUで作成した音源を使用するための設定を行っていきます。

今回使用するソフトは以下です。

  • UTAU

やっと登場しました!!やっとですよ、みなさん。
タイトルに「UTAU」と書いているのに3記事目での登場です。
今回バリバリ使用します(たぶん)。
※ここでは、インストール方法については記載しませんのであしからず。。。


UTAUで自作音源を使用する

前回、音階毎にオーディオファイルを分けたと思いますが、
それらすべてのフォルダを1つのフォルダにまとめておきましょう。
※「○○ロイド」等のフォルダにすると後々わかりやすいかもしれません。

この「○○ロイド」のフォルダをUTAUフォルダの中に入れていきます。
UTAUフォルダの場所は * Program Files (x86) です。
そこにUTAUフォルダがあると思います。
その中の「voice」フォルダの中に作成した「○○ロイド」フォルダを追加します。
フォルダを追加する際に、メッセージボックスが表示されることがありますが、
その時は「続行(C)」をクリックします。
これで「○○ロイド」フォルダが追加されます。

それでは早速UTAUを起動してみましょう。

UTAU画面の左上、鍵盤の表示の上の「デフォルト」をクリックします。
「プロジェクトの設定」画面が表示されるので、
そこの「音源ファイルセット」を作成した「○○ロイド」にし、
「OK」クリックします。

f:id:SUDO2501:20180803232929p:plain

「○○ロイド」が選択できていれば、上図のUTAUメイン画面の「デフォルト」部分が「○○ロイド」になっていると思います。

次に原音設定です。


UTAUで原音設定を行う

今回はUTAUの自動機能(裏ワザ??)を使用し設定をしていきます。  

  • メニューバーの「ツール(T)」→「原音の設定(S)」

  • 「原音設定」画面の「周波数表の編集」と「周波数表を初期化」の間(下図の○の部分)をダブルクリック

  • 「周波数表の一括作成」画面(下図)が表示されるので「実行する」。コマンドプロンプトが表示され、一括作成が実行。

f:id:SUDO2501:20180803232958p:plain

  • 自動作成が終わると下図のようになるので、エンターキーを押して終了。

f:id:SUDO2501:20180803233019p:plain

  • UTAU本体を終了して再起動。終了時にメッセージボックスが表示されるが「いいえ」を選択。

  • UTAU起動後、「○○ロイド」を選択し、「ツール(T)」→「原音の設定(S)」

  • 「原音設定」画面にて、「frq」の欄に○がついていれば、周波数表の作成は完了

  • 下図○部分をダブルクリックすると「パラメータの推定を行います」とメッセージが出るので「OK」。これで「エイリアス」以外のパラメータ設定が完了。

f:id:SUDO2501:20180803233039p:plain

  • エイリアス」の設定。エイリアスとは「あ12.wav」を「あ」として利用するために必要な設定。設定しないと音が出ないトラブルになる。
    エイリアス」欄に実際に歌詞として使用する文字を入力、「セット」クリックで設定、「OK」をクリックして設定完了。
    ※「OK」をクリックしないと設定が反映されないので注意。

下図では、「あ02.wav」を「あ」として使用するようにエイリアスを設定している。
(A#3\は「あ02.wav」の入っているフォルダ)

f:id:SUDO2501:20180803233105p:plain

  1. エイリアスの設定が完了したら、「原音設定」画面の「OK」をクリックし終了

次にprefizmapの編集です。


prefixmapの編集

最後にprefixmapの編集をしていったん完了です。
「えー、まだあるのー」という感じですが、この設定が今回重要になります。

「ツール(T)」→「prefixmapを編集(P)」で「PrefixMapエディタ」が表示されます。

各「キー」に対応したオーディオファイルのフォルダを設定していきます。

設定方法は以下です。

  1. 「キー」欄で音階を選択
  2. 「前(Prefix)」に「フォルダ名\」を入力
  3. 「セット」をクリック
  4. 設定終了後「OK」クリック ※「OK」をクリックしないと設定が反映されません

f:id:SUDO2501:20180803233134p:plain

※「前(Prefix)」には「フォルダ名」+「\(または円マーク)」となります

これにより、「『C3』のときはこのC3フォルダの音をつかってね」と設定されます。
そのため、音質の劣化が抑えられる。。。カナー
という感じです(まったく自信ないです)。

このために、前回の音階毎にオーディオファイルをフォルダ分けする必要があったんです。


書きたいことをかいていた、らとんでもなく長くなってしまいましたが、
自作音源をUTAUで使用するまでの手順は以上です。

これからは、実際に歌わせるうえでの調整方法や、
足りない音の作り方などを書けたらいいなと思っています。

今回の記事はとくにとっちらかってるかもですが。。。

ではでは!

スポンサードリンク

UTAU式人力ボカロ作成メモ。オーディオファイルの音階確認


こんにちは、スドウです。

前回から引き続き、UATU式人力ボカロ作成の作業内容をまとめていきます。

前回は、ボーカルの抽出、音の切り出しについてまとめました。

sudo2501lab01.hatenablog.com

今回は、前回切り出したUTAUで使用する音の音階の調べ方をまとめていきます。

今回の作業は、各音階毎にフォルダを作り、
そこに対応する音階のファイルを入れていくために行います。

※本来のUTAU音源作成において、今回の作業は本来必要ないのかもしれませんが、
私自身の作業内容の忘備録も兼ねて本記事を書いています。

今回使用するソフトは以下です。

。。。あまり聞きなれない名前のソフトですね(実際私もそうでした)。
このソフトはDAW(Degital Audio Workstation)という、
PC上で作曲をするためのソフトです。
完全無料で使えます。
※無料のID登録が必要です。
※ここでは、インストール方法については記載しませんのであしからず。。。
詳細については触れませんが(全然詳しくないので。。。)、
かなりの多機能でとりあえずDTMをやってみたい人にはオススメできるのではと思います。

今回は、このソフトに付属している「Melodyne」を使用します。
が、切り出した音のファイル(オーディオファイル)の音階を調べられるのであれば何でもいいです。
(私自身、音感がないため今回「Melodyne」を使用しています。トホホ)

前置きが長くなってしまいましたが、実際の作業内容をまとめていきます。


切り出した音のファイルを音階別にフォルダを分ける

まず、UTAUの機能をザックリ説明すると音の波形を伸び縮みさせて音の高さを変えています。
なので「一番低い音」から「一番高い音」を作ろうとすると音が劣化します。
そこで、各音階対応したオーディオファイルを使用することで、
音の劣化を低減できるのでは、と考えました(根拠はあまりないですが。。。)。

そのため、各音階毎のフォルダにオーディオファイルを入れていきます。

  1. Cakewalk by Bandlabを起動
  2. オーディオトラックにオーディオファイルをドラッグ&ドロップ
  3. オーディオトラック上のオーディオファイル(波形として表示されているもの)を選択
  4. 右クリック→「Region FX(R)」→「Melodyne」→「Region FX の作成(C)」
  5. 画面下部に音階が表示される(画像は「B3」のオーディオファイルを使用)
  6. 各音階に対応したフォルダを作成し、そのにオーディオファイルを入れる。(音階がB3であれば「B3」フォルダを作りそこに入れる)
  7. すべてのオーディオファイルをフォルダ分けできたら、1つのフォルダにまとめる
    ※「○○ロイド」等のフォルダにすると後々わかりやすいかもしれません

f:id:SUDO2501:20180729154612p:plain

f:id:SUDO2501:20180729154644p:plain

作業内容は以上です。


本来であればあまり必要のない作業ですが、今回はできるだけ音質劣化を抑えるために敢えて行いました。
オーディオファイルの数が多ければそれだけ作業量が増えるので、
私個人としてはあまりお勧めはできません。
また、この作業によってどれだけ音質が向上したかの評価も行えていない事も
お勧めできない理由の一つです。

今回、これを記事にした理由は、私自身がやった内容を忘れないため、
こんな内容でも誰かの役に立てれば、と思ったからです。

次回からは、UTAUを使うと思います。
(その前に足りない音の作り方等をやるかも?)

できるだけ早く何か歌わせることができればいいな。。。

ではでは!

スポンサードリンク

UTAU式人力ボカロ作成メモ。ボーカル抽出、音の切り出し

こんにちは、スドウです。

今回は、現在私が作っているUTAU式人力ボカロの作り方について、作業内容をまとめていこうと思います。

パイソンの勉強は絶賛サボり中です。

「UTAUとは何ぞや?」といった説明はここでは省略します。

まず前提として、音楽CDやドラマCD等の声を使用した、
アニメキャラ等の人力ボカロを作ります。

そのため、現在公開されているUTAU音源は使用しません。
(むしろそれを作っていきます。)

まずは音楽CDからボーカルの抽出、各音の切り出しを行います。
ここで、重要なポイントは「カラオケ音源のある楽曲」を使用することです。

作業環境はWindows7(64bit)です。

今回使用するソフトは次の2つです(どちらも無料ソフト)。

歌声りっぷでボーカルを抽出し、Audacityで音を切り出していきます。

以下、作業内容のメモです。


歌声りっぷによるボーカル抽出

  1. 「utagoe.exe」をダブルクリックし歌声リップ起動
  2. 起動後、画像1の①にボーカル音源を②に①のカラオケ音源を設定。③にボーカル抽出後のファイル名を設定
  3. 2の設定後④をクリックし、ボーカル抽出開始

※抽出後の音源を聞いてみて、オケが少し残っているようであれば、
「設定」からタブ「処理方法」の「音質調整」を「音質優先」にし、「抽出レベル」を3.0~4.8に設定する。
ただし、完全にボーカルのみ抽出するのは不可能だと考えたほうがいいかも
また、ファイル拡張子が「.mp3」なら「.wav」に変換する必要があるかも

f:id:SUDO2501:20180722174059p:plain
歌声りっぷ画面

Audacityによる音の切り出し

  1. Audacityを起動後、「ファイル」→「開く」から先ほど抽出した音源を選択
  2. 不要な部分をドラッグ&ドロップで選択し、「ハサミのアイコン」をクリックすると削除される  
  3. 音として保存したい部分をドラッグ&ドロップで選択し、
    「ファイル」→「選択したオーディオの書き出し(r)」で名前を付けて保存

  4. ファイル名は「あ.wav」や「あ12.wav」等にしておく。
    また、同じ音であっても複数個保存しておく。
    (選別してしまうと後々使える音が少なくて苦労する場合があるため)
    ※この時、ファイル拡張子は「WAV (Microsoft) 16 bit PCM 符号あり 」にする
    (おそらくデフォルトでなってる)


以上が、ボーカル抽出、音の切り出しの作業手順です。
地味な作業内容ですが、実際やってみるともっと地味です(苦笑)。

実はこの後の作業もかなり長いのですが、、、
それについては、次回にまとめてみようとおもいます!!

ではでは!

スポンサードリンク