A LIFE IN JAZZ|第二章|一度きりの人生を豊かに過ごす秘訣

音楽の紹介やその雑学、読書、生活知としての哲学、など幅広く書いています。

MENU

ジャズアプリへの道”一からプログラミング勉強を決意”

プログラミングを学びたい

 

使っている本の紹介とその本にした理由

使用している本

こんにちは、今まで色々とジャズの事をメインに投稿してきましたが

実は最近というかここ数ヶ月くらいプログラミングを一から勉強しておりました。

使用している言語は”Python”です。

ちなみに使っている本は

 Eric Matthesという海外の方の書いた”Python Crash Course”の翻訳版です。

選んだ理由

結論からいうと、翻訳された本でそこそこ値が張るのが良いと思って選びました。

自分は大学で独学でジャズピアノを学んだのですが、大学の図書館で見つけたマークレヴィンという人のジャズ理論本に感銘を受け、彼の書いたジャズピアノブックという本を4年経った今でもほんと愛用しています。(まだ読破、理解が最終ページまでできていないです、全キーで練習が基本なので、、、)

また、大学で勉強した外国の方が書かれた専門書の翻訳版は、難しいけど誤魔化しがないし、ユーモアなど織り交ぜるなど、読者に対する愛を感じました笑。(数学すっごい難しかったけど、、、)

そういうわけで、割と海外の人の翻訳した本って(自分にとって)アタリが多いのかなと思うようになりました。(良くも悪くも、不親切というか、、これだけを覚えたら良いよみたいなのが、ほっとんど無い、いやゼロですね。実践や演習を重要視する志向があるのかなと、文章も回りくどいですが曖昧さが少なくて誤解しません)

で、今回のプログラミングの本も外国の人の翻訳本をチョイスしました。

まあ、日本版わざわざ出すくらいだからよっぽどのその本の素晴らしさとか、実感していて、モチベがないと出版しないっしょなんて、安直に思っている節もあります笑 

プログラミングでやりたいこと

見出しにもあるようにアプリの開発が目標です。

自分の構想(あくまで本当に理想)として

ジャズについて情報発信や情報交換が容易で、幅広いレベルで勉強になる

まて、新しくジャズについて興味を持ってもらえる人が増えるような

そんなものを目指していいます。

自分一人で一からとなると、形になるまで数年はかかるのかなと思っています😅

そんなに甘いものではないことは承知の上です。。。。

 

ただ、モチベーションとしてブログなどで進捗を発信することで、モチベーションや他の人とのつながりなど色々とメリットがあると思い、今回このような記事を書かさせていただきました。(プログラミングに詳しい方、何かツッコミどころ等あれば是非お願いいたします🙇‍♂️)

 

元々なんで作ろうと思ったか

ジャズというものが多くの人に少しでも身近に感じてもらえるように、というモチベーションで、これまで色々な記事を書いてきたのですが、その発信方法として、やはりブログという媒体の限界もあるのかなと薄々感じている次第です。(もちろん質の高い記事が少ない、等それ以外の原因も全然あると思いますが😅)

 

確かに某有名な掲示板なども、パソコンを使ってみている人が多いイメージですし(一部の知り合いはスマホで見ていましたが)

なんとなく、アプリの方がネットのブラウザで見るよりもサクサク見れますしユーサビリティも高いように感じます。今の自分も含め若い世代はアプリの方がとっつきやすいし浸透しやすいのかなと思います。

 

少し私ごとで恐縮ですが、僕は某大学の工学部を4年で中退、現在は他の大学に編入し福祉を勉強しています。そういう意味で少しはプログラミングなどの工学の技術に対しあまりアレルギーというか拒否反応がないので、やってみようかと思い立った形です。

 

作ってみたプログラム紹介(インターバルトレーナーの素)

概要

ジャズマンにって、どこの音を基準に次の音は何度であるか(インターヴァル)を判断する能力は早いほど良いです(僕個人はそう思っています。)

例えば、C(ド)にたいして上にb13(短6度)のインターヴァルは?

答え、Ab

みたいに

動作

まず初めに、自分が苦手としているインターヴァルとその方向をプログラミングで設定します。(簡単ですivという変数をコメントアウトされたメモ(灰色の文字)の内容にしたがってなぶればおっけー)

 

実行すると、音階がアルファベットでランダムで表示されます(一回ずつ)

 

エンターを押すたびに答えが表示されます。

 

自分が考えた答えと一致していたらOK

 

以上です。はい💦笑

 

まあ、ゲームの素ですからね、こんなものです。

こういう練習もできるようなものがあるといいなと思い構造を作ってみました。

以下参考までにプログラミングのソースになります。 

import random

tone_pt = ['C', 'Db', 'D', 'Eb', 'E', 'F', 'Gb', 'G', 'Ab', 'A', 'Bb', 'B']

numbers = list(range(len(tone_pt)))

print(numbers)

random.shuffle(numbers)

print(numbers)

#インターバルの指定
#ivがマイナスだと下行になる。
#iv=1 短2度上行
#iv=2 長2度上行
#iv=3 短3度上行
#iv=4 長3度上行

#iv=5 完全4度上行

#iv=6 トライトーン上行

#iv=7 完全5度上行

#iv=8 短6度上行
#iv=9 長6度上行
#iv=10 短7度上行
#iv=11 長7度上行


i=0
iv = 11
answer=''
active=True
#長2度上行
#iv = 2

#0~11の数のランダムリストを音のアルファべット表記と結びつける
while active:
	number = numbers[i]
	if iv>0 :
		toward='上'
	else :
		toward='下'
	iv_a=abs(iv)
#質問コーナー
#上行の場合
	if iv_a == 6 :
		text=f"トライトーン"
	elif iv_a<8 and iv_a % 5 == 0 or iv_a % 7 ==0:	
		text=f"完全{3+int((iv_a/3))}度"
	
	elif iv_a<5 and iv_a % 2 == 0 :  
		text=f"長{int(iv_a/2+1)}度"
	elif iv_a<5 and iv_a % 2 == 1: 
		text=f"短{int(iv_a/2+2)}度"
	
	elif iv_a>=8 and iv_a % 2 == 0 :  
		text=f"短{int(2+iv_a/2)}度" 
	elif iv_a>=8 and iv_a % 2 == 1 :  
		text=f"長{int(2+iv_a/2)}度" 

	prompt=f'"{tone_pt[number]}"の{text}分だけ{toward}行は何?'
	answer=input(prompt)
	if i==len(numbers)-1 :
		print('トレーニングを終了します')
		break

	if answer == '終了':
		break
#ランダムの音列(tone_pt[number])の要素が、音列(tone_pt)のどこの位置(インデックス)にあるかを取得
	tone_indice=tone_pt.index(tone_pt[number])

#tone_indice_max = 11
	check_tone = tone_indice + iv

#ランダムの音列の上にリストの要素がない時の処理(check_toneが11を超えた時どうするかの処理)	
#	print(f"check_tone={check_tone}")

	if check_tone > (len(tone_pt)-1):
		check_tone = check_tone-(len(tone_pt)-1)-1

#ちなみに逆に下行の場合マイナスになった場合パイソンの仕様によって解決される

#		print(f"是正したcheck_tone={check_tone}")
	
#		print(f"len(tone_pt)-1={len(tone_pt)-1}")

	i+=1
	print(f"{tone_pt[check_tone]}の音です\n")