KMC活動ブログ

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

DTM練習会2019第1.5回

ご挨拶

GW中にけいおん!の聖地に行ってバンドしたいなぁという気持ちになりました。KMCID:naka6です。 最近サークル内Slackのバンドチャンネルはアーカイブされましたが、また動かしていきたいですね。

実はKMC、バンドもしてるんですよ。

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

今回のDTM練習会ではコードについて講義形式で解説しました。KMC内でコードというとプログラミングか?となるのですが、今回の講義で扱ったのはChordです。 *1 そもそもコード、和音って何?ってところからメジャーコード、マイナーコードの違いや、三度、五度とかの解説をした後に代表的なコード進行について紹介しました。紹介したのはカノン進行と小室進行、4536進行です。実際に使われている曲を聞いてみたりもしました。正直クリシェとか紹介したいものは他にもあったのですが今回はとりあえず三和音に限りました。いつかは四和音のエモさとか代理コードとかを使っていい感じにする方法も扱います。*2 スライドは以下の通りです。見た人はあのページがないぞ?みたいになると思いますがコンプライアンスとかそういうやつです。察してほしい。

コード進行.pdf - Google ドライブ

次回予告

次回はメロディにコードをつけてこようという課題の鑑賞会をします。今回学んだ知識を使っていい感じに仕上げてきて欲しいです。ちなみに僕はまだやってません。課題のメロディーは下からダウンロードしてね。

kadai2.dms - Google ドライブ

kadai2.mid - Google ドライブ

全体の宣伝

KMCではパソコンを使って何かしたい!という人を募集しています。興味のある人は以下のリンクを見てくださいね。 www.kmc.gr.jp

*1:ちなみにプログラミングの方はCode

*2:次の次の次くらいかな?

DTM練習会2019第1回

ご挨拶

みなさん、第一回ですよ、第一回!だんだん考えるのが飽きてきました。KMCID:naka6です。最近、学業も進捗もおろそかにしているダメ人間です。GWにはあれやこれやをしなくては......

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

前回出した課題「伴奏にメロディをつけてこよう」について制作してもらった作品をみんなで鑑賞して批評しました。一回生でも最初からアレンジしてきた人が居たりしてすごいなぁと思います。みんなそれぞれに工夫が見えて面白かったです。上回生のアレンジもカッコよくて新入生の人にとっていい目標になったのではないでしょうか。

次回予告

次回はついにコードについて扱います。そもそもコードってなに?ってところから代表的なコード進行について扱います。部員じゃなくても参加できるのでじゃんじゃん参加してくださいね。あと課題が出てます。与えられたメロディにコードをつけてくるというものです。次の次の回、すなわち5/15までにやってきてください。ちなみにGWはお休みです。

kadai2.mid - Google ドライブ

kadai2.dms - Google ドライブ

宣伝

KMCではパソコンを使って何かしたいという新入部員を大募集中です!興味のある人は下のリンクからどうぞ!

www.kmc.gr.jp

それとGW暇だなという人に朗報!KMCでは4/28と5/5の9:00〜17:00にラピッドコーディング祭りを行います。上回生の支援のもと、新入生たちで1日でゲームを作ろう!という企画です。部員じゃなくても参加できるのでどしどし参加してください。ご飯も出ますよ!KMCの公式Twitterで当日の案内が行われるのでフォローしてね。

twitter.com

お絵描き練習プロジェクト2019 第1回、第2回

ご挨拶

こんにちは。今年度のお絵描き練習プロジェクトを担当しますykn510です。 私事ですが京都で春を迎えるのは初めてで、昼夜の寒暖差に驚いています。体調管理に気をつけて健康な生活を送りたいですね。

お絵描き練習プロジェクトの内容

当プロジェクトではみんなで楽しくお絵描きをして上達を目指していきます。 お絵描きを全くやったことのない方やこれからイラストを始めたいという方も大勢参加してくださっており、お絵描きするための準備や、どうやって練習したら良いの?といった基本的な話から始めています。

プロジェクトの様子

第1回(4/6)と第2回(4/13)では、実際になにか描いてみようということで、紙と鉛筆を用意して部員との雑談を交えながらみんなで思うままにイラストを描いてみました。

f:id:kmc-log:20190415095058j:plain
気ままにお絵描き

気楽な交流会を想定していたのですが、初回からちびキャラをみんなで描いてみたり、短時間で絵を量産したり、トレスや模写をガリガリやってみたりなど、力強い新入生の方が多く、とても充実したプロジェクトになりそうで期待が高まっています。

次回予告

次回となる第3回(4/20)からは、いよいよイラストにおける具体的な技術の話に入っていきます。 まずは人間の顔の描き方を勉強する予定です。

これまでに使ったスライドは部員間で共有されるので、飛び入り参加したい方も問題なく、大歓迎します!

お絵描き練習プロジェクトは毎週土曜日の17:00-19:00に部室にて行っています。部室の場所がわからない方は16:45頃に百万遍交差点の王将前にお越しください。看板を持った部員が案内致します。

皆様の参加をお待ちしております!

入部者大募集中!!

KMCではいつでも入部したい人を募集しています。 お絵描きだけでなく、DTMや競技プログラミング、Webサービス、ゲーム制作などなど パソコンを使っていろいろなことを行っています。 少しでも興味がございましたら、下のリンクをご覧になってみてください。

www.kmc.gr.jp

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

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