人工智能AI创作打击音乐效果代码

代码语言:html

所属分类:多媒体

代码描述:人工智能AI创作打击音乐效果代码,可设置节拍及速度,还可自己自定义节拍位置创作新的电子乐。

代码标签: 人工智能 AI 创作 打击 音乐

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>

<html lang="en">

<head>

   
<meta charset="UTF-8">

   
<meta name="viewport" content="width=device-width, initial-scale=1">

   
<link type="text/css" rel="stylesheet" href="//repo.bfw.wiki/bfwrepo/css/materialize.css">
   
<link rel='stylesheet' href='https://fonts.googleapis.com/icon?family=Material+Icons'>

   
<style>
        html
,
        body
,
       
.app {
         
margin: 0;
         
padding: 0;
         
width: 100%;
         
height: 100%;
       
         
background-color: #111;
         
color: white;
       
}
       
       
.progress {
         
max-width: 30%;
         
margin: 45vh auto 55vh auto;
       
}
       
       
.app {
         
display: flex;
         
flex-direction: column;
         
align-items: center;
         
justify-content: center;
       
         
background: linear-gradient(to right, #010305, #131516);
       
}
       
       
.sequencer,
       
.controls {
         
width: 80vw;
       
}
       
.controls {
         
display: flex;
         
flex-direction: row;
         
justify-content: space-around;
       
}
       
.control {
         
text-align: center;
       
}
       
.control input {
         
margin-bottom: 20px;
       
}
       
.select-wrapper span.caret {
         
color: inherit; /* Override materialize.css black */
       
}
       
.select-wrapper input.select-dropdown {
         
margin-bottom: 10px;
       
}
       
.input-field {
         
margin-top: 0;
       
}
        input
[type='range'] {
         
border: 0;
       
}
        input
[type='range'] + .thumb {
         
background-color: #2196f3;
       
}
        input
[type='range']::-webkit-slider-thumb {
         
background-color: #2196f3;
       
}
        input
[type='range']::-moz-range-thumb {
         
background-color: #2196f3;
       
}
        input
[type='range']::-ms-thumb {
         
background-color: #2196f3;
       
}
       
.control .share {
         
margin-top: 10px;
       
}
       
.midi-output,
       
.midi-clock-input,
       
.select-wrapper {
         
max-width: 200px;
         
margin: 0 auto;
       
}
       
.select-wrapper input {
         
color: white;
       
}
       
.sequencer {
         
position: relative;
         
height: 70vh;
         
margin: 20px 0;
         
display: flex;
         
flex-direction: row;
         
perspective: 1000px;
         
transform-style: preserve-3d;
       
}
       
.sequencer .legend {
         
flex: 0.75;
         
display: flex;
         
flex-direction: column;
       
}
       
.drum-class {
         
display: flex;
         
align-items: center;
         
justify-content: flex-start;
         
margin: 2.5px;
       
         
font-size: 12px;
         
color: #999;
       
}
       
.sequencer .steps {
         
flex: 9;
         
display: flex;
         
flex-direction: row;
       
}
       
.step {
         
flex: 1;
         
display: flex;
         
flex-direction: column;
         
transform-style: preserve-3d;
       
}
       
.steps {
         
transform-style: preserve-3d;
       
}
       
.gutter {
         
width: 5px;
       
}
       
.gutter.seed-marker {
         
background-color: #aaa;
         
margin: 0 10px;
         
cursor: move;
       
}
       
.gutter.seed-marker:hover {
         
background-color: white;
       
}
       
.cell {
         
margin: 2.5px 0;
         
background-color: rgba(100, 100, 100, 0.1);
         
border: 1px solid rgba(100, 100, 100, 0.2);
         
border-radius: 3px;
         
z-index: 0;
         
transition: background-color 0.3s ease;
       
}
       
       
.cell:hover {
         
background-color: rgba(100, 100, 100, 0.5);
       
}
       
.step:not(.regenerating) .cell.on {
         
background-color: #64b5f6;
         
opacity: 1;
       
}
       
       
.step.seed .cell.on {
         
background-color: #e91e63;
       
}
       
       
.regenerate {
         
position: absolute;
         
visibility: hidden;
         
font-size: 30px;
         
line-height: 56px;
       
}
       
       
.kick {
         
flex: 2;
         
margin-bottom: 10px;
       
}
       
.snare {
         
flex: 1;
         
margin-top: 10px;
         
margin-bottom: 10px;
       
}
       
.hi-hat-closed {
         
flex: 1;
         
margin-top: 10px;
       
}
       
.hi-hat-open {
         
flex: 1;
         
margin-bottom: 10px;
       
}
       
.tom-low {
         
flex: 1;
         
margin-top: 10px;
       
}
       
.tom-mid {
         
flex: 1;
       
}
       
.tom-high {
         
flex: 1;
         
margin-bottom: 10px;
       
}
       
.clap {
         
flex: 1;
         
margin-top: 10px;
       
}
       
.rim {
         
flex: 1;
       
}
       
       
.info {
         
max-width: 50%;
         
margin: 100px auto;
         
text-align: center;
       
}
       
.info p {
         
margin-top: 50px;
       
}
   
</style>




</head>

<body>
   
<div class="progress pink">
       
<div class="indeterminate white"></div>
   
</div>
   
<div class="app" style="display: none;">
       
<div class="sequencer">
           
<div class="steps"></div>
       
</div>
       
<a class="regenerate btn-floating btn-large waves-effect waves-light pink darken-2 pulse">
           
<i class="material-icons">refresh</i>
       
</a>
       
<div class="controls">
           
<div class="control">
               
<a class="playpause btn-floating btn-large waves-effect waves-light blue">
                   
<i class="material-icons play-icon">play_arrow</i>
                   
<i class="material-icons pause-icon" style="display: none">pause</i>
               
</a>
           
</div>
           
<div class="control">
               
<div class="input-field grey-text">
                   
<select id="pattern-length">
           
<option>4</option>
           
<option>8</option>
           
<option selected>16</option>
           
<option>32</option>
         
</select> Pattern length
               
</div>
           
</div>
           
<div class="control">
               
<p class="range-field grey-text">
                   
<input type="range" id="tempo" min="20" max="240" value="120" step="1"> Tempo
               
</p>
           
</div>
           
<div class="control">
               
<p class="range-field grey-text">
                   
<input type="range" id="swing" min="0.5" max="0.7" value="0.55" step="0.05"> Swing
               
</p>
           
</div>
           
<div class="control">
               
<p class="range-field grey-text">
                   
<input type="range" id="temperature" class="tooltipped" min="0.5" max="2" value="1.1" step="0.1" data-tooltip="Higher temperatures will make the neural network generates wilder patterns" data-delay="500"> Temperature
               
</p>
           
</div>
       
</div>
   
</div>
   
<div class="info">
       
<p class="webmidi-enabled" style="display: none;">
            Output:
           
<select class="midi-output"></select>
       
</p>
       
<p class="webmidi-enabled" style="display: none;">
            MIDI clock output:
           
<select class="midi-clock-output"></select>
       
</p>
       
<p class="webmidi-enabled" style="display: none;">
            MIDI clock input:
           
<select class="midi-clock-input"></select>
       
</p>
       
<p>This is an experimental drum machine powered by a deep neural network. To use it, define a seed pattern on the left, and use the &ldquo;generate&rdquo; button. A neural network will dream up a continuation to your seed pattern.</p>
       
<p>Using the
           
<a href="https://github.com/tensorflow/magenta/tree/master/magenta/models/drums_rnn">Drums RNN</a> (pretrained) model from
           
<a href="https://magenta.tensorflow.org/">Google Magenta</a>, and
           
<a href="https://goo.gl/magenta/js">Magenta.js</a> +
           
<a href="https://js.tensorflow.org/">TensorFlow.js</a> +
           
<a href="https://tonejs.github.io/">Tone.js</a>.</p>
       
<p>A pen by
           
<a href="https://twitter.com/teropa">@teropa</a>.</p>
   
</div>


<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/babel.min.js"></script>
   
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/lodash-min.js"></script>
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/magentamusic.min.js"></script>
   
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/jquery-3.2.1.min.js"></script>
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/materialize.1.0.0.js"></script>
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/web-animations.min.js"></script>
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/webmidi.min.js"></script>
   
<script>
        const DRUM_CLASSES = [
          'Kick',
          'Snare',
          'Hi-hat closed',
          'Hi-hat open',
          'Tom low',
          'Tom mid',
          'Tom high',
          'Clap',
          'Rim'
        ];
        const TIME_HUMANIZATION = 0.01;
       
        let Tone = mm.Player.tone;
       
        let sampleBaseUrl = '//repo.bfw.wiki/bfwrepo/sound/tones';
       
        let reverb = new Tone.Convolver(
          `${sampleBaseUrl}/small-drum-room.wav`
        ).toMaster();
        reverb.wet.value = 0.35;
       
        let snarePanner = new Tone.Panner().connect(reverb);
        new Tone.LFO(0.13, -0.25, 0.25).connect(snarePanner.pan).start();
       
        let drumKit = [
          new Tone.Players({
            high: `${sampleBaseUrl}/808-kick-vh.mp3`,
            med: `${sampleBaseUrl}/808-kick-vm.mp3`,
            low: `${sampleBaseUrl}/808-kick-vl.mp3`
          }).toMaster(),
          new Tone.Players({
            high: `${sampleBaseUrl}/flares-snare-vh.mp3`,
            med: `${sampleBaseUrl}/flares-snare-vm.mp3`,
            low: `${sampleBaseUrl}/flares-snare-vl.mp3`
          }).connect(snarePanner),
          new Tone.Players({
            high: `${sampleBaseUrl}/808-hihat-vh.mp3`,
            med: `${sampleBaseUrl}/808-hihat-vm.mp3`,
            low: `${sampleBaseUrl}/808-hihat-vl.mp3`
          }).connect(new Tone.Panner(-0.5).connect(reverb)),
          new Tone.Players({
            high: `${sampleBaseUrl}/808-hihat-open-vh.mp3`,
            med: `${sampleBaseUrl}/808-hihat-open-vm.mp3`,
            low: `${sampleBaseUrl}/808-hihat-open-vl.mp3`
          }).connect(new Tone.Panner(-0.5).connect(reverb)),
          new Tone.Players({
            high: `${sampleBaseUrl}/slamdam-tom-low-vh.mp3`,
            med: `${sampleBaseUrl}/slamdam-tom-low-vm.mp3`,
            low: `${sampleBaseUrl}/slamdam-tom-low-vl.mp3`
          }).connect(new Tone.Panner(-0.4).connect(reverb)),
          new Tone.Players({
            high: `${sampleBaseUrl}/slamdam-tom-mid-vh.mp3`,
            med: `${sampleBaseUrl}/slamdam-tom-mid-vm.mp3`,
            low: `${sampleBaseUrl}/slamdam-tom-mid-vl.mp3`
          }).connect(reverb),
          new Tone.Players({
            high: `${sampleBaseUrl}/slamdam-tom-high-vh.mp3`,
   .........完整代码请登录后点击上方下载按钮下载查看

网友评论0