前言

友情提示:本文技术含量不高,大佬请直接忽略本文!

由于本人热爱音乐,当前又是人工智能的潮流,因此本人设想,如果人工智能可以作曲就好了。无奈水平有限,虽然大概看过一些人工智能的书籍,然而还是感觉似懂非懂。以下是本人编写的最低级的AI作曲代码,基本毫无技术含量,大佬一笑而过即可。(如何训练AI写出好听的音乐,我也很想知道,找些好听的谱,让AI参考后自由发挥?各抄一段拼起来肯定不行;本人对作曲一窍不通,如果有专业的作曲家会编程,也许能想到怎么办吧)

代码

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;public class radomMusic {static ArrayList list = new ArrayList();static char cl[] = {'1','2','3','4','5','6','7','#',' ','(',')','[',']'};static int count = 1000;static boolean needNum = false;static boolean needJingAndNum = false;static boolean canXiaoKuoHao = true;static boolean canZhongKuoHao = true;static boolean canZuoXiaoKuoHao = true;static boolean canZuoZhongKuoHao = true;static boolean canYouXiaoKuoHao = false;static boolean canYouZhongKuoHao = false;public static void main(String argv[]){System.out.println("启动");try{count = Integer.parseInt(argv[0]);}catch (Exception e){count = 1000;}initList();FileWriter fw = getFileWriter();for(int i=0; i< count; i++) {radomWrite(fw);}closeFR(fw);System.out.println("");System.out.println("结束");}public static void  initList(){for(char c: cl){list.add(c);}}public static void  radomWrite(FileWriter fw){int length = list.size();int target = (int)(Math.random()*length);try {String str = writeRule(String.valueOf(list.get(target)));System.out.print(str);writeToFile(fw, str);}catch (Exception e){System.out.println("出现错误,可能下标越界!");}}public static String reRadom(int begin, int end){String str = null;int i = (int) (Math.random()*(end-begin) + begin);try{str = String.valueOf(list.get(i));}catch (Exception e){System.out.println("重随机错误,可能越界!");}return str;}/*** 要求:* #后一位只能加数字;* (后不能出现[和]和(* [后不能出现(和)和[* )后不能出现)和]* ]后不能出现]和)** 必须先出现一次(才能出现)* 必须先出现一次[才能出现]** (后需要#或数字* [后需要#或数字** //list中,0-6为1-7* 7为#* 8为空格* 9为(* 10为)* 11为[* 12为]** @param input* @return*/public static String writeRule(String input){String output = input;if(needNum){needNum = false;return reRadom(0,6);}if(needJingAndNum){needJingAndNum = false;return reRadom(0,7);}if("#".equals(input)){needNum = true;}else if("(".equals(input)){if(!canZuoXiaoKuoHao){return " ";}if(!canXiaoKuoHao){return " ";}canZhongKuoHao = false;canYouXiaoKuoHao = true;needJingAndNum = true;canZuoXiaoKuoHao = false;}else if(")".equals(input)){if(!canXiaoKuoHao){return " ";}if(!canYouXiaoKuoHao){return " ";}canZhongKuoHao = true;canYouXiaoKuoHao = false;canZuoXiaoKuoHao = true;canZuoZhongKuoHao = true;}else if("[".equals(input)){if(!canZuoZhongKuoHao){return " ";}if(!canZhongKuoHao){return " ";}canXiaoKuoHao = false;canYouZhongKuoHao = true;needJingAndNum = true;canZuoZhongKuoHao = false;}else if("]".equals(input)){if(!canZhongKuoHao){return " ";}if(!canYouZhongKuoHao){return " ";}canXiaoKuoHao = true;canYouZhongKuoHao = false;canZuoXiaoKuoHao = true;canZuoZhongKuoHao = true;}else if(" ".equals(input)){}else{}return output;}public static FileWriter getFileWriter(){//URL path = radomMusic.class.getClassLoader().getResource("");String url = new File("").getAbsolutePath();url = url + "/tm.txt";System.out.println(url);File f = new File(url);if(!f.exists()){try {f.createNewFile();} catch (IOException e) {System.out.println(e.toString());}}try {FileWriter fw = new FileWriter(url);return fw;} catch (IOException e) {System.out.println(e.toString());}return null;}public static void writeToFile(FileWriter fw, String str){try {fw.write(str);} catch (IOException e) {System.out.println(e.toString());}}public static void closeFR(FileWriter fw){try {fw.flush();fw.close();} catch (IOException e) {System.out.println(e.toString());}}
}

输出样例

2 #1 4 (4 #676 2) 57#17#2 675[21](166   527 #2)465[2 17 114275164]2(16)12 (31652146 362#43#42 5 541 463 2557  )4(5 77 #6 13 16 63  2) 67(3 24327 327#24426 57  4  1631 3)#4[4#63  #324 22 7 3 5 5327 3  565256  47]166 61  3

总结

其实本文主要是用来存代码的;这段代码打成jar包运行,可以在当前目录下的tm.txt中生成AI随机完成的简谱;结合本人之前的TXT音乐播放器,还是能听着玩的(不知道能不能听出啥作曲灵感来)。没啥技术含量,就不讲解了。还请大佬勿喷。

AI作曲软件Java版,代码免费下载相关推荐

  1. python基础教程第三版电子版百度云-《python基础教程第三版》高清版PDF免费下载...

    下载地址1:http://t.cn/EGxO1sW Python基础教程 第3版Python简明教程书籍 Python编程从入门到实践 灵程序设计丛书 <python基础教程第三版>高清版 ...

  2. python入门教程pdf-《python基础教程(第3版)》高清版PDF免费下载

    下载地址: 备用地址: Python基础教程 第3版Python简明教程书籍 Python编程从入门到实践 灵程序设计丛书 <python基础教程第三版>高清版PDF免费下载 <py ...

  3. 人工智能,百度AI人脸识别java版

    人工智能,百度AI人脸识别java版 需求:人脸识别登录,人脸就需要有人脸的照片,数据库建一个字段face保存用户人脸的照片,jquery.webcam.js实现调用摄像头拍照,然后后端接受base6 ...

  4. Skype 6.0正式版登场 免费下载

    Skype 6.0正式版登场 免费下载 2012-10-25 10:43:01  19319 人阅读 作者:萧萧 编辑:萧萧 [复制链接] [我要爆料] Skype是一款非常受欢迎的网络即时语音沟通工 ...

  5. 【剑指offer】Java版代码(完整版)

    参考链接 [剑指offer]Java版代码(完整版)

  6. LINUX设备驱动程序第三版.pdf,linux设备驱动程序第3版.pdf免费下载链接,学习资源下载

    LINUX设备驱动程序第三版.pdf免费下载链接(.pdf书籍的优点是便于直接在电脑中保存有电脑就可以阅读,如果觉得这本书给你提供到了很大的帮助,可以去书店补一本纸质版) 资源保存在腾讯微云上,下载不 ...

  7. Navicat软件及破解工具 | 免费下载

    Navicat软件及破解工具 免费下载: https://download.csdn.net/download/qq_25112523/10638290

  8. Adobe Creative Cloud 2015最新版全套软件Adobe CC 2015免费下载(Mac/Win)

    Adobe Creative Cloud 2015最新版全套软件Adobe CC 2015免费下载(Mac/Win) Adobe Creative Cloud 2015最新版全套软件Adobe CC ...

  9. 手机购物,凡客诚品手机客户端,凡客手机版,VANCL,免费下载,送货上门,货到付款!...

    手机购物,凡客诚品手机客户端,凡客手机版,VANCL,免费下载,送货上门,货到付款! 本次活动每周三进行,前1500名用户可免费领取凡客礼品卡一张,先到先得,领完为止(活动持续12周)凭手机号码参与活 ...

最新文章

  1. app:compileDebugJavaWithJavac
  2. SpringCloud中Feign的适配器的实现方案
  3. 量子计算基础知识-2019/11/12
  4. python 提取字符串中的数字
  5. JavaFX自定义控件– Nest Thermostat第3部分
  6. java mail 已发送_JavaMail获取已发送邮件
  7. java discard方法,Java ByteBuf.discardReadBytes方法代码示例
  8. 晨光文具卖出去的笔能绕地球几圈?
  9. Linux虚拟化KVM-Qemu分析(三)之KVM源码(1)kvm_init
  10. 读“我为什么不要应届毕业生”
  11. 21天通关python 磁力_Python 实现 BT 种子转化为磁力链接 [实战]
  12. 【算法基础一】字符编码分类
  13. zeros什么意思_zeros:zeros还是zeroes?4)是什么意思?
  14. PiscisOS开发笔记_1_PiscisOS的诞生和系统特性简介
  15. 阿额企鹅我恶趣味企鹅我去恶趣味
  16. 【Android UI设计与开发】4.底部菜单栏(一)Fragment介绍和简单实现
  17. 汇编中esp和ebp在函数栈空间的保存和变化 call的参数和局部变量的关系详解
  18. python报考软考哪个比较好_软考中级哪个好考
  19. 班章管家:理财产品哪个好一些?从以下几个方面比较
  20. Git-Gitee多人协作

热门文章

  1. 聚焦产业升级,2021中国数据库产业峰会重塑发展路径
  2. pyqt5写的一组去默认边框的UI
  3. 百度关键词排名优化软件【胖虎图图-互动点击系统】
  4. shell脚本之工具
  5. 图解设计模式 -- 生成实例(二)
  6. 基于vue的学生选课程作业提交教学辅助管理系统python+django
  7. 一个稳定好用的android计步器源代码
  8. expain 查看SQL的执行计划
  9. GeoServer发布高清卫星瓦片影像数据
  10. 如果你是一个 Java 面试官,你会问哪些问题?