KMC活動ブログ

京大マイコンクラブの活動の様子を紹介します!!

DTM練習会2019第0.5回

f:id:kmc-log:20190417205933p:plain

ご挨拶

最近起きることができていないKMCID:naka6です。果たして僕は単位を取ることができるのでしょうか?God only knowsですね。

こんかいのでぃーてぃーえむれんしゅうかい

今回のDTM練習会では講座形式で実際の楽曲の構造とメロディの付け方について学びました。少しずつ専門的な話が増えていきましたが、ついてこれない人は遠慮なく質問してください。ちゃんと上回生が答えていきます。メロディ、ハーモニー、リズムの音楽の三要素を軸にしながら楽曲の構造を筆者の曲を分解しながら解説し、その後メロディの付け方について実演を交えながら筆者が気をつけていることを教えました。メロディは特に正解がないので永遠の課題です。 まあそのうち自分なりの方法がわかっていくと割とできるようになっていくでしょう(筆者ができているとは言ってない)。スライドも一応あげておくので参考にしてください。

slide1.pptx - Google ドライブ

課題について

今回から課題を出します。今回の課題は筆者が作った伴奏にメロディをつけるというものです。一応アレンジは自由ですが、コードは崩さないで欲しいにゃぁと思います。 以下にmidiとdmsデータを置いておきます。ダウンロードしてDominoに読み込んでください。 kadai1.mid - Google ドライブ

kadai1.dms - Google ドライブ

全体の宣伝

KMCではパソコンでゲーム、音楽、お絵かき、競技プログラミングをしたい人々を大募集しています!!!興味のある人は下のリンクからどうぞ。

www.kmc.gr.jp

競技プログラミング練習会2019Normal第1回

挨拶

こんにちは。花粉症がつらい季節ですが、みなさん如何様にお過ごしでしょうか。僕はもう連日ダメージを受けて、毎日杉に呪詛をかけています(笑)
紹介が遅れましたが、今年の競技プログラミング練習会2019Normal第1回を担当する2回生のKMCID:laftです。
毎回スライド作って発表するのしんどそう、ということで今年からこの練習会では担当をもう一人のKMCID:aotsukiと分担し、交互に前で発表を行なっています。

競技プログラミングとは

このブログに興味を持って頂いた方にはもうご存知の方も多いこととは存じますが、今回は今年の競技プログラミング練習会の最初のブログなのでここで少しだけ説明します。
競技プログラミングとは、与えられた問題に対して、それを解くプログラムを書いて提出し、その正答数とかかった時間を競う競技のことです。しばしば競プロと略されます。
近年、話題になっているAtCoderなどのコンテストサイトが競技プログラミングのコンテストを開催していますので、興味のある方は是非のぞいてみてくださいね。

競技プログラミング練習会の概要

この競プロで強くなるために、KMCでは毎週金曜日に競技プログラミング練習会というプロジェクトを行なっています。現在ではNormalという初心者向けの練習会と、Advancedという中上級者向けの練習会の2つに分かれて行なっています。
僕は去年KMCに入部して競プロを始めたので、Normalしか経験していません。ですのでNormalについてのみ説明しますが、Normalでは競プロで必要な知識であるアルゴリズムやデータ構造についてや、競プロ主流言語の1つである、C++の基礎について講義をします。そのあと、Aizu Online Judgeなどのオンラインジャッジをお借りして、講義内容を実際に実践するためにその講義に関係のあるバーチャルコンテストを立てて、そのコンテストにみんなで参加する、という会です。

今回の練習会

一昨日(4/12)に行なった練習会第1回の様子を紹介したいと思います。

f:id:kmc-log:20190412213907j:plain
昨日(4/12)の練習会の様子
多くの新入生に足を運んでいただけて、とても賑やかでした。今回は、前回行ったC++プログラミング基礎の続き、競プロにおける最も重要な考え方である計算量、そして最初のアルゴリズムとして貪欲法の説明をしました。
また、最後にはその日にやったことの実践として、Aizu Online Judgeを用いたコンテストを立てて、解いてもらいました。
困ってる方には僕や他の先輩がサポートをしていたとはいえ、みなさんとてもよくできていたように思います。
また今回からいらっしゃったプログラミング未経験の初心者の方も多く、その方々にはaotsukiが前回の内容の説明を行なっていました。ですので、来週から途中参加したい人がもしいらっしゃっても、その際は僕が全力でサポートしますので、是非お越しください!
もちろん、競プロができる人にはAdvanced(中上級者向けの練習会)も同日に開催されていますし、今回まででC++プログラミング基礎と貪欲法を終えただけなので、ちょっと競プロやったことあるよって方も途中から混ざって頂いて全然大丈夫です!!

次回予告

というわけで次回は4/19(金)の18:30から部室でaotsuki担当の「累積和・しゃくとり法」です!お楽しみに!!!
部室の場所が分からない方向けに4月中は18:15あたりに百万遍の王将前にKMCの看板を持った人が部室に案内してくれるので大丈夫です。
また、時間に間に合わないという方もinfo@kmc.gr.jpに予めメールを送っていただけたら百万遍から部室まで部員が案内しますし、部室の場所を既にご存知の方は連絡しなくても直接部室まで足を運んでいただければ大丈夫ですので、是非気軽にお越しください。
練習会が終われば、新勧期間中は晩御飯を部員がおごりますので、KMCに来て晩御飯代を浮かせたいという方も是非どうぞ。

KMC入部希望者募集!!

KMCでは随時入部したい人を募集しています。競プロ以外にもDTM、お絵かき、Webサービス作成、ゲーム作成などなど、パソコンに関わる様々なことを行なっているサークルです。少しでも興味を持っていただけましたら、こちらのリンクをご覧いただけると幸いです。

www.kmc.gr.jp

DTM練習会2019第0回

ご挨拶

みなさんこんにちは。最近oxymoronという単語を習得しました。今年のDTM練習会を担当させていただきますKMCID:naka6です。時が経つのは早いものでちょっと前に入部したと思っていたら、もう新入部員がくる季節になってしまいました。齢だけを無駄に重ねてしまったかもしれませんね。ウッ。

ソモサンDTM。

さてみなさま、DTMという単語に聞き覚えがありますでしょうか。えっ、ない?ははは、こやつめ。ってことでDTMについて解説しましょう。DTMというのは「DeskTopMusic」の略称であります。雑にいうとパソコンで音楽を作ることです。

f:id:kmc-log:20190413210807p:plain
Domino
上の画像はこのDTM練習会で使用するソフト「Domino」の様子です。いわゆるピアノロールと呼ばれる画面ですね。ここに音を打ち込んで行きます。このソフトは無料です。他にも様々なソフトがありますが(いわゆるDAW*1)それらは有料であることが多いです。しかも5桁はします。最初からこんなの買えっていう初心者向け講座ってひどくないですか?僕はそんな初心者向け講座をしようとは思いません。ちなみにMacの人は無料の「Garageband」を使っていく予定です。それぞれ適宜教えて行く予定です。

こんかいのでぃーてぃーえむれんしゅうかい

初回ということで、Dominoのインストールや使い方の説明を行いました。筆者はMac勢なのでDominoをあまり使ったことがありません。そのせいで新入生に少し手間を取らせてしまったところもありましたが、なんとかみんな無事にDominoから音を出すことに成功しました。最初から作曲について教えて行くのは新入生にとってカロリー過多だと思います。そこで今回はDominoに慣れてもらうということを目標にしました。みなさんに音色を変えたり、テンポを変えたりしてまずパソコンから打ち込んだ音が出るという感動を味わってもらいました。

f:id:kmc-log:20190411165729j:plain
講師ヅラをして偉そうにしている筆者

次回予告

次回からは本格的に作曲についての講座をやっていきます。楽曲の構造とメロディの作り方について講義する予定です。課題も出す予定です。みんなの課題が楽しみですね。DTM練習会は飛び入りも全然OKです。初回行けなかったよって人もどしどし参加しましょう。それと部員でなくても参加OKです。毎週水曜日18:45に百万遍王将前に集合してください。看板を持った部員が案内します。みなさんの参加を心からお待ちしています。

全体の宣伝

KMCではパソコンを使って何かをしたい!という人を大募集しています。気になったら下のリンクを見てくださいね。 www.kmc.gr.jp

*1:DominoはDAWではないのですが。。。

KMC Esolangコードゴルフ大会を開催しました

TSG(東大コンピュータサークル)で行われているEsolangコードゴルフ大会を,まるごと輸入してKMC部内でも開催しました. 日程は2019-03-29から 2019-04-03で行いました. その様子を実況します.

各言語ごとの最終提出の解説はこちらです: github.com

  • 問題やシステムは全てTSGさんのものをお借りしています.
  • サイト(静的): http://esolang-0.wass80.xyz/contests/komabasai2018-day1/
  • ルール:
    • 参加者は赤と青のチーム分かれて言語の陣取りを行う.
    • 自分のチームの陣に4近傍で隣接している陣の言語に提出ができる.
    • すでに取られている陣を取り返すためには,より短いコードを提出する.
    • 自分のチームの提出コードは見れるが,相手チームの提出コードは見れない.
  • 問題概要: hとwを受け取って *からなる長方形を出力する.

1日目

f:id:wass80:20190408110037p:plain

  • システムを設置した.
  • TSGではミニ大会だったので14言語だったが,今回は8言語更に増やしておいた.
  • 参加したい人はいつでも参加できるようにした.チームは適当に割り振られる.

最初にC言語でACされた青チームのコード (140B):

#include<stdio.h>
w,h,y=0,x;main(){scanf("%d\n%d",&h,&w);for(;y++<h;){printf("*");for(x=0;x<w-2;x++)printf(y>1&y<h?" ":"*");printf("*\n");}}

その日のうちに赤チームが取り返す (101B):

y,i,j;main(x){for(scanf("%d%d",&y,&x);i<y;puts(""),++i)for(j=0;j<x;++j)printf(j%~-x&&i%~-y?" ":"*");}

両者素朴な二重ループによる実装を行っている.

2日目

f:id:wass80:20190408113230p:plain

  • 思ったより参加人数が増えたので12言語増えた.
  • 難解言語が足らない気がしたので, Evil, Unreadable,Malbolgeを追加した.
  • 提出可能な陣も4近傍から8近傍に増加.さらにマップの縁は反対側につながるように.
  • 参加者は11人

青チームがC言語を取り返す (99B):

i,w;main(h){scanf("%d%d",&h,&w);for(i=++w*h;i--;)putchar(i%w<w-1&i%w>1&i/w<h-1&&i/w?32:i%w?42:10);}

赤チームが更に取り返す (94B):

y,i,j;main(x){for(scanf("%d%d",&y,&x);j<x||(j=puts(""),++i<y);)putchar(j++%~-x&&i%~-y?32:42);}

数式を用いることで1重ループによる実装を行うことに両チームとも成功している.

3日目

f:id:wass80:20190408113625p:plain

  • 参加者がまだまだ増えるので,言語を13言語増やした,
    • これで当初の倍のマップサイズになった.
  • 真ん中の言語を何にするか悩んだが,京大ということでSchemeにした.
  • 青チームは言語内で他の言語を使い始めた.
    • なでしこはJSを実行し,Emojicodeはperlを実行するようになった.

また青チームがC言語を取り返す (90B):

main(w,h,i){scanf("%d%d",&h,&w);for(i=++w*h;i--;)putchar(~i%w/3&~(i/w)%h/2?32:i%w?42:10);}

赤チームがまた更に取り返す (89B):

y,i;main(x){for(scanf("%d%d",&y,&x),i=++x*y;i--;)putchar(i%x?-~i%x>2&&i/x%~-y?32:42:10);}

4日目

f:id:wass80:20190408113943p:plain

  • どんどん埋まっていくボード.
  • ネットワークに接続して問題を解くことを禁止した.
    • $_=<>.<>;s/\s//;exec "wget -O- xxx.jp/$_"がperlの答えになっちゃうの悲しいのでこうなった.

青チーム更に提出 (88B):

c;i;main(w,h){for(scanf("%d%d",&h,&w);!i++?i=~w,h--:putchar(!i?c=10:i%w/2*h*c?32:42););}

赤チームが提出 (87B):

y,i;main(x){for(scanf("%d%d",&y,&x),x++;i<y*x;)putchar(i++%x?i%x>2&&i/x%~-y?32:42:10);}

5日目

f:id:wass80:20190408114739p:plain

  • 全ての入力に対して正常に動作することを要求した.
    • 入力が偶数の場合だけとか,素数の場合だけとかで動くコードが存在した.

青チームがC言語に提出.これが最終提出となる (86B):

h;c;i;main(w){for(scanf("%d%d",&h,&w);h;putchar(++i%w/2*c?32:i>w?c=--h-1,i=0,10:42));}

最終日

f:id:wass80:20190408115118p:plain

  • Malbolge以外のすべての言語が埋まる.
    • Malbolgeは提出コードサイズ上限に収まるコードが存在しないと思われる.
    • cmd.exeは出力の改行コードがどうしても\r\nになってしまいACできなかったのを,システム側で修正した.

結果

f:id:wass80:20190408115220p:plain

青チームの勝利となりました.

最終的に参加者は22人.合計AC数は442回でした. たくさんの参加ありがとうございました.

言語ごとの解説はこちらを読んでください: github.com

大会システムを作ってくださっているhakatashiさんに感謝します. github.com

たいへん盛り上がったので,また開催したいです.

DTM練習会 春の成果発表会

こんにちはこんにちは。KMC3回生のKMCid:tronです。こう名乗れるのもこれで最後ですね……

まあそれはそれとして、3/26に春に作った曲を発表する「春の成果発表会」を行いましたのでブログを書きます。

まず最初に、新たな試みである「リレー編曲」の発表会が行われました。これは、

  1. 1番目の人は課題曲を編曲する。
  2. 2番目の人は1番目の人が編曲したものだけを聴いてそれを編曲する。
  3. 以下同様に、n+1番目の人はn番目の人が編曲したものだけを聴いてそれを編曲する。

というものです。2番目以降の人は元々どんな曲だったのか全くわからない状態で編曲するのでさぞ原曲とかけ離れたものができるだろう、と思っていたのですが、果たして結果はと言うと…… 最初のうちこそまだ原型を留めてもいましたが、曲調が変わり、メロディが失われ、最終的には全くの別物と化していました。

KMC部員の持つ多様性や、音楽の可能性がよくわかる素晴らしい試みだった……ということにしておきましょう。

実際の曲は以下のSound Cloud プレイリストにまとめてあります。

soundcloud.com

※私(tron)の曲は2種類あります。間違ってドラム無しで出力してしまったものと、ドラムありで出力したものです。次のtetくんに回した曲は前者なのですが、本来の曲は後者です。ここでは両方聴けるようにしました。"sent"のほうはドラム無し、"true"のほうはドラムありです。

後半はいつもどおり、部員たちが思い思いに作った曲を聴きました。 こちらも多種多様な曲が並び、中にはなんと12分を超えた曲もありました。 みんなの曲を聴いていると自分もがんばろうという気持ちになりますね。

これにて正真正銘、2018年度のDTM練習会は終わりです。

DTM練習会2019は4/10(水)から、毎週水曜日に行われます。興味のある方はぜひ一度練習会や説明会にお越しください。 もちろん、DTM以外の活動に興味のある方も大歓迎です。

春合宿2019を開催しました

こんにちは。

こんにちは。KMCID: inonoa ( id:inonoa ) と申します。三月中旬の春合宿の報告ブログがあろうことか四月下旬まで書けていませんでした。ここにお詫びいたします。

本題

KMCでは毎年春合宿と呼ばれるイベントを行っています。政令指定都市内とは思えない山中にバスで*1集団疎開し、貧弱なネット環境の中自分たちでサーバを立てながら、普段できない長い講座を行っていく四泊五日の合宿です。ここ数年は初日と最終日を除く三日間に講座が詰め込まれていたのですが、今年は参加者や講座が少なく、二日目までが自由時間となりました。各々が講座の準備等の作業、ボードゲーム等思い思いの時間を過ごしていましたが、私含む数名はそれでは飽き足らず、近くの某山への登山を決行。結ばれたロープにつかまって45度を越えようかという斜面を登るなど、他の山での登山や施設のアスレチックで経験を積んだ部員も驚くほどの過酷な道程でした。

二日目の午後にはクイズ大会が開催され、白熱した戦いの後優勝チームに豪華景品が贈呈されました。

三日目からは部員の講座が続きます。

walkure 「想定外な規模へと成長し続けるサービスを支えるサーバ開発・運用の軌跡~DBの縦横分割スケーリング~」

prime 「オセロを速く解く話」

polaris 「ゲームを0.5から作ってわかったこと」

他にも、十数個の講座が行われました。(いろいろな事情により公開されないスライドが多く、少し残念なような残念じゃないような気持ちです。)

最終日には有志によるLT(Lightening Talking)大会の後、優れた講座に贈られる講座アワードの発表・授賞式が行われました。今回は最優秀賞などのいくつかの賞については部員による投票で決定するなど、民主主義の息吹を感じさせる授賞式となりました。

まとめ

今年も平和に、すばらしい春合宿を開くことが出来ました。来年も開催できるといいですね。それでは。

*1:一部は徒歩で

第五回DTM輪読会

繰り返される所業は無情。ナンバーガール再結成しましたね。KMC一回生のid:naka6です。2月の頭からやってきたDTM輪読会もついに最終回を迎えました。もう春休みも半分かと思うと......(吐血)

さて第五回輪読会では、今までやってきたコード進行やAvailable Note Scaleに関する知識を使っていかにメロディーをつけていくかということや、その他の基本的な知識(クリシェやディミニッシュコード)、実際のJazzの曲の分析をしました。

f:id:kmc-log:20190306223919p:plain
古文書のようと称されたスライド

議論が白熱して一日では終わらず、延長戦に突入してしまいましたが、その甲斐もあって少しは賢くなれたかなと思います。

真面目な話はここらへんで終わりにしましょう。みなさんお持ちかねのアレにいきたいと思います。今回は二日に渡って行われたので豪華二本立てです。

f:id:kmc-log:20190305213040j:plain
にぼ次郎の今月の限定麺
f:id:kmc-log:20190306225254j:plain
あくたがわキャベツのせ
面妖な......

はい、二回連続でらーめんです。こいつらいつもらーめんばっか食ってんな

春休み中もKMCのDTMerたちは輪読会をしたり、バンドをしたり、リレー企画が行われたりなかなか充実しています。 KMC全体としても合宿があったりしていい感じですね。  ですがまだ僕は春休み中一曲も完成させていないので春休み後半は強い意思で為していきたいと思います。またこんど!