├── .eslintrc.json
├── .gitattributes
├── .gitignore
├── .modernizrrc.js
├── .travis.yml
├── LICENSE
├── README.md
├── favicon.png
├── index.babel.js
├── index.html
├── lib
├── fontmin-loader.js
└── yaml-loader.js
├── ogimage.png
├── package-lock.json
├── package.json
├── songs
├── index.js
└── iwashi
│ ├── data.yml
│ ├── icon.png
│ ├── icon_raw.png
│ └── score
│ ├── base.txt
│ ├── bass.txt
│ ├── chime1.txt
│ ├── chime2.txt
│ ├── chord.txt
│ ├── chorus1.txt
│ ├── chorus2.txt
│ ├── chorus3.txt
│ ├── chorus4.txt
│ ├── chorus5.txt
│ ├── chorus6.txt
│ ├── clap.txt
│ ├── closed-hihat.txt
│ ├── cowbell.txt
│ ├── cymbal.txt
│ ├── snare.txt
│ ├── synth1.txt
│ └── synth2.txt
├── sound
├── Makefile
├── acchikocchi-sunoko.ogg
├── acchikocchi-sunoko.wav
├── ai-virus.ogg
├── ai-virus.wav
├── aniplex-logo.ogg
├── aniplex-logo.wav
├── aoba-zoi.ogg
├── aoba-zoi.wav
├── atsumori.ogg
├── atsumori.wav
├── badapple-intro.ogg
├── badapple-intro.wav
├── bemybaby-intro.ogg
├── bemybaby-intro.wav
├── chargeman-hai.ogg
├── chargeman-hai.wav
├── cheatbug-rakurai.ogg
├── cheatbug-rakurai.wav
├── chu2koi-au.ogg
├── chu2koi-au.wav
├── chu2koi-stadiometer.ogg
├── chu2koi-stadiometer.wav
├── cookie-marisa.ogg
├── cookie-marisa.wav
├── data.yml
├── deremasu-mashumaro.ogg
├── deremasu-mashumaro.wav
├── deremasu-suimasen.ogg
├── deremasu-suimasen.wav
├── donkeykong-hammer.ogg
├── donkeykong-hammer.wav
├── enta-newwave.ogg
├── enta-newwave.wav
├── evangelion-clap.ogg
├── evangelion-clap.wav
├── evangelion-crack.ogg
├── evangelion-crack.wav
├── fgo-babbage.ogg
├── fgo-babbage.wav
├── fireball-ring.ogg
├── fireball-ring.wav
├── gintama-katsurap.ogg
├── gintama-katsurap.wav
├── gochiusa-tippy-no.ogg
├── gochiusa-tippy-no.wav
├── hitodeman-hea.ogg
├── hitodeman-hea.wav
├── inazuma-pan.ogg
├── inazuma-pan.wav
├── inoubattle-gasstove.ogg
├── inoubattle-gasstove.wav
├── inoubattle-otama.ogg
├── inoubattle-otama.wav
├── ippon-crisp.ogg
├── ippon-crisp.wav
├── jaguarman-waito.ogg
├── jaguarman-waito.wav
├── jajamen-wotagei.ogg
├── jajamen-wotagei.wav
├── jojo-iwashi.ogg
├── jojo-iwashi.wav
├── kabikiller-rah.ogg
├── kabikiller-rah.wav
├── kabuto-ketarosu.ogg
├── kabuto-ketarosu.wav
├── karateka-kick.ogg
├── karateka-kick.wav
├── kemofure-toki.ogg
├── kemofure-toki.wav
├── kemomimi-yononaka.ogg
├── kemomimi-yononaka.wav
├── killme-cymbal.ogg
├── killme-cymbal.wav
├── killme-pyonsuke.ogg
├── killme-pyonsuke.wav
├── kinmoza-clap.ogg
├── kinmoza-clap.wav
├── kokoro-bookoff.ogg
├── kokoro-bookoff.wav
├── legalhigh-anobade.ogg
├── legalhigh-anobade.wav
├── lovelive-shittofire.ogg
├── lovelive-shittofire.wav
├── maguro-drum.ogg
├── maguro-drum.wav
├── matao-crossing.ogg
├── matao-crossing.wav
├── metan-ahoge.ogg
├── metan-ahoge.wav
├── minecraft-blaze.ogg
├── minecraft-blaze.wav
├── minecraft-creeper.ogg
├── minecraft-creeper.wav
├── nanami-jaan.ogg
├── nanami-jaan.wav
├── nichijo-akabeko.ogg
├── nichijo-akabeko.wav
├── nichijo-eh.ogg
├── nichijo-eh.wav
├── nichijo-kokeshi.ogg
├── nichijo-kokeshi.wav
├── nichijo-shake.ogg
├── nichijo-shake.wav
├── nyancat-nya.ogg
├── nyancat-nya.wav
├── nyanyanya-nya.ogg
├── nyanyanya-nya.wav
├── oreo-oh.ogg
├── oreo-oh.wav
├── popute-asahi.ogg
├── popute-asahi.wav
├── prestar-yuupack.ogg
├── prestar-yuupack.wav
├── rizap-cm.ogg
├── rizap-cm.wav
├── sakanakun-akyaa.ogg
├── sakanakun-akyaa.wav
├── saronshippu-ah.ogg
├── saronshippu-ah.wav
├── seirogan-trumpet.ogg
├── seirogan-trumpet.wav
├── shachiku-biku.ogg
├── shachiku-biku.wav
├── shintakarajima-intro.ogg
├── shintakarajima-intro.wav
├── shintakarajima-oh.ogg
├── shintakarajima-oh.wav
├── suntelevision-ossan.ogg
├── suntelevision-ossan.wav
├── tennis-racket.ogg
├── tennis-racket.wav
├── vocal
│ └── yufu
│ │ ├── 01.ogg
│ │ ├── 01.ust
│ │ ├── 01.wav
│ │ ├── 02.ogg
│ │ ├── 02.ust
│ │ ├── 02.wav
│ │ ├── 03.ogg
│ │ ├── 03.ust
│ │ ├── 03.wav
│ │ ├── 04.ogg
│ │ ├── 04.ust
│ │ ├── 04.wav
│ │ ├── 05.ogg
│ │ ├── 05.ust
│ │ ├── 05.wav
│ │ ├── 06.ogg
│ │ ├── 06.ust
│ │ ├── 06.wav
│ │ ├── 07.ogg
│ │ ├── 07.ust
│ │ ├── 07.wav
│ │ ├── 08.ogg
│ │ ├── 08.ust
│ │ ├── 08.wav
│ │ └── character.png
├── washing-aegi.ogg
├── washing-aegi.wav
├── yukari-cowbell.ogg
├── yukari-cowbell.wav
├── yuyushiki-nantsutte.ogg
├── yuyushiki-nantsutte.wav
├── zen-glass.ogg
├── zen-glass.wav
├── zkai-eh.ogg
└── zkai-eh.wav
├── src
├── App.jsx
├── App.pcss
├── Loading.jsx
├── Loading.pcss
├── SoundSelect.jsx
├── SoundSelect.pcss
├── Tooltip.css
├── Tooltip.jsx
├── Track.jsx
├── Track.pcss
├── VocalManager.js
├── VolumeControls.jsx
├── VolumeControls.pcss
├── const.js
├── gist.js
├── params.js
└── util.js
└── webpack.config.js
/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@hakatashi",
3 | "parserOptions": {
4 | "parser": "babel-eslint"
5 | },
6 | "rules": {
7 | "camelcase": "off",
8 | "no-console": "off",
9 | "max-len": "off",
10 | "react/no-multi-comp": "off",
11 | "react/forbid-component-props": "off",
12 | "node/no-unsupported-features": "off",
13 | "node/no-unsupported-features/es-syntax": "off",
14 | "node/no-unsupported-features/es-builtins": "off"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | package-lock.json binary
2 | /index.js binary
3 | /index.js.map binary
4 | *.wav filter=lfs diff=lfs merge=lfs -text
5 | *.ogg filter=lfs diff=lfs merge=lfs -text
6 | *.ust filter=lfs diff=lfs merge=lfs -text
7 | *.png filter=lfs diff=lfs merge=lfs -text
8 | favicon.png -filter=lfs -diff=lfs -merge=lfs -text
9 | ogimage.png -filter=lfs -diff=lfs -merge=lfs -text
10 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 |
8 | # Runtime data
9 | pids
10 | *.pid
11 | *.seed
12 | *.pid.lock
13 |
14 | # Directory for instrumented libs generated by jscoverage/JSCover
15 | lib-cov
16 |
17 | # Coverage directory used by tools like istanbul
18 | coverage
19 |
20 | # nyc test coverage
21 | .nyc_output
22 |
23 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
24 | .grunt
25 |
26 | # Bower dependency directory (https://bower.io/)
27 | bower_components
28 |
29 | # node-waf configuration
30 | .lock-wscript
31 |
32 | # Compiled binary addons (http://nodejs.org/api/addons.html)
33 | build/Release
34 |
35 | # Dependency directories
36 | node_modules/
37 | jspm_packages/
38 |
39 | # Typescript v1 declaration files
40 | typings/
41 |
42 | # Optional npm cache directory
43 | .npm
44 |
45 | # Optional eslint cache
46 | .eslintcache
47 |
48 | # Optional REPL history
49 | .node_repl_history
50 |
51 | # Output of 'npm pack'
52 | *.tgz
53 |
54 | # Yarn Integrity file
55 | .yarn-integrity
56 |
57 | # dotenv environment variables file
58 | .env
59 |
60 | *.reapeaks
61 | *.cache
62 |
63 | /index.js
64 | /index.js.map
65 |
--------------------------------------------------------------------------------
/.modernizrrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | minify: true,
3 | options: [
4 | 'setClasses',
5 | ],
6 | 'feature-detects': [
7 | 'audio',
8 | 'audio/autoplay',
9 | ],
10 | };
11 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: node_js
2 | node_js:
3 | - node
4 | dist: trusty
5 | sudo: false
6 | cache:
7 | directories:
8 | - node_modules
9 | before_install: npm install -g greenkeeper-lockfile@1
10 | before_script: greenkeeper-lockfile-update
11 | script:
12 | - npm test
13 | - npm run build
14 | after_script: greenkeeper-lockfile-upload
15 | branches:
16 | except:
17 | - /^v\d+\.\d+\.\d+$/
18 | - gh-pages
19 | notifications:
20 | webhooks: http://webhook.hakatashi.com/travis
21 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2017 Koki Takahashi
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # iwashi
2 |
3 | [](https://greenkeeper.io/)
--------------------------------------------------------------------------------
/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hakatashi/iwashi/ee26e0ff4f3ccca876cf40596f6006738ce9e761/favicon.png
--------------------------------------------------------------------------------
/index.babel.js:
--------------------------------------------------------------------------------
1 | require('@babel/polyfill');
2 |
3 | const React = require('react');
4 | const ReactDOM = require('react-dom');
5 | const App = require('./src/App.jsx');
6 | const gist = require('./src/gist.js');
7 | const params = require('./src/params.js');
8 |
9 | require('react-tippy/dist/tippy.css');
10 |
11 | process.on('unhandledRejection', (error) => {
12 | throw error;
13 | });
14 |
15 | window.addEventListener('unhandledrejection', (error) => {
16 | throw error;
17 | });
18 |
19 | (async () => {
20 | const gistData = await (() => {
21 | if (!params.gist || !params.gist.match(/^[\da-f]{20,}$/)) {
22 | return Promise.resolve(null);
23 | }
24 |
25 | return gist.load(params.gist);
26 | })();
27 |
28 | const reactRoot = document.getElementById('react');
29 | ReactDOM.render(React.createElement(App, {gistData}), reactRoot);
30 | })();
31 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | イワシがつちからはえてくるんだ ~原曲不使用音声による音MAD自動演奏~
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/lib/fontmin-loader.js:
--------------------------------------------------------------------------------
1 | const Fontmin = require('fontmin');
2 | const loaderUtils = require('loader-utils');
3 |
4 | module.exports = async function(font) {
5 | const callback = this.async();
6 | const fontmin = new Fontmin().src(font);
7 | const options = loaderUtils.getOptions(this) || {};
8 |
9 | if (options.text) {
10 | fontmin.use(
11 | Fontmin.glyph({
12 | text: options.text,
13 | hinting: false,
14 | })
15 | );
16 | }
17 |
18 | fontmin.use(Fontmin.ttf2woff());
19 |
20 | const fonts = await new Promise((resolve, reject) => {
21 | fontmin.run((error, files) => {
22 | if (error) {
23 | reject(error);
24 | } else {
25 | resolve(files);
26 | }
27 | });
28 | });
29 |
30 | const retFont = fonts.find((f) => f.extname === '.woff');
31 |
32 | callback(null, retFont ? retFont.contents : fonts[0].contents);
33 | };
34 |
35 | module.exports.raw = true;
36 |
--------------------------------------------------------------------------------
/lib/yaml-loader.js:
--------------------------------------------------------------------------------
1 | // So ugly... (;O;)
2 |
3 | const yaml = require('js-yaml');
4 |
5 | module.exports = (yamlText) => {
6 | const key = Array(100)
7 | .fill()
8 | .map(() => String.fromCodePoint(0x61 + Math.floor(Math.random() * 26)))
9 | .join('');
10 |
11 | const RequireYamlType = new yaml.Type('!require', {
12 | kind: 'scalar',
13 | construct: (path) => {
14 | const newPath = path || '';
15 | return `#${key}#${newPath}#${key}#`;
16 | },
17 | });
18 |
19 | const YAML_SCHEMA = yaml.Schema.create([RequireYamlType]);
20 |
21 | const data = yaml.load(yamlText, {schema: YAML_SCHEMA});
22 | const json = JSON.stringify(data);
23 |
24 | return `module.exports = ${json.replace(
25 | new RegExp(`"#${key}#(.+?)#${key}#"`, 'g'),
26 | 'require("$1").default'
27 | )}`;
28 | };
29 |
--------------------------------------------------------------------------------
/ogimage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hakatashi/iwashi/ee26e0ff4f3ccca876cf40596f6006738ce9e761/ogimage.png
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "iwashi",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "dependencies": {
7 | "@babel/core": "^7.4.3",
8 | "@babel/plugin-proposal-class-properties": "^7.4.0",
9 | "@babel/plugin-proposal-object-rest-spread": "^7.4.3",
10 | "@babel/polyfill": "^7.4.3",
11 | "@babel/preset-env": "^7.4.3",
12 | "@babel/preset-react": "^7.0.0",
13 | "@hakatashi/babel-plugin-react-svg": "^2.1.0-1",
14 | "@hakatashi/eslint-config": "^1.8.4",
15 | "autoprefixer": "^9.5.0",
16 | "babel-eslint": "^10.0.1",
17 | "babel-loader": "^8.0.5",
18 | "babel-minify-webpack-plugin": "^0.3.1",
19 | "babel-plugin-react-css-modules": "^5.2.4",
20 | "classnames": "^2.2.6",
21 | "common-tags": "^1.8.0",
22 | "core-js": "^3.0.0",
23 | "css-loader": "^2.1.1",
24 | "cssnano": "^4.1.10",
25 | "eslint": "^5.16.0",
26 | "eslint-plugin-react": "^7.12.4",
27 | "exports-loader": "^0.7.0",
28 | "fontmin": "^0.9.7-beta",
29 | "howler": "^2.1.1",
30 | "husky": "^1.3.1",
31 | "imports-loader": "^0.8.0",
32 | "js-yaml": "^3.13.1",
33 | "lint-staged": "^8.1.5",
34 | "loader-utils": "^2.0.0",
35 | "lodash": "^4.17.11",
36 | "mml-iterator": "^1.1.0",
37 | "modernizr": "github:hakatashi/Modernizr#audio-autoplay",
38 | "modernizr-loader": "^1.0.1",
39 | "napa": "^3.0.0",
40 | "postcss-loader": "^3.0.0",
41 | "precss": "4.0.0",
42 | "preloadjs": "^1.0.1",
43 | "prettier-eslint-cli": "^4.7.1",
44 | "prop-types": "^15.7.2",
45 | "randomcolor": "^0.5.4",
46 | "raw-loader": "^2.0.0",
47 | "react": "^16.8.6",
48 | "react-dom": "^16.8.6",
49 | "react-hammerjs": "^1.0.1",
50 | "react-icons": "^3.5.0",
51 | "react-player": "^2.0.0",
52 | "react-tippy": "^1.2.3",
53 | "style-loader": "^0.23.1",
54 | "url-loader": "^1.1.2",
55 | "webpack": "^4.29.6",
56 | "webpack-cli": "^3.3.0",
57 | "webpack-dev-server": "^3.2.1",
58 | "webpack-sources": "1.3.0"
59 | },
60 | "devDependencies": {},
61 | "napa": {
62 | "misaki-font": "http://littlelimit.net/arc/misaki/misaki_ttf_2019-02-03a.zip",
63 | "hatena-icon": "http://hatenacorp.jp/file/hatenaportal/company/Hatena-Bookmark-Logo.zip"
64 | },
65 | "scripts": {
66 | "install": "napa",
67 | "test": "npm run lint",
68 | "lint": "eslint . --ext .jsx,.js --ignore-path .gitignore",
69 | "format": "prettier-eslint **/*.js **/*.jsx **/*.css **/*.pcss --write",
70 | "build": "webpack --mode production",
71 | "dev": "webpack-dev-server --open"
72 | },
73 | "husky": {
74 | "hooks": {
75 | "pre-commit": "lint-staged"
76 | }
77 | },
78 | "lint-staged": {
79 | "*.{js,jsx,css,pcss}": [
80 | "prettier-eslint --write",
81 | "git add"
82 | ]
83 | },
84 | "repository": {
85 | "type": "git",
86 | "url": "git+https://github.com/hakatashi/iwashi.git"
87 | },
88 | "keywords": [],
89 | "author": "Koki Takahashi (http://hakatashi.com/)",
90 | "license": "MIT",
91 | "bugs": {
92 | "url": "https://github.com/hakatashi/iwashi/issues"
93 | },
94 | "homepage": "https://github.com/hakatashi/iwashi#readme"
95 | }
96 |
--------------------------------------------------------------------------------
/songs/index.js:
--------------------------------------------------------------------------------
1 | const mapValues = require('lodash/mapValues');
2 | const MMLIterator = require('mml-iterator');
3 |
4 | const iwashi = require('./iwashi/data.yml');
5 | const {median} = require('../src/util.js');
6 |
7 | const parseTime = (timeText, resolution) => {
8 | const components = timeText.split('.');
9 |
10 | if (components.length === 2) {
11 | return (
12 | (parseInt(components[0]) - 1) * resolution +
13 | ((parseInt(components[1]) - 1) * resolution) / 4
14 | );
15 | }
16 |
17 | if (components.length === 3) {
18 | const subtime = parseFloat(`${components[1]}.${components[2]}`);
19 | return (
20 | (parseInt(components[0]) - 1) * resolution +
21 | Math.floor((subtime - 1) * resolution) / 4
22 | );
23 | }
24 |
25 | throw new Error(`Invalid time: ${timeText}`);
26 | };
27 |
28 | const compileLyrics = (lyricText, resolution) => {
29 | let currentTime = null;
30 | const lyrics = [];
31 |
32 | for (const line of lyricText.split('\n')) {
33 | if (line.startsWith('=')) {
34 | currentTime = parseTime(line.slice(1), resolution);
35 | if (lyrics.length >= 1 && lyrics[lyrics.length - 1].end === null) {
36 | lyrics[lyrics.length - 1].end = currentTime;
37 | }
38 | } else if (line.trim() !== '') {
39 | lyrics.push({
40 | text: line.trim(),
41 | start: currentTime,
42 | end: null,
43 | });
44 | }
45 | }
46 |
47 | return lyrics;
48 | };
49 |
50 | const compileMml = (text) => {
51 | // Bug of mml-iterator?
52 | const fixedText = text.replace(
53 | /[<>]/g,
54 | (char) => ({'<': '>', '>': '<'}[char])
55 | );
56 |
57 | const iterator = new MMLIterator(fixedText);
58 | const notes = Array.from(iterator);
59 | return notes;
60 | };
61 |
62 | for (const [id, song] of Object.entries({iwashi})) {
63 | module.exports[id] = {
64 | ...song,
65 | length: parseTime(song.length, song.resolution),
66 | lyrics: compileLyrics(song.lyrics, song.resolution),
67 | vocals: mapValues(song.vocals, (vocals) => vocals.map((vocal) => ({
68 | ...vocal,
69 | start: parseTime(vocal.start, song.resolution),
70 | end: parseTime(vocal.end, song.resolution),
71 | }))),
72 | backgrounds: song.backgrounds.map((background) => ({
73 | ...background,
74 | time: parseTime(background.time, song.resolution),
75 | })),
76 | tracks: mapValues(song.tracks, (track) => ({
77 | ...track,
78 | ...(track.score
79 | ? (() => {
80 | const score = compileMml(track.score);
81 | const noteNumbers = score
82 | .map((note) => note.noteNumber)
83 | .filter((note) => note !== undefined);
84 | return {
85 | score,
86 | meanOfNotes: median(noteNumbers),
87 | };
88 | })()
89 | : {}),
90 | ...(track.start ? {start: parseTime(track.start, song.resolution)} : {}),
91 | ...(track.end ? {end: parseTime(track.end, song.resolution)} : {}),
92 | })),
93 | clearances: song.clearances.map((clearance) => parseTime(clearance, song.resolution)),
94 | };
95 | }
96 |
--------------------------------------------------------------------------------
/songs/iwashi/data.yml:
--------------------------------------------------------------------------------
1 | title: イワシがつちからはえてくるんだ
2 | titleComponents:
3 | - イワシが
4 | - つちから
5 | - はえてくるんだ
6 | artist: ころんば
7 | bpm: 135
8 | resolution: 32
9 | length: 3.1.0
10 | lyrics: |
11 | =7.1.0
12 | なんねん まえかの ことでした
13 | =8.4.0
14 | だれかが ハサミで
15 | =10.1.0
16 | タイムラインを ちょんぎった
17 | =11.4.5
18 | そして
19 | =12.3.0
20 | あしたと きのうが つながった
21 | =14.1.0
22 |
23 | =15.1.0
24 | あしたの ことは しっている
25 | =16.4.0
26 | イワシが つちから はえてくるんだ
27 | =19.1.0
28 | えきの ホームに あながあく
29 | =20.4.0
30 | すのこが きえるんだ
31 | =23.1.0
32 | きのうの きおくは きえたけど
33 | =24.4.0
34 | きえたってことも よくわからないんだ
35 | =27.1.0
36 | そらの うえから ビルがたつ
37 | =28.4.0
38 | めが みえなくなってきた
39 |
40 | =30.4.0
41 | はな は かれず
42 | =33.4.0
43 | とり は とばず ねむる
44 | =37.4.0
45 | かぜ は とまり つめたく
46 | =41.4.0
47 | つき は みちも かけも せず まわる
48 | =47.1.0
49 |
50 | =51.1.0
51 | いままでと これからが つながって
52 | =53.2.5
53 | いちにちを とばして わすれて
54 | =55.1.0
55 | すすんでく
56 | =55.4.5
57 | ここは
58 | =56.3.0
59 | もとには もどらなくなった
60 | =58.1.0
61 |
62 | =59.1.0
63 | あしたの ことは しっている
64 | =60.4.0
65 | イワシが つちから はえてくるんだ
66 | =63.1.0
67 | えきの ホームに あながあく
68 | =64.4.0
69 | すのこが きえるんだ
70 | =67.1.0
71 | きのうの きおくは きえたけど
72 | =68.4.0
73 | きえたってことも よくわからないんだ
74 | =71.1.0
75 | そらの うえから ビルがたつ
76 | =72.4.0
77 | めが みえなくなってきた
78 |
79 | =75.1.0
80 | あしたの ことは しっている
81 | =76.4.0
82 | イワシが つちから はえてくるんだ
83 | =79.1.0
84 | えきの ホームに あながあく
85 | =80.4.0
86 | すのこが きえるんだ
87 | =83.1.0
88 | きのうの きおくは きえたけど
89 | =84.4.0
90 | きえたってことも よくわからないんだ
91 | =87.1.0
92 | そらの うえから ビルがたつ
93 | =88.4.0
94 | めが みえなくなってきた
95 | =91.1.0
96 | clearances:
97 | - 7.1.0
98 | - 31.1.0
99 | - 47.1.0
100 | - 51.1.0
101 | - 59.1.0
102 | - 91.1.0
103 | vocals:
104 | yufu:
105 | - source: '01'
106 | start: 6.4.25
107 | end: 14.3.25
108 | - source: '02'
109 | start: 14.3.25
110 | end: 22.3.25
111 | - source: '03'
112 | start: 22.3.25
113 | end: 30.3.25
114 | - source: '04'
115 | start: 30.3.25
116 | end: 37.3.25
117 | - source: '05'
118 | start: 37.3.25
119 | end: 47.1.25
120 | - source: '06'
121 | start: 47.1.25
122 | end: 50.1.0
123 | - source: '07'
124 | start: 50.4.25
125 | end: 58.3.25
126 | - source: '02'
127 | start: 58.3.25
128 | end: 66.3.25
129 | - source: '03'
130 | start: 66.3.25
131 | end: 74.3.25
132 | - source: '02'
133 | start: 74.3.25
134 | end: 82.3.25
135 | - source: '03'
136 | start: 82.3.25
137 | end: 90.3.25
138 | - source: '08'
139 | start: 90.3.25
140 | end: 93.3.875
141 | defaultVocal: yufu
142 | backgrounds:
143 | - time: 0.1.0
144 | url: null
145 | workUrl: null
146 | title: null
147 | author: null
148 | license: null
149 | animation: null
150 | transform: null
151 | - time: 7.1.0
152 | url: https://farm5.staticflickr.com/4568/37574526294_a1137ffda6_k.jpg
153 | workUrl: https://flic.kr/p/ZfkgAf
154 | title: nature
155 | author: mouli choudari
156 | license: CC BY
157 | animation: left
158 | transform: null
159 | - time: 15.1.0
160 | url: https://farm4.staticflickr.com/3671/11285730373_f3e33590b1_k.jpg
161 | workUrl: https://flic.kr/p/ichjsa
162 | title: City
163 | author: reynermedia
164 | license: CC BY
165 | animation: right
166 | transform: null
167 | - time: 23.1.0
168 | url: https://farm4.staticflickr.com/3671/11285730373_f3e33590b1_k.jpg
169 | workUrl: https://flic.kr/p/ichjsa
170 | title: City
171 | author: reynermedia
172 | license: CC BY
173 | animation: left
174 | transform: rotate(180deg)
175 | - time: 31.1.0
176 | url: https://farm5.staticflickr.com/4146/5441757600_31068a25e2_b.jpg
177 | workUrl: https://flic.kr/p/9hSqWU
178 | title: A bird and apricot flowers
179 | author: bullets95
180 | license: CC BY-SA
181 | animation: right
182 | transform: null
183 | - time: 39.1.0
184 | url: https://farm5.staticflickr.com/4543/38135163096_57b0b9b8f2_b.jpg
185 | workUrl: https://flic.kr/p/216SFo1
186 | title: Beaver Moon Rise from Austin Texas
187 | author: Rob Pettengill
188 | license: CC BY-NC-ND
189 | animation: left
190 | transform: null
191 | - time: 48.1.0
192 | url: null
193 | workUrl: null
194 | title: null
195 | author: null
196 | license: null
197 | animation: null
198 | transform: null
199 | - time: 51.1.0
200 | url: https://farm5.staticflickr.com/4185/34571430632_eb91c0243f_b.jpg
201 | workUrl: https://flic.kr/p/UEXBSQ
202 | title: Nature
203 | author: Bernard Lacotte
204 | license: CC BY-NC-ND
205 | animation: up
206 | transform: null
207 | - time: 59.1.0
208 | url: https://farm4.staticflickr.com/3685/12708583543_7e491d6227_b.jpg
209 | workUrl: https://flic.kr/p/kn1P8n
210 | title: waiting for a train
211 | author: Keromi Keroyama
212 | license: CC BY
213 | animation: left
214 | transform: null
215 | - time: 67.1.0
216 | url: https://farm4.staticflickr.com/3685/12708583543_7e491d6227_b.jpg
217 | workUrl: https://flic.kr/p/kn1P8n
218 | title: waiting for a train
219 | author: Keromi Keroyama
220 | license: CC BY
221 | animation: right
222 | transform: rotate(180deg)
223 | - time: 75.1.0
224 | url: https://farm5.staticflickr.com/4119/4790098318_9d71f854ff_b.jpg
225 | workUrl: https://flic.kr/p/8ihvm3
226 | title: Diversify
227 | author: Thomas Hawk
228 | license: CC BY-NC
229 | animation: rotate
230 | transform: null
231 | - time: 91.1.0
232 | url: null
233 | workUrl: null
234 | title: null
235 | author: null
236 | license: null
237 | animation: null
238 | transform: null
239 | tracks:
240 | clap:
241 | type: percussion
242 | category: clap
243 | score: !require ./score/clap.txt
244 | default:
245 | sound: kinmoza-clap
246 | volume: 1
247 | snare:
248 | type: percussion
249 | category: snare
250 | score: !require ./score/snare.txt
251 | default:
252 | sound: karateka-kick
253 | volume: 0.5
254 | bass:
255 | type: percussion
256 | category: bass
257 | score: !require ./score/bass.txt
258 | default:
259 | sound: killme-pyonsuke
260 | volume: 0.6
261 | closed-hihat:
262 | type: percussion
263 | category: hihat
264 | score: !require ./score/closed-hihat.txt
265 | default:
266 | sound: ippon-crisp
267 | volume: 0.5
268 | base:
269 | type: instrument
270 | category: base
271 | score: !require ./score/base.txt
272 | default:
273 | sound: atsumori
274 | volume: 0.3
275 | chord:
276 | type: chord
277 | category: chorus
278 | score: !require ./score/chord.txt
279 | default:
280 | sound: aoba-zoi
281 | volume: 0.4
282 | cowbell:
283 | type: percussion
284 | category: bell
285 | score: !require ./score/cowbell.txt
286 | default:
287 | sound: zen-glass
288 | volume: 1
289 | chime1:
290 | type: percussion
291 | category: chime
292 | score: !require ./score/chime1.txt
293 | default:
294 | sound: inoubattle-otama
295 | volume: 0.6
296 | chime2:
297 | type: percussion
298 | category: chime
299 | score: !require ./score/chime2.txt
300 | default:
301 | sound: yukari-cowbell
302 | volume: 0.8
303 | chorus1:
304 | type: instrument
305 | category: chorus
306 | score: !require ./score/chorus1.txt
307 | intro: true
308 | default:
309 | sound: ai-virus
310 | volume: 0.2
311 | chorus2:
312 | type: instrument
313 | category: chorus
314 | score: !require ./score/chorus2.txt
315 | default:
316 | sound: jaguarman-waito
317 | volume: 0.2
318 | cymbal:
319 | type: percussion
320 | category: cymbal
321 | score: !require ./score/cymbal.txt
322 | default:
323 | sound: minecraft-creeper
324 | volume: 0.4
325 | chorus3:
326 | type: instrument
327 | category: chorus
328 | score: !require ./score/chorus3.txt
329 | default:
330 | sound: oreo-oh
331 | volume: 0.3
332 | chorus4:
333 | type: instrument
334 | category: chorus
335 | score: !require ./score/chorus4.txt
336 | default:
337 | sound: zkai-eh
338 | volume: 0.4
339 | synth1:
340 | type: instrument
341 | category: synth
342 | score: !require ./score/synth1.txt
343 | prank: true
344 | default:
345 | sound: washing-aegi
346 | volume: 0.4
347 | synth2:
348 | type: instrument
349 | category: synth
350 | score: !require ./score/synth2.txt
351 | prank: true
352 | default:
353 | sound: kemofure-toki
354 | volume: 0.2
355 | chorus5:
356 | type: instrument
357 | category: chorus
358 | score: !require ./score/chorus5.txt
359 | prank: true
360 | default:
361 | sound: chargeman-hai
362 | volume: 0.25
363 | chorus6:
364 | type: instrument
365 | category: chorus
366 | score: !require ./score/chorus6.txt
367 | prank: true
368 | default:
369 | sound: deremasu-suimasen
370 | volume: 0.4
371 | rap:
372 | type: rap
373 | start: 75.1.0
374 | end: 91.1.0
375 | default:
376 | sound: bemybaby-intro
377 | volume: 0.3
378 |
--------------------------------------------------------------------------------
/songs/iwashi/icon.png:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:d1a7ea0b3fd7782461353f73e11598b838ed7220009470877da070d4788309b7
3 | size 2864
4 |
--------------------------------------------------------------------------------
/songs/iwashi/icon_raw.png:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:6060e246d455fc084b9c77dc3a45062e5f8708ce7749c3034e0b02f7d81ab72a
3 | size 45578
4 |
--------------------------------------------------------------------------------
/songs/iwashi/score/base.txt:
--------------------------------------------------------------------------------
1 | t135 o1 l8
2 | r1 r1
3 |
4 | /: d d >a< a >a< a :/3
5 | d r16 d r16 >a< d r d+4
6 |
7 | o1 l16
8 | d^ r d r >a^< r a >a< r a^
9 | d^ r d r >a^< r a >a< r a^
10 | g^ r g r c^ r c r
11 | f^ r f r f^ r f r
12 | e^ r e r >a^< r a >a< r a^
13 | d^ r d r c^ r c r
14 | >a+^< r a+ d >a+< a+^ >a^< r a >a< r a^
15 | o2 d^ r c+ r^ c r >b< r^^ >a^^^<
16 |
17 | o1
18 | /:
19 | d^ r d r c^ r c r
20 | >a+^< r a+ d >a+< a+^ f^ r f r
21 | g^ r g r c^ r c r
22 | f^ r f r f^ r f r
23 | >a+^< r a+ d >a+< a+^ >a^< r a >a< r a^
24 | d^ r d r c^ r c r
25 | >g^< r g >g< r g^ c^ r c r
26 | |
27 | e^ r e r >a^< r a >a< r a^
28 | :/2
29 | f^ r f r e^ r e r
30 |
31 | o1 l4
32 | >a+^^< r >a+^< c^
33 | d^^ r c^ f^
34 | >a+^^< r >a+^< >a^<
35 | d^^ r c^ f^
36 | l8
37 | /:
38 | >a+< a+ >a+< a+ >a+< a+ >a+< a+
39 | >a+< a+ >a+< a+ c c
40 | d d d d
41 | c c f f
42 | :/2
43 |
44 | o1
45 | /: d d >a< a >a< a :/3
46 | l16
47 | d^ r d^ r >a^< d^ r^ d+^^^
48 |
49 | o1 l16
50 | d^ r d r >a^< r a >a< r a^
51 | d^ r d r >a^< r a >a< r a^
52 | g^ r g r c^ r c r
53 | f^ r f r f^ r f r
54 | e^ r e r >a^< r a >a< r a^
55 | d^ r d r c^ r c r
56 | >a+^< r a+ d >a+< a+^ >a^< r a >a< r a^
57 | o2 d^ r c+ r^ c r >b< r^^ >a^^^<
58 |
59 | o1
60 | /:
61 | d^ r d r c^ r c r
62 | >a+^< r a+ d >a+< a+^ f^ r f r
63 | g^ r g r c^ r c r
64 | f^ r f r f^ r f r
65 | >a+^< r a+ d >a+< a+^ >a^< r a >a< r a^
66 | |
67 | d^ r d r c^ r c r
68 | >g^< r g >g< r g^ c^ r c r
69 | e^ r e r >a^< r a >a< r a^
70 | :/2
71 | d^ r d r f^ r f r
72 | >g^< r g >g< r g^ c^ r c r
73 | f^ r f r e^ r e r
74 |
75 | o1
76 | /:
77 | d^ r d r c^ r c r
78 | >a+^< r a+ d >a+< a+^ f^ r f r
79 | g^ r g r c^ r c r
80 | f^ r f r f^ r f r
81 | >a+^< r a+ d >a+< a+^ >a^< r a >a< r a^
82 | |
83 | d^ r d r c^ r c r
84 | >g^< r g >g< r g^ c^ r c r
85 | e^ r e r >a^< r a >a< r a^
86 | :/2
87 | d^ r d r f^ r f r
88 | >g^< r g >g< r g^ c^ r c r
89 | f^ r f r e^ r e r
90 |
91 | l8
92 | /: d d >a< a >a< a :/3
93 | d^ a^ d
94 |
--------------------------------------------------------------------------------
/songs/iwashi/score/bass.txt:
--------------------------------------------------------------------------------
1 | t135 o1 l4
2 | r1 r1
3 |
4 | /: c c c c :/3 l16 c^^ c^^ c^ c^^^ c^^^
5 |
6 | l4
7 | /: c c c c :/4
8 | /: c c c c :/3 l16 c^^ c^^ c^ c^^^^^^^
9 |
10 | l4
11 | /: c c c c :/16
12 |
13 | l16
14 | c^^c^^c^ c^^^^^^^
15 | c^^^^cc^ ^^^^^^c^
16 | c^^^^^c^ ^^^^^^^^
17 | c^^^^cc^ ^^^^^^^^
18 | c^^c^^c^ c^^^^^^^
19 | c^^^^cc^ ^^^^^^c^
20 | c^^^^^c^ ^^^^^^^^
21 | c^^^^cc^ c^c^c^c^
22 | l4
23 | /: c c c c :/8
24 |
25 | /: c c c c :/3 l16 c^^ c^^ c^ c^^^ c^^^
26 |
27 | l4
28 | /: c c c c :/4
29 | /: c c c c :/3 l16 c^^ c^^ c^ c^^^ c^^^
30 |
31 | l4
32 | /: c c c c :/16
33 |
34 | l4
35 | /: c c c c :/16
36 |
37 | /: c c c | c :/4
38 |
--------------------------------------------------------------------------------
/songs/iwashi/score/chime1.txt:
--------------------------------------------------------------------------------
1 | t135 o1 l4
2 | r1 r1
3 |
4 | r1 r1 r1 l16 c^^ c^^ c^ r2
5 |
6 | l4
7 | /: c c r r :/7 l16 c^^ c^^ c^ r2
8 |
9 | l4
10 | /: c c r r :/16
11 |
12 | l1
13 | /: r :/16
14 |
15 | l4
16 | /: c c r r :/3 l16 c^^ c^^ c^ r2
17 |
18 | l4
19 | /: c c r r :/7 l16 c^^ c^^ c^ r2
20 |
21 | l4
22 | /: c c r r :/16
23 |
24 | l4
25 | /: c c r r :/16
26 |
27 | l4
28 | /: c c r r :/4
29 |
--------------------------------------------------------------------------------
/songs/iwashi/score/chime2.txt:
--------------------------------------------------------------------------------
1 | t135 o1 l4
2 | r1 r1
3 |
4 | r1 r1 r1 r r c c
5 |
6 | /: r r c c :/8
7 |
8 | /: r r c c :/16
9 |
10 | l1
11 | /: r :/16
12 |
13 | l4
14 | /: r r c c :/4
15 |
16 | /: r r c c :/8
17 |
18 | /: r r c c :/16
19 |
20 | /: r r c c :/16
21 |
22 | /: r r c | c :/4
23 |
--------------------------------------------------------------------------------
/songs/iwashi/score/chord.txt:
--------------------------------------------------------------------------------
1 | t135 o4 l4
2 | r1 r1
3 |
4 | /: r [dfa] r [ceg] :/3
5 | l8
6 | [dfa] r16 [dfa] r16 [>aa+a+aaaaa+a+aaaaa+a+aabaa+a+a+a+aaaaa+a+] r [ea]
28 | :/
29 | r [>aaa+a+a+a+]
38 | l8
39 | r [>a+a+a+a+a+a+] r [fa]
43 | r [dfa+] r [dfa+] r [dfa+] r [dfa+]
44 | r [dfa+] r [dfa+] r [c+ea] r [c+ea]
45 | r [dfa] r [dfa] r [dfa] r [dfa]
46 | r [cd+g] r [cd+g] r [fa] r [fa]
47 |
48 | l4
49 | /: r [dfa] r [ceg] :/3
50 | l8
51 | [dfa] r16 [dfa] r16 [>aa+a+aaaaa+a+aaaaa+a+aabaa+a+a+a+aaaaa+a+] r [ea]
73 | :/
74 | r [>aaa+a+a+a+a+a+aaaaa+a+] r [ea]
88 | :/
89 | r [>aaa+a+aa^gf
5 | d^cdc^>aa+^^^<
25 |
26 | l1
27 | r r r r r r r l4 r r r g
28 |
29 | l2 v100
30 | /:
31 | a g f e f g c d+
32 | d c a g f g | g a
33 | :/
34 | f e
35 |
36 | l2 v100
37 | /:
38 | a g f e f g c d+
39 | d c a g f g | g a
40 | :/
41 | f e
42 |
43 | l1
44 | /: r :/4
45 |
--------------------------------------------------------------------------------
/songs/iwashi/score/chorus2.txt:
--------------------------------------------------------------------------------
1 | t135 o4 l1 v50
2 | r1 r1
3 |
4 | r r r r
5 |
6 | r r r r r r r l4 r r r d
7 |
8 | l2
9 | /:
10 | f e d c d e c >a<
11 | e d e >a< c d | a e
12 | :/
13 | c g
14 |
15 | l1
16 | /: r :/16
17 |
18 | l4
19 | /: f r e r :/3
20 | l16
21 | f^rfr^e^f^r^>f+^^^<
22 |
23 | l1
24 | r r r r r r r l4 r r r d
25 |
26 | l2 v100
27 | /:
28 | f e d c d e c >a<
29 | e d e >a< c d | a e
30 | :/
31 | c g
32 |
33 | l2 v100
34 | /:
35 | f e d c d e c >a<
36 | e d e >a< c d | a e
37 | :/
38 | c g
39 |
40 | l1
41 | /: r :/4
42 |
--------------------------------------------------------------------------------
/songs/iwashi/score/chorus3.txt:
--------------------------------------------------------------------------------
1 | t135 o3 l1
2 | r1 r1
3 |
4 | /: r :/4
5 |
6 | /: r :/8
7 |
8 | /: r :/16
9 |
10 | l2
11 | d r d r
12 | f e g f
13 | d r d c
14 | f d c d+
15 | d r d r
16 | f e g f
17 | d r d c
18 | f d c d+
19 |
20 | l1
21 | /: r :/4
22 |
23 | l1
24 | /: r :/8
25 |
26 | o3 l8 v50
27 | /:
28 | a^^r g^
29 | a^^r a^e^
30 | f^^r g^f^
31 | a^r^ a^fg16a16
32 | g^ e^fg
33 | f^f a^r^
34 | a^ag aga
35 | a^^^ r^^^
36 | :/2
37 |
38 | o3 l8 v50
39 | /:
40 | a^^r g^
41 | a^^r a^e^
42 | f^^r g^f^
43 | a^r^ a^fg16a16
44 | g^ e^fg
45 | f^f a^r^
46 | a^ag aga
47 | a^^^ r^^^
48 | :/2
49 |
50 | l1
51 | /: r :/4
52 |
--------------------------------------------------------------------------------
/songs/iwashi/score/chorus4.txt:
--------------------------------------------------------------------------------
1 | t135 o3 l1
2 | r1 r1
3 |
4 | /: r :/4
5 |
6 | /: r :/8
7 |
8 | /: r :/16
9 |
10 | l2
11 | f a f g
12 | a f a+ a
13 | f a f e
14 | a f e a
15 | f a f g
16 | a f a+ a
17 | f a f e
18 | a f e a
19 |
20 | l1
21 | /: r :/4
22 |
23 | l1
24 | /: r :/8
25 |
26 | o3 l8 v50
27 | /:
28 | a^^r g^
29 | a^^r a^e^
30 | f^^r g^fg
31 | a^r^ a^ef16g16
32 | a^g^ d^fg
33 | a^f^ e^r^
34 | f^fe fefe
35 | d^^^ r^^^
36 | :/2
37 |
38 | o3 l8 v50
39 | /:
40 | a^^r g^
41 | a^^r a^e^
42 | f^^r g^fg
43 | a^r^ a^ef16g16
44 | a^g^ d^fg
45 | a^f^ e^r^
46 | f^fe fefe
47 | d^^^ r^^^
48 | :/2
49 |
50 | l1
51 | /: r :/4
52 |
--------------------------------------------------------------------------------
/songs/iwashi/score/chorus5.txt:
--------------------------------------------------------------------------------
1 | t135 o4 l1
2 | r1 r1
3 |
4 | /: r :/4
5 |
6 | /: r :/8
7 |
8 | /: r :/16
9 |
10 | /: r :/16
11 |
12 | /: r :/4
13 |
14 | l32
15 | r2 d^^^cdc^ >a^^^a^^^aa^^ga